diff --git a/pr-body.md b/pr-body.md index 4cb69b4..1094e92 100644 --- a/pr-body.md +++ b/pr-body.md @@ -1,11 +1,24 @@ ## Changes - src/endpoints.generated.ts | 1022 +++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 959 insertions(+), 63 deletions(-) + src/endpoints.generated.ts | 4152 ++++++++++++++++++++++++++++++-------------- + 1 file changed, 2875 insertions(+), 1277 deletions(-) ## Endpoint delta ### Added -- google-hotels -- google-maps-posts +- chat-gpt-chat +- duckduckgo +- facebook-profile +- google-flights-deals +- google-scholar +- google-scholar-cite +- instagram-posts +- tiktok-comments +- tiktok-posts +- tiktok-profile +- tiktok-search +- walmart-product +- walmart-reviews +- walmart-search +- yelp-reviews diff --git a/src/endpoints.generated.ts b/src/endpoints.generated.ts index 7ebdd26..1e26336 100644 --- a/src/endpoints.generated.ts +++ b/src/endpoints.generated.ts @@ -38,13 +38,12 @@ export const ENDPOINTS = { "path": "/scrape/airbnb/listing", "cost": 5, "required": [ - "location", "checkIn" ], "properties": { "location": { "type": "string", - "description": "The location to search for listings.", + "description": "The location to search for listings. Required unless a full map bounding box (neLat, neLng, swLat, swLng) is provided.", "wireName": "location", "default": "New York" }, @@ -52,13 +51,13 @@ export const ENDPOINTS = { "type": "string", "description": "The check-in date for the listings.", "wireName": "checkIn", - "default": "2026-01-01" + "default": "2026-10-19" }, "checkOut": { "type": "string", "description": "The check-out date for the listings.", "wireName": "checkOut", - "default": "2026-01-05" + "default": "2026-10-23" }, "adults": { "type": "integer", @@ -80,6 +79,30 @@ export const ENDPOINTS = { "description": "Number of pets.", "wireName": "pets" }, + "neLat": { + "type": "number", + "description": "North-east corner latitude of the map bounding box. When all four bounding-box coordinates are provided, listings are searched within the box instead of by location.", + "wireName": "neLat", + "default": 40.8 + }, + "neLng": { + "type": "number", + "description": "North-east corner longitude of the map bounding box.", + "wireName": "neLng", + "default": -73.9 + }, + "swLat": { + "type": "number", + "description": "South-west corner latitude of the map bounding box.", + "wireName": "swLat", + "default": 40.6 + }, + "swLng": { + "type": "number", + "description": "South-west corner longitude of the map bounding box.", + "wireName": "swLng", + "default": -74.1 + }, "nextPageToken": { "type": "string", "description": "The token used to retrieve the next page of results.", @@ -111,7 +134,7 @@ export const ENDPOINTS = { "slug": "amazon-product", "title": "Amazon Product Scraper API", "description": "The Amazon Product Scraper API allows users to get product details from Amazon based on the specified ASIN and domain. This API enables retrieving detailed information about a specific product on Amazon.", - "category": "Amazon", + "category": "E-commerce", "method": "GET", "path": "/scrape/amazon/product", "cost": 5, @@ -436,7 +459,7 @@ export const ENDPOINTS = { }, "otherSellers": { "type": "boolean", - "description": "If set to true, extracts the other sellers block from the product page.", + "description": "Also collect the offers of other sellers competing for this item. This takes an extra request to Amazon and costs 5 credits on top of the base. Default is false.", "wireName": "otherSellers", "default": true } @@ -446,7 +469,7 @@ export const ENDPOINTS = { "slug": "amazon-search", "title": "Amazon Search Scraper API", "description": "The Amazon Search Scraper API allows users to get search results from Amazon based on the specified query and domain. This API enables searching for products on Amazon.", - "category": "Amazon", + "category": "E-commerce", "method": "GET", "path": "/scrape/amazon/search", "cost": 5, @@ -793,7 +816,7 @@ export const ENDPOINTS = { "slug": "amazon-seller", "title": "Amazon Seller Scraper API", "description": "The Amazon Seller Scraper API allows users to retrieve detailed information about a specific Amazon seller using the seller ID, with optional domain and language settings.", - "category": "Amazon", + "category": "E-commerce", "method": "GET", "path": "/scrape/amazon/seller", "cost": 5, @@ -872,7 +895,7 @@ export const ENDPOINTS = { "slug": "amazon-seller-products", "title": "Amazon Seller Products Scraper API", "description": "The Amazon Seller Products Scraper API allows users to retrieve products listed by a specific Amazon seller using the seller ID, with optional domain, language, and page settings.", - "category": "Amazon", + "category": "E-commerce", "method": "GET", "path": "/scrape/amazon/seller-products", "cost": 5, @@ -955,7 +978,7 @@ export const ENDPOINTS = { "bing-serp": { "slug": "bing-serp", "title": "Bing SERP API", - "description": "The Bing SERP API provides real-time access to structured Bing search results, offering no blocks or CAPTCHAs.", + "description": "The Bing SERP API provides real-time access to structured Bing search results with a high success rate at scale.", "category": "Bing", "method": "GET", "path": "/scrape/bing/serp", @@ -972,9 +995,9 @@ export const ENDPOINTS = { }, "location": { "type": "string", - "description": "Defines the search’s origin location. For realistic results, set location at the city level. If omitted, the proxy’s location may be used.", + "description": "Defines the search’s origin location as free text (e.g. `Austin, Texas`). It is resolved to coordinates to localize the results. For realistic results, set location at the city level. If both `lat` and `lon` are provided, they take precedence and `location` is ignored. If omitted, the proxy’s location may be used.", "wireName": "location", - "default": "Austin,Texas,United States" + "default": "Austin, Texas, United States" }, "lat": { "type": "string", @@ -1074,10 +1097,56 @@ export const ENDPOINTS = { "us" ] }, - "safe": { + "setLang": { + "type": "string", + "description": "The language of the user interface and preferred result language. Accepts a two-letter language code (e.g. `en`, `de`) or a locale/script variant (e.g. `en-gb`, `zh-hans`, `pt-br`).", + "wireName": "setLang", + "enum": [ + "ar", + "bg", + "ca", + "zh-hans", + "zh-hant", + "hr", + "cs", + "da", + "nl", + "en", + "en-gb", + "et", + "fi", + "fr", + "de", + "he", + "hi", + "hu", + "it", + "jp", + "ko", + "lv", + "lt", + "ms", + "nb", + "pl", + "pt-br", + "pt-pt", + "ro", + "ru", + "sr", + "sk", + "sl", + "es", + "sv", + "th", + "tr", + "uk", + "vi" + ] + }, + "safeSearch": { "type": "string", "description": "Adult Content Filtering option.", - "wireName": "safe", + "wireName": "safeSearch", "enum": [ "off", "moderate", @@ -1104,17 +1173,12 @@ export const ENDPOINTS = { "type": "integer", "description": "This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 1 (default) indicates the first page of results, 11 refers to the second page, and 21 to the third page.", "wireName": "first" - }, - "count": { - "type": "integer", - "description": "Number of results per page, ranging from 1 to 50.", - "wireName": "count" } } }, "booking-place": { "slug": "booking-place", - "title": "Booking.com Place API", + "title": "Booking.com Place Scraper API", "description": "The Booking.com Place API returns full details for a single Booking.com property along with the list of available room suites for the requested stay dates and guest composition.", "category": "Booking", "method": "GET", @@ -1139,13 +1203,13 @@ export const ENDPOINTS = { "type": "string", "description": "Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.", "wireName": "checkInDate", - "default": "2026-06-01" + "default": "2026-10-19" }, "checkOutDate": { "type": "string", "description": "Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.", "wireName": "checkOutDate", - "default": "2026-06-05" + "default": "2026-10-23" }, "rooms": { "type": "integer", @@ -1285,7 +1349,7 @@ export const ENDPOINTS = { }, "booking-search": { "slug": "booking-search", - "title": "Booking.com Search API", + "title": "Booking.com Search Scraper API", "description": "The Booking.com Search API returns the collection of accommodations from a Booking.com search results page for a given destination and stay dates, with rich filtering by property type, rating, facilities, price and more.", "category": "Booking", "method": "GET", @@ -1327,13 +1391,13 @@ export const ENDPOINTS = { "type": "string", "description": "Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.", "wireName": "checkInDate", - "default": "2026-06-01" + "default": "2026-10-19" }, "checkOutDate": { "type": "string", "description": "Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.", "wireName": "checkOutDate", - "default": "2026-06-05" + "default": "2026-10-23" }, "rooms": { "type": "integer", @@ -1711,6 +1775,267 @@ export const ENDPOINTS = { } } }, + "chat-gpt-chat": { + "slug": "chat-gpt-chat", + "title": "ChatGPT Scraper API", + "description": "The ChatGPT Scraper API sends a prompt to ChatGPT and returns the answer as text, together with the web sources ChatGPT consulted when it decided to search the web. No OpenAI account or API key is needed.", + "category": "AI", + "method": "GET", + "path": "/scrape/chatgpt/chat", + "cost": 10, + "required": [ + "prompt" + ], + "properties": { + "prompt": { + "type": "string", + "description": "The question or instruction to send to ChatGPT, up to 8000 characters. A prompt that asks about recent events makes ChatGPT search the web and return sources; a general-knowledge prompt is answered from the model alone. The prompt also decides the language of the answer — write it in the language you want back, or ask for one explicitly (\"Antworte auf Deutsch\").", + "wireName": "prompt", + "default": "What are the latest developments in the James Webb Space Telescope this month?" + }, + "timezone": { + "type": "string", + "description": "IANA time zone name, for example `America/Chicago` or `Europe/Berlin`. It sets what ChatGPT treats as the current date and time, which matters for prompts that say \"today\", \"this week\" or \"latest\".", + "wireName": "timezone", + "default": "Europe/Berlin" + } + } + }, + "duckduckgo": { + "slug": "duckduckgo", + "title": "DuckDuckGo SERP API", + "description": "The DuckDuckGo SERP API provides real-time access to structured DuckDuckGo search results with a high success rate at scale.", + "category": "DuckDuckGo", + "method": "GET", + "path": "/scrape/duckduckgo/serp", + "cost": 10, + "required": [], + "properties": { + "q": { + "type": "string", + "description": "Specify the search term for which you want to scrape the SERP. Required unless `nextPageToken` is provided (which carries the query of the page it continues).", + "wireName": "q", + "default": "Coffee" + }, + "kl": { + "type": "string", + "description": "DuckDuckGo region code in `-` form (e.g. `us-en`, `de-de`). Sets country and interface language at once; takes precedence over `cc`/`setLang`. Use `wt-wt` for no region.", + "wireName": "kl", + "enum": [ + "ar-es", + "au-en", + "at-de", + "be-nl", + "be-fr", + "br-pt", + "ca-en", + "ca-fr", + "cl-es", + "dk-da", + "fi-fi", + "fr-fr", + "de-de", + "hk-tzh", + "in-en", + "id-en", + "it-it", + "jp-jp", + "kr-kr", + "my-en", + "mx-es", + "nl-nl", + "nz-en", + "no-no", + "cn-zh", + "pl-pl", + "ph-en", + "ru-ru", + "za-en", + "es-es", + "se-sv", + "ch-de", + "tw-tzh", + "tr-tr", + "uk-en", + "us-en", + "wt-wt" + ] + }, + "cc": { + "type": "string", + "description": "The two-letter country code for the country to search from. Combined with `setLang` to form the DuckDuckGo region. Ignored if `kl` is set.", + "wireName": "cc", + "enum": [ + "ar", + "au", + "at", + "be", + "br", + "ca", + "cl", + "dk", + "fi", + "fr", + "de", + "hk", + "in", + "id", + "it", + "jp", + "kr", + "my", + "mx", + "nl", + "nz", + "no", + "cn", + "pl", + "pt", + "ph", + "ru", + "sa", + "za", + "es", + "se", + "ch", + "tw", + "tr", + "gb", + "us" + ] + }, + "setLang": { + "type": "string", + "description": "The preferred result/interface language code — usually two letters (e.g. `en`, `de`), with script-tag variants for some languages (e.g. `zh-hans`, `zh-hant`). Combined with `cc` to form the DuckDuckGo region. Ignored if `kl` is set.", + "wireName": "setLang", + "enum": [ + "ar", + "ca", + "zh-hans", + "zh-hant", + "hr", + "cs", + "da", + "nl", + "en", + "et", + "fi", + "fr", + "de", + "he", + "hu", + "it", + "ja", + "ko", + "lv", + "lt", + "nb", + "pl", + "pt", + "ro", + "ru", + "sk", + "sl", + "es", + "sv", + "th", + "tr", + "uk", + "vi" + ] + }, + "safeSearch": { + "type": "string", + "description": "Adult Content Filtering option.", + "wireName": "safeSearch", + "enum": [ + "off", + "moderate", + "strict" + ] + }, + "deviceType": { + "type": "string", + "description": "Specify the device type for the search.", + "wireName": "deviceType", + "default": "desktop", + "enum": [ + "desktop", + "mobile", + "tablet" + ] + }, + "nextPageToken": { + "type": "string", + "description": "Opaque token returned in each response as `nextPageToken`. Pass it back (in place of `q`) to fetch the next page of results. It carries a pre-signed page URL bound to the original request's session, so it must be used as-is and cannot be constructed manually. Absent when there are no further pages.", + "wireName": "nextPageToken" + } + } + }, + "facebook-profile": { + "slug": "facebook-profile", + "title": "Facebook Profile Scraper API", + "description": "The Facebook Profile Scraper API lets you retrieve public information from a Facebook page or profile by its handle, together with the posts on the page. It returns name, category, bio, exact likes and talking-about counts, followers and following, website, phone, the page owner, profile and cover photos, the photo tiles, and the posts with their text, media, reaction breakdown, comment and share counts.", + "category": "Social", + "method": "GET", + "path": "/scrape/facebook/profile", + "cost": 10, + "required": [ + "handle" + ], + "properties": { + "handle": { + "type": "string", + "description": "The Facebook username of the page or profile you want to scrape, with or without the `@` symbol, or its numeric profile id (the `id` of a `profile.php?id=…` URL), e.g. `nike` or `61550916779928`. Groups and private personal accounts are not supported.", + "wireName": "handle", + "default": "nike" + }, + "language": { + "type": "string", + "description": "Language the page is rendered in. Facebook serves a page in the language of the request, so this changes the localised strings (`followersCount`, `followingCount`, `category`) while the exact figures (`likesCount`, `talkingAboutCount`) stay numeric in every language.", + "wireName": "language", + "enum": [ + "ar", + "bn", + "cs", + "da", + "de", + "el", + "en", + "es", + "fi", + "fil", + "fr", + "he", + "hi", + "hu", + "id", + "it", + "ja", + "ko", + "ms", + "nb", + "nl", + "pl", + "pt", + "ro", + "ru", + "sv", + "th", + "tr", + "uk", + "vi", + "zh-hans", + "zh-hant" + ] + }, + "nextPageToken": { + "type": "string", + "description": "Token from the `pagination.nextPageToken` field of a previous response; the page it leads to is reported as `pagination.nextPage`. Each paginated request returns the next three posts of the feed and a fresh token; the token is absent once the feed ends. Every request is billed separately.", + "wireName": "nextPageToken" + } + } + }, "glassdoor-job": { "slug": "glassdoor-job", "title": "Glassdoor Job Scraper API", @@ -2265,234 +2590,75 @@ export const ENDPOINTS = { "google-events": { "slug": "google-events", "title": "Google Events API", - "description": "The Google Events API allows users to retrieve information about events based on specified search terms, locations, and various filter options.", + "description": "The Google Events API retrieves full details for a single Google event — venue, ticket sources, ratings, and description — given the `pageToken` of an event returned by the Google Search API.", "category": "Google SERP", "method": "GET", "path": "/scrape/google/events", - "cost": 5, + "cost": 10, "required": [ - "q" + "pageToken" ], "properties": { - "q": { - "type": "string", - "description": "Specify the search term for which you want to scrape the SERP.", - "wireName": "q", - "default": "Events in New York" - }, - "location": { - "type": "string", - "description": "Google canonical location for the search.", - "wireName": "location", - "default": "Austin,Texas,United States" - }, - "uule": { + "pageToken": { "type": "string", - "description": "The encoded location parameter.", - "wireName": "uule" + "description": "Token identifying a single event, taken from the `pageToken` field of an `eventsResults` entry in a `google/serp` response. Expires a few minutes after it is minted.", + "wireName": "pageToken" + } + } + }, + "google-flights": { + "slug": "google-flights", + "title": "Google Flights API", + "description": "The Google Flights API provides real-time access to structured flight search results, enabling users to find flights based on various criteria.", + "category": "Google Travel", + "method": "GET", + "path": "/scrape/google/flights", + "cost": 15, + "required": [ + "departureId", + "arrivalId", + "outboundDate" + ], + "properties": { + "departureId": { + "type": "string", + "description": "Specifies the departure airport code (IATA) or location kgmid. - **IATA Code**: A 3-letter uppercase code (e.g., SFO for San Francisco, LHR for London Heathrow). Search on [IATA](https://www.iata.org/en/publications/directories/code-search). - **Location kgmid**: A string starting with `/m/`, found in Wikidata under \"Freebase ID\" (e.g., `/m/02_286` for New York, NY). Multiple values can be separated by commas (e.g., `JFK,LGA,/m/0hptm`).", + "wireName": "departureId", + "default": "LHR" }, - "domain": { + "arrivalId": { "type": "string", - "description": "Google domain to use. Default is google.com.", - "wireName": "domain", + "description": "Specifies the arrival airport code (IATA) or location kgmid. - **IATA Code**: A 3-letter uppercase code (e.g., `SFO` for San Francisco, `LHR` for London Heathrow). Search on [IATA](https://www.iata.org/en/publications/directories/code-search). - **Location kgmid**: A string starting with `/m/`, found in Wikidata under \"Freebase ID\" (e.g., `/m/02_286` for New York, NY). Multiple values can be separated by commas (e.g., `JFK,LGA,/m/0hptm`).", + "wireName": "arrivalId", + "default": "JFK" + }, + "outboundDate": { + "type": "string", + "description": "The outbound travel date in 'yyyy-MM-dd' format.", + "wireName": "outboundDate", + "default": "2026-10-19" + }, + "returnDate": { + "type": "string", + "description": "The return travel date in 'yyyy-MM-dd' format. Required when **type** is `roundTrip`.", + "wireName": "returnDate", + "default": "2026-10-26" + }, + "type": { + "type": "string", + "description": "Specifies the type of flight. Options: - `roundTrip` (default) - `oneWay` - `multiCity` (requires `multiCityJson` for flight details) For round trips, retrieve return flight details with a separate request using `departureToken`.", + "wireName": "type", "enum": [ - "google.ac", - "google.ad", - "google.ae", - "google.al", - "google.am", - "google.as", - "google.at", - "google.az", - "google.ba", - "google.be", - "google.bf", - "google.bg", - "google.bi", - "google.bj", - "google.bs", - "google.bt", - "google.by", - "google.ca", - "google.cd", - "google.cf", - "google.cg", - "google.ch", - "google.ci", - "google.cl", - "google.cm", - "google.co.ao", - "google.co.bw", - "google.co.ck", - "google.co.cr", - "google.co.id", - "google.co.il", - "google.co.in", - "google.co.jp", - "google.co.ke", - "google.co.kr", - "google.co.ls", - "google.co.ma", - "google.co.mz", - "google.co.nz", - "google.co.th", - "google.co.tz", - "google.co.ug", - "google.co.uk", - "google.co.uz", - "google.co.ve", - "google.co.vi", - "google.co.za", - "google.co.zm", - "google.co.zw", - "google.com", - "google.com.af", - "google.com.ag", - "google.com.ai", - "google.com.ar", - "google.com.au", - "google.com.bd", - "google.com.bh", - "google.com.bn", - "google.com.bo", - "google.com.br", - "google.com.bz", - "google.com.co", - "google.com.cu", - "google.com.cy", - "google.com.do", - "google.com.ec", - "google.com.eg", - "google.com.et", - "google.com.fj", - "google.com.gh", - "google.com.gi", - "google.com.gt", - "google.com.hk", - "google.com.jm", - "google.com.kh", - "google.com.kw", - "google.com.lb", - "google.com.ly", - "google.com.mm", - "google.com.mt", - "google.com.mx", - "google.com.my", - "google.com.na", - "google.com.ng", - "google.ng", - "google.com.nf", - "google.com.ni", - "google.com.np", - "google.com.om", - "google.com.pa", - "google.com.pe", - "google.com.pg", - "google.com.ph", - "google.com.pk", - "google.com.pr", - "google.com.py", - "google.com.qa", - "google.com.sa", - "google.com.sb", - "google.com.sg", - "google.com.sl", - "google.com.sv", - "google.com.tj", - "google.com.tr", - "google.com.tw", - "google.com.ua", - "google.com.uy", - "google.com.vc", - "google.com.vn", - "google.cat", - "google.cn", - "google.cv", - "google.cz", - "google.de", - "google.dj", - "google.dk", - "google.dm", - "google.dz", - "google.ee", - "google.es", - "google.fi", - "google.fm", - "google.fr", - "google.ga", - "google.ge", - "google.gg", - "google.gl", - "google.gm", - "google.gp", - "google.gr", - "google.gy", - "google.hn", - "google.hr", - "google.ht", - "google.hu", - "google.ie", - "google.im", - "google.iq", - "google.is", - "google.it", - "google.je", - "google.jo", - "google.kg", - "google.ki", - "google.kz", - "google.la", - "google.li", - "google.lk", - "google.lt", - "google.lu", - "google.lv", - "google.md", - "google.me", - "google.mg", - "google.mk", - "google.ml", - "google.mn", - "google.ms", - "google.mu", - "google.mv", - "google.mw", - "google.ne", - "google.nl", - "google.no", - "google.nr", - "google.nu", - "google.pl", - "google.pn", - "google.ps", - "google.pt", - "google.ro", - "google.rs", - "google.ru", - "google.rw", - "google.sc", - "google.se", - "google.sh", - "google.si", - "google.sk", - "google.sm", - "google.sn", - "google.so", - "google.sr", - "google.st", - "google.td", - "google.tg", - "google.tk", - "google.tl", - "google.tm", - "google.tn", - "google.to", - "google.tt", - "google.vg", - "google.vu", - "google.ws" + "roundTrip", + "oneWay", + "multiCity" ] }, + "multiCityJson": { + "type": "string", + "description": "This parameter specifies flight details for multi-city trips. It is a JSON string containing multiple flight objects. Each object must include the following fields: - **departureId** – The departure airport code or location KGMID. Uses the same format as the main `departureId` parameter. - **arrivalId** – The arrival airport code or location KGMID. Uses the same format as the main `arrivalId` parameter. - **date** – The flight date. Uses the same format as the `outboundDate` parameter. - **times** *(optional)* – The time range for the flight. Uses the same format as the `outboundTimes` parameter.", + "wireName": "multiCityJson" + }, "gl": { "type": "string", "description": "The two-letter country code for the country you want to limit the search to.", @@ -2911,72 +3077,353 @@ export const ENDPOINTS = { "zu" ] }, - "start": { - "type": "integer", - "description": "This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page.", - "wireName": "start" - }, - "htichips": { + "currency": { "type": "string", - "description": "Filter parameter for refining event search results. Supports various filters for events. Multiple filters can be passed using a comma. The available filters are: - `date:today`: Today's Events - `date:tomorrow`: Tomorrow's Events - `date:week`: This Week's Events - `date:weekend`: This Weekend's Events - `date:next_week`: Next Week's Events - `date:month`: This Month's Events - `date:next_month`: Next Month's Events - `event_type:Virtual-Event`: Online Events For example, to filter for today's online events, use: `event_type:Virtual-Event,date:today`.", - "wireName": "htichips" - } - } - }, - "google-flights": { - "slug": "google-flights", - "title": "Google Flights API", - "description": "The Google Flights API provides real-time access to structured flight search results, enabling users to find flights based on various criteria.", + "description": "Parameter defines the currency of the returned prices", + "wireName": "currency", + "enum": [ + "ALL", + "DZD", + "ARS", + "AMD", + "AWG", + "AUD", + "AZN", + "BSD", + "BHD", + "BYN", + "BMD", + "BAM", + "BRL", + "GBP", + "BGN", + "XPF", + "CAD", + "CLP", + "CNY", + "COP", + "CRC", + "CUP", + "CZK", + "DKK", + "DOP", + "EGP", + "EUR", + "GEL", + "HKD", + "HUF", + "ISK", + "INR", + "IDR", + "IRR", + "ILS", + "JMD", + "JPY", + "JOD", + "KZT", + "KWD", + "LBP", + "MKD", + "MYR", + "MXN", + "MDL", + "MAD", + "TWD", + "NZD", + "NOK", + "OMR", + "PKR", + "PAB", + "PEN", + "PHP", + "PLN", + "QAR", + "RON", + "RUB", + "SAR", + "RSD", + "SGD", + "ZAR", + "KRW", + "SEK", + "CHF", + "THB", + "TRY", + "USD", + "UAH", + "VND", + "AED" + ] + }, + "travelClass": { + "type": "string", + "description": "The travel class for the flight (Economy, Premium Economy, Business, or First).", + "wireName": "travelClass", + "enum": [ + "economy", + "premiumEconomy", + "business", + "first" + ] + }, + "showHidden": { + "type": "boolean", + "description": "Indicates whether to include hidden options in the results.", + "wireName": "showHidden" + }, + "adults": { + "type": "integer", + "description": "Number of adult passengers (>= 1 if specified).", + "wireName": "adults" + }, + "children": { + "type": "integer", + "description": "Number of child passengers.", + "wireName": "children" + }, + "infantsInSeat": { + "type": "integer", + "description": "Number of infants occupying seats.", + "wireName": "infantsInSeat" + }, + "infantsOnLap": { + "type": "integer", + "description": "Number of infants sitting on an adult's lap.", + "wireName": "infantsOnLap" + }, + "sortBy": { + "type": "string", + "description": "Sort the flight results based on price, departure time, arrival time, etc.", + "wireName": "sortBy", + "enum": [ + "topFlights", + "price", + "departureTime", + "arrivalTime", + "duration", + "emissions" + ] + }, + "stops": { + "type": "string", + "description": "Restrict the number of stops (layovers) in the flight itinerary.", + "wireName": "stops", + "enum": [ + "nonStop", + "oneStopOrFewer", + "twoStopsOrFewer" + ] + }, + "excludeAirlines": { + "type": "string", + "description": "A comma separated list of airline codes to exclude from results. You can search for airline codes on [IATA](https://www.iata.org/en/publications/directories/code-search). For example, `UA` is United Airlines.", + "wireName": "excludeAirlines" + }, + "includeAirlines": { + "type": "string", + "description": "A comma separated list of airline codes to exclusively include in results. You can search for airline codes on [IATA](https://www.iata.org/en/publications/directories/code-search). For example, `UA` is United Airlines. `excludeAirlines` and `includeAirlines` parameters can't be used together.", + "wireName": "includeAirlines" + }, + "bags": { + "type": "integer", + "description": "Number of carry-on bags per passenger.", + "wireName": "bags" + }, + "maxPrice": { + "type": "number", + "description": "Maximum price limit for the flight search, in the selected currency.", + "wireName": "maxPrice" + }, + "outboundTimes": { + "type": "string", + "description": "Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter flights. Each number represents the start of an hour. Examples: - `6,20` → 6:00 AM - 9:00 PM departure - `1,15` → 1:00 AM - 4:00 PM departure - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival", + "wireName": "outboundTimes" + }, + "returnTimes": { + "type": "string", + "description": "Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter return flights. Each number represents the start of an hour. Examples: - `6,20` → 6:00 AM - 9:00 PM departure - `1,15` → 1:00 AM - 4:00 PM departure - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival", + "wireName": "returnTimes" + }, + "lessEmissions": { + "type": "boolean", + "description": "Prefer flight options with lower carbon emissions.", + "wireName": "lessEmissions" + }, + "layoverDuration": { + "type": "string", + "description": "Set the maximum layover duration in minutes to filter flights. For example, `120, 360` filters layovers between 2 hours and 6 hours, while `45, 180` allows layovers from 45 minutes to 3 hours.", + "wireName": "layoverDuration" + }, + "includeConnections": { + "type": "string", + "description": "A comma separated list of specific airports to allow as connections.", + "wireName": "includeConnections" + }, + "excludeConnections": { + "type": "string", + "description": "A comma separated list of specific airports to exclude as connections.", + "wireName": "excludeConnections" + }, + "maxDuration": { + "type": "integer", + "description": "The maximum total flight duration in minutes.", + "wireName": "maxDuration" + }, + "deepSearch": { + "type": "boolean", + "description": "Enable deep search. Returns the same results as Google Flights in a browser, but takes longer to respond. Default is `false`.", + "wireName": "deepSearch" + }, + "departureToken": { + "type": "string", + "description": "Used to select a flight and retrieve return flights for a round trip or the next leg of the itinerary for a multi-city trip.", + "wireName": "departureToken" + }, + "bookingToken": { + "type": "string", + "description": "Used to request booking options for selected flights. This token is found in the flight results and cannot be used with `departureToken`.", + "wireName": "bookingToken" + } + } + }, + "google-flights-deals": { + "slug": "google-flights-deals", + "title": "Google Flights Deals API", + "description": "The Google Flights Deals API turns a plain-language trip description into concrete flight deals, letting Google's AI work out the destinations and travel dates on its own.", "category": "Google Travel", "method": "GET", - "path": "/scrape/google/flights", + "path": "/scrape/google/flights-deals", "cost": 15, "required": [ - "departureId", - "arrivalId", - "outboundDate" + "q", + "departureId" ], "properties": { + "q": { + "type": "string", + "description": "Free-text trip description, from a bare place name to a full sentence: - **Destination**: `Tokyo` - **Type of trip**: `beach escape`, `weekend getaway in Europe` - **Season or event**: `I would like to see cherry blossom in Japan` When the query implies a time of year, Google dates it itself and reports the range in `searchInformation.dateRange`.", + "wireName": "q", + "default": "I would like to see cherry blossom in Japan" + }, "departureId": { "type": "string", - "description": "Specifies the departure airport code (IATA) or location kgmid. - **IATA Code**: A 3-letter uppercase code (e.g., SFO for San Francisco, LHR for London Heathrow). Search on [IATA](https://www.iata.org/en/publications/directories/code-search). - **Location kgmid**: A string starting with `/m/`, found in Wikidata under \"Freebase ID\" (e.g., `/m/02_286` for New York, NY). Multiple values can be separated by commas (e.g., `JFK,LGA,/m/0hptm`).", + "description": "Departure airport as a 3-letter uppercase IATA code, e.g. `LAX` or `LHR`. Search on [IATA](https://www.iata.org/en/publications/directories/code-search). One airport per search; city names are not accepted.", "wireName": "departureId", - "default": "LHR" + "default": "LAX" }, "arrivalId": { "type": "string", - "description": "Specifies the arrival airport code (IATA) or location kgmid. - **IATA Code**: A 3-letter uppercase code (e.g., `SFO` for San Francisco, `LHR` for London Heathrow). Search on [IATA](https://www.iata.org/en/publications/directories/code-search). - **Location kgmid**: A string starting with `/m/`, found in Wikidata under \"Freebase ID\" (e.g., `/m/02_286` for New York, NY). Multiple values can be separated by commas (e.g., `JFK,LGA,/m/0hptm`).", - "wireName": "arrivalId", - "default": "JFK" - }, - "outboundDate": { - "type": "string", - "description": "The outbound travel date in 'yyyy-MM-dd' format.", - "wireName": "outboundDate", - "default": "2026-08-15" - }, - "returnDate": { - "type": "string", - "description": "The return travel date in 'yyyy-MM-dd' format. Required when **type** is `roundTrip`.", - "wireName": "returnDate", - "default": "2026-08-20" + "description": "Pins the search to one destination instead of letting Google pick from the query. - **IATA code**: 3 uppercase letters, e.g. `NRT` for Tokyo Narita. - **Location kgmid**: starts with `/m/`, found in Wikidata under \"Freebase ID\", e.g. `/m/07dfk` for Tokyo. Required by every filter: `type`, `travelClass`, `stops`, `outboundDate`, `returnDate`, `travelDuration`, `tripLength`, `maxPrice`, `maxDuration`, `includeAirlines` and `excludeAirlines`. Without it Google drops them silently.", + "wireName": "arrivalId" }, "type": { "type": "string", - "description": "Specifies the type of flight. Options: - `roundTrip` (default) - `oneWay` - `multiCity` (requires `multiCityJson` for flight details) For round trips, retrieve return flight details with a separate request using `departureToken`.", + "description": "Flight type. Requires `arrivalId`. - `1` / `roundTrip` — round trip (default) - `2` / `oneWay` — one way A one-way deal carries no `returnDate` and no `tripLengthDays`.", "wireName": "type", "enum": [ + "1", "roundTrip", - "oneWay", - "multiCity" + "2", + "oneWay" ] }, - "multiCityJson": { + "travelClass": { "type": "string", - "description": "This parameter specifies flight details for multi-city trips. It is a JSON string containing multiple flight objects. Each object must include the following fields: - **departureId** – The departure airport code or location KGMID. Uses the same format as the main `departureId` parameter. - **arrivalId** – The arrival airport code or location KGMID. Uses the same format as the main `arrivalId` parameter. - **date** – The flight date. Uses the same format as the `outboundDate` parameter. - **times** *(optional)* – The time range for the flight. Uses the same format as the `outboundTimes` parameter.", - "wireName": "multiCityJson" + "description": "Travel class. Requires `arrivalId`. - `1` / `economy` — economy (default) - `2` / `premiumEconomy` — premium economy - `3` / `business` — business - `4` / `first` — first Fares climb steeply: on LAX-NRT the same search ran $730 in economy against $2882 in business.", + "wireName": "travelClass", + "enum": [ + "1", + "economy", + "2", + "premiumEconomy", + "3", + "business", + "4", + "first" + ] }, - "gl": { + "outboundDate": { + "type": "string", + "description": "When to depart. Requires `arrivalId`. - **Exact date**: `2026-12-10` - **Window**: `2026-12-01,2026-12-10` — any day within it Omitted, Google picks the dates from the query, or from whatever is cheapest.", + "wireName": "outboundDate" + }, + "returnDate": { + "type": "string", + "description": "When to return, in the same exact-or-window spelling as `outboundDate`, which is required alongside it. Cannot be combined with `travelDuration` or `tripLength` — all three set the trip length. Ignored when `type` is `oneWay`.", + "wireName": "returnDate" + }, + "travelDuration": { + "type": "string", + "description": "Preset trip length. Requires `arrivalId`. Cannot be combined with `returnDate` or `tripLength`. - `1` / `week` — about a week (6-8 days) - `2` / `weekend` — a weekend (2-3 days) - `3` / `twoWeeks` — about two weeks (13-15 days) Pairs with `outboundDate` to limit the departure period. Ignored when `type` is `oneWay`.", + "wireName": "travelDuration", + "enum": [ + "1", + "week", + "2", + "weekend", + "3", + "twoWeeks" + ] + }, + "tripLength": { + "type": "string", + "description": "Trip length in days. Requires `arrivalId`. Cannot be combined with `returnDate` or `travelDuration`. - **Exact**: `7` - **Range**: `5,10` — min first Pairs with `outboundDate` to limit the departure period. Ignored when `type` is `oneWay`.", + "wireName": "tripLength" + }, + "stops": { + "type": "string", + "description": "Maximum number of stops. Requires `arrivalId`. Omitted, any number is allowed. - `1` / `nonStop` — direct flights only - `2` / `oneStopOrFewer` — at most one connection - `3` / `twoStopsOrFewer` — at most two connections A route with nothing at that depth returns an empty `flightDeals` array, not an error — `nonStop` on a route without a direct flight is a valid, empty answer.", + "wireName": "stops", + "enum": [ + "1", + "nonStop", + "2", + "oneStopOrFewer", + "3", + "twoStopsOrFewer" + ] + }, + "maxDuration": { + "type": "integer", + "description": "Maximum flight duration in minutes — `1500` for 25 hours. Requires `arrivalId`. Omitted, it is unbounded. Applies to each leg, not to the round trip. Google measures against a longer figure than the `durationMinutes` it returns, so set the ceiling above the flight you want: on a route whose shortest deal is 635 minutes, `635` comes back empty and `680` returns it. On an empty result, raise `maxDuration` by up to 200 before concluding the route has nothing.", + "wireName": "maxDuration" + }, + "maxPrice": { + "type": "integer", + "description": "Maximum ticket price, inclusive. Requires `arrivalId`. Omitted, it is unbounded. Read in the currency of the request: `650` means 650 EUR when `currency` is `EUR`, and 650 USD by default.", + "wireName": "maxPrice" + }, + "includeAirlines": { + "type": "string", + "description": "Keeps only these airlines. Requires `arrivalId`. Cannot be combined with `excludeAirlines`. Comma-separated 2-character IATA codes (`AF`, `UA`, `B6`) and Google's alliances `STAR_ALLIANCE`, `SKYTEAM`, `ONEWORLD`. The two can be mixed. An airline that does not serve the route returns an empty `flightDeals` array, not an error.", + "wireName": "includeAirlines" + }, + "excludeAirlines": { + "type": "string", + "description": "Drops these airlines from the deals. Requires `arrivalId`. Cannot be combined with `includeAirlines`. Takes the same values as `includeAirlines`.", + "wireName": "excludeAirlines" + }, + "adults": { + "type": "integer", + "description": "Number of adults. Prices cover the whole party, so raising this raises every deal price. Passenger counts reprice rather than narrow the search, so they need no `arrivalId`. The whole party must not exceed 9.", + "wireName": "adults" + }, + "children": { + "type": "integer", + "description": "Number of children, priced at their own fare. Counts towards the limit of 9 passengers.", + "wireName": "children" + }, + "infantsInSeat": { + "type": "integer", + "description": "Number of infants in their own seat. Counts towards the limit of 9 passengers.", + "wireName": "infantsInSeat" + }, + "infantsOnLap": { + "type": "integer", + "description": "Number of infants on an adult's lap. Counts towards the limit of 9 passengers. Google prices a lap infant above one in its own seat — the opposite of how airlines usually charge.", + "wireName": "infantsOnLap" + }, + "gl": { "type": "string", "description": "The two-letter country code for the country you want to limit the search to.", "wireName": "gl", @@ -3471,135 +3918,6 @@ export const ENDPOINTS = { "VND", "AED" ] - }, - "travelClass": { - "type": "string", - "description": "The travel class for the flight (Economy, Premium Economy, Business, or First).", - "wireName": "travelClass", - "enum": [ - "economy", - "premiumEconomy", - "business", - "first" - ] - }, - "showHidden": { - "type": "boolean", - "description": "Indicates whether to include hidden options in the results.", - "wireName": "showHidden" - }, - "adults": { - "type": "integer", - "description": "Number of adult passengers (>= 1 if specified).", - "wireName": "adults" - }, - "children": { - "type": "integer", - "description": "Number of child passengers.", - "wireName": "children" - }, - "infantsInSeat": { - "type": "integer", - "description": "Number of infants occupying seats.", - "wireName": "infantsInSeat" - }, - "infantsOnLap": { - "type": "integer", - "description": "Number of infants sitting on an adult's lap.", - "wireName": "infantsOnLap" - }, - "sortBy": { - "type": "string", - "description": "Sort the flight results based on price, departure time, arrival time, etc.", - "wireName": "sortBy", - "enum": [ - "topFlights", - "price", - "departureTime", - "arrivalTime", - "duration", - "emissions" - ] - }, - "stops": { - "type": "string", - "description": "Restrict the number of stops (layovers) in the flight itinerary.", - "wireName": "stops", - "enum": [ - "nonStop", - "oneStopOrFewer", - "twoStopsOrFewer" - ] - }, - "excludeAirlines": { - "type": "string", - "description": "A comma separated list of airline codes to exclude from results. You can search for airline codes on [IATA](https://www.iata.org/en/publications/directories/code-search). For example, `UA` is United Airlines.", - "wireName": "excludeAirlines" - }, - "includeAirlines": { - "type": "string", - "description": "A comma separated list of airline codes to exclusively include in results. You can search for airline codes on [IATA](https://www.iata.org/en/publications/directories/code-search). For example, `UA` is United Airlines. `excludeAirlines` and `includeAirlines` parameters can't be used together.", - "wireName": "includeAirlines" - }, - "bags": { - "type": "integer", - "description": "Number of carry-on bags per passenger.", - "wireName": "bags" - }, - "maxPrice": { - "type": "number", - "description": "Maximum price limit for the flight search, in the selected currency.", - "wireName": "maxPrice" - }, - "outboundTimes": { - "type": "string", - "description": "Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter flights. Each number represents the start of an hour. Examples: - `6,20` → 6:00 AM - 9:00 PM departure - `1,15` → 1:00 AM - 4:00 PM departure - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival", - "wireName": "outboundTimes" - }, - "returnTimes": { - "type": "string", - "description": "Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter return flights. Each number represents the start of an hour. Examples: - `6,20` → 6:00 AM - 9:00 PM departure - `1,15` → 1:00 AM - 4:00 PM departure - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival", - "wireName": "returnTimes" - }, - "lessEmissions": { - "type": "boolean", - "description": "Prefer flight options with lower carbon emissions.", - "wireName": "lessEmissions" - }, - "layoverDuration": { - "type": "string", - "description": "Set the maximum layover duration in minutes to filter flights. For example, `120, 360` filters layovers between 2 hours and 6 hours, while `45, 180` allows layovers from 45 minutes to 3 hours.", - "wireName": "layoverDuration" - }, - "includeConnections": { - "type": "string", - "description": "A comma separated list of specific airports to allow as connections.", - "wireName": "includeConnections" - }, - "excludeConnections": { - "type": "string", - "description": "A comma separated list of specific airports to exclude as connections.", - "wireName": "excludeConnections" - }, - "maxDuration": { - "type": "integer", - "description": "The maximum total flight duration in minutes.", - "wireName": "maxDuration" - }, - "deepSearch": { - "type": "boolean", - "description": "Enable deep search. Returns the same results as Google Flights in a browser, but takes longer to respond. Default is `false`.", - "wireName": "deepSearch" - }, - "departureToken": { - "type": "string", - "description": "Used to select a flight and retrieve return flights for a round trip or the next leg of the itinerary for a multi-city trip.", - "wireName": "departureToken" - }, - "bookingToken": { - "type": "string", - "description": "Used to request booking options for selected flights. This token is found in the flight results and cannot be used with `departureToken`.", - "wireName": "bookingToken" } } }, @@ -3627,13 +3945,13 @@ export const ENDPOINTS = { "type": "string", "description": "The check-in date in 'yyyy-MM-dd' format.", "wireName": "checkInDate", - "default": "2026-08-15" + "default": "2026-10-19" }, "checkOutDate": { "type": "string", "description": "The check-out date in 'yyyy-MM-dd' format.", "wireName": "checkOutDate", - "default": "2026-08-20" + "default": "2026-10-23" }, "gl": { "type": "string", @@ -4308,7 +4626,7 @@ export const ENDPOINTS = { "google-images": { "slug": "google-images", "title": "Google Images API", - "description": "Provides real-time access to Google image search results, tailored to specific parameters, ensuring efficient retrieval free from blocks or CAPTCHAs.", + "description": "Provides real-time access to Google image search results, tailored to specific parameters, ensuring efficient and reliable retrieval at scale.", "category": "Google Images", "method": "GET", "path": "/scrape/google/images", @@ -5007,7 +5325,7 @@ export const ENDPOINTS = { "type": "string", "description": "Token for displaying more product info in the Google immersive pop-up, available in the Google Shopping API response as the `immersiveProductPageToken` property.", "wireName": "pageToken", - "default": "eyJyZHMiOiJQQ18zMjQ1NDc2NDAwODMzNTUxOTQ4fFBST0RfUENfMzI0NTQ3NjQwMDgzMzU1MTk0OCIsInByb2R1Y3RpZCI6IjEyNTE4MTc2MDIxNjEyNzgxNzUyIiwiY2F0YWxvZ2lkIjoiMTY5MTQ4Nzc2MjUyODA5Nzc4NjUiLCJoZWFkbGluZU9mZmVyRG9jaWQiOiIxNzc2Njg4MTE3MjA4NzEzODU1NSIsImltYWdlRG9jaWQiOiIzNTQ4NDgyNzk5NTQyMzA0NzkxIiwiZ3BjaWQiOiIzMjQ1NDc2NDAwODMzNTUxOTQ4IiwibWlkIjoiNTc2NDYyNjEyMjgwMTMwNDgxIiwicSI6ImNvZmZlZSIsImhsIjoiZW4iLCJnbCI6InVzIiwiY29va2llcyI6Il9fU2VjdXJlLVNUUlA9QUVFUDdnTDhveTExMkFEcGdEZkdDVmtjdXVRMHNmal8ySlhHaktsbHVQVjhxTHBLVTg3UlN6RmJKd0FvYkNjWjVQUU8tYmJZdGRGd1JDYnBHWmFmVzdnc0ZaYjlQM3VPaF9kSTsgQUVDPUFhSm1hNXVoaGE4ZTdjUnF6cThoZG1Na3ExSmk2MGE4MU1kRkQ1Z2M0Szd4WjZaRnQ0S05RYVJLVkpJOyBOSUQ9NTMxPWcySHJDN296elVZUnVraDhFT1NzakN3QWw0cEFWN25mYkNvcVlnWEVmdVNEUWxWLW80WVZZamxvOTh3cW5taHoxWWQ4NF9jUkFhWlZBV1A4dTVkUzNOVHhKVG9ZcjlNbkI1S3h0R0NESWR4azAya2tGajhGbkdfalAzNGQwM0haR1RjNkV4SWpldlBGREQ5X2xCM1VpNmRabmhoLVlveXN6SUxLVTkwT1MxekZBdHJnNFU1NUE4YWVlVFdlQW5ieEgzSGUxTHRSSFY0UVc4Y2d3Vzc0dW45bTZpdThaaldDZVp0QUhoS0ZsbDdycTJGbG1ybDRRdTV6UGxzIiwieHNyZiI6IkFLUE9yMVM2YmtDejdIcEM0WVo0U2VmNzY4RWE0YnhLbGc6MTc3OTI2ODI0NjMxNCIsIm9hcHZmYyI6IkVvd0RDc3dDUVUxdU15MTVWR1JQTjNrNWJEWndTa1JQT0RWemVpMXJaSFF6YUU1SlVteGlSRE00Wm1WRWVVTXRjakZHYVcxM1lpMW9TRVU1T0ZJeU5UbGhTRXBvTlZKNVdrUTBjMHBKWHkxM1ZEVXhOVlowV25OdFMydFlYMUYzTlZKUmQycFNkREJtYlhWV01IcEdWSG95YVVsWWMzcGpWWGhDU0hJd2ExQmZPRW80YmpWdmNsVmFVR056UWsxMVNEUllkSGc1ZWxKSU9WbzBTMnhSZVhKTlRqZG9UMFIzUmpkT00wSjNWMUYwTmpsUFQxVkplRUZZVERKeFh6ZzBNVU4zTUZseGFqWmhkakp2VEZKSWQzbGZUVUU0WjBoUWRHMHpUMVZvU0cxRVJFbDZTMmhYTFRoa1JsRnRha1ZhVmt0d1pXZE1hMUpYT1ZrdExYbDZjMHhIZFhCSlR6VXhXa1JZTWxoU2VFaE5SRlphYVZOVE9YWklSMUpxU25WSVVsOU9RV1JOU1dSNVZYYzRiMHc1YVVkVFNsUjZSVGgwTjFaNVdHVlJiR1Y1VUZaTFpETjJhR3h2Y0djdGNUSkRhbGNTRjJ4WWIwNWhkbGd4VFUxVGVuRjBjMUJ3VFU5Mk5sRm5HaUpCU2t0TVJtMUtXV1pGU21GaGQzUktSakEwVEdOclYwTmlia281VkhwdWF6Rm4ifQ" + "default": "eyJyZHMiOiJQQ18zMjQ1NDc2NDAwODMzNTUxOTQ4fFBST0RfUENfMzI0NTQ3NjQwMDgzMzU1MTk0OCIsInByb2R1Y3RpZCI6IjE2NTYxODg2MzMwNjI5NzA1MjY5IiwiY2F0YWxvZ2lkIjoiMTA5MDU3MjEzODE1NDM1NDgwMCIsImhlYWRsaW5lT2ZmZXJEb2NpZCI6IjEwNTQwMDUxMzg0NjEzOTczOTg1IiwiaW1hZ2VEb2NpZCI6IjE3MjMwMzM3NDkwMTYzODIyNjMiLCJncGNpZCI6IjgyOTk1MTI3NTExOTg2NzE2MjIiLCJtaWQiOiI1NzY0NjI2MTIyODAxMzA0ODEiLCJxIjoiYnV5IGNvZmZlZSIsImhsIjoiZW4iLCJnbCI6InVzIiwiY29va2llcyI6Il9fU2VjdXJlLVNUUlA9QU5tWndhMHZsZUx5TFN3SDZKcmFHRU15RGxnbEhJN3NJelN2NFVJcXhZUDhFQk5kd1FXNTRoRHVsX3RZRl9hSFBsQjM3ajhNMWZRY1NwOVhTMy1icmVOdzIwa1RybjhnajhCaDsgQUVDPUFkSlZFYXR5TE1ZbHktUk5IRGxTVm04MGkySWRhWm4yeE5mWlVBX3JzV3pDX0xyTFFTeUwzTGJ3TkJnOyBOSUQ9NTMyPWtadG5CQnpoNE02cU5lTW9VM1Rjekd1d0VKdmtkcjBZMzFFbmNPTlZUT084TmlVX0oyUTVucmR3Q0dWUU5pWVlvWUROSEdWTE9BdUd0SWI2ZjEwSDk3OHM3bk9hajFFTVN1ellIaDVTMzdDTkJDZkdwLWlmcThVenV4aHR3TTR0YmNidXdnbVBNUHJHeXBlMS1aQmZtTEVCOXpTam9aMFpGOUZHQ3ZQdkc3aGdXZzRCcndvb1RYclhnTHdhc3BtYXpUVi1YYUg1bzJjV2lUNTUwc0dHNG5pRVpYLUI1aFZsbllYQ1QxZU91LXU0Tjk4MXQtUnYzYi1RZS1nTGV2NmV4ZGNFdlE7IERWPU02U2J0ZDljdGtvc1VKSEhKMHhOMXZfa3lxX0M5Tm42MHAxSjhPd3dCd1FBQUFBIiwieHNyZiI6IkFGNXRTTzRGb3VnZDItOVJPN09YU29oMzlvWnhLUzZGNVE6MTc4MzY4OTMxMzM5MiIsIm9hcHZmYyI6IkVvc0RDc3dDUVVwcFZEUjBTMGMwTmxObk16TktTRmxmYW05SlpUbFNNM1ZaVTFJeWJ6ZENlRGgwWm5kRVNGWTFja2hzZFVZNVMzWnVOMVUxYkVSSU1YTlVSMUpyV1VwWFpVWlNUVVY0Y2s5ak1EaElYMWd3UVRaR1RVbzJTVmxpZVdGdU5IRklVV1o0WTJ4d1RVUm1hRFZPT1dSbGFXOVZaVFpNT1ZaT1VXZHJNMlJTTlZNMlQzWlhiSEI1UW01aU5DMHlUR0psYnpWTVJEVkhSazVoYlZkZlVFUmxlbkIwTlc1U2FtRjJOVUprVWkxTloxcFJhbHBsY21kc1VXbDNXVWcxY1dKeFdtTjZWR0ZEVDB0a2RISldTekYwYzB0MVlqaHBiR1o2TFc1cFZsODNjV296VTI5RVgydDVkSE13WlVNNVJVaGhhRTU0WHpKT2ExY3plR3BXY1VGMlJXVjBhVmN5T1ZkNk9WaEVialV5VldVNGNtdHlPVUV4Ym1ZdFNYRjRkM1J3VUMxdFNYUjZORUk0Y3pCV1REUlhkbTVHUldodE1ETnVaaTFNTFZSUlRuUm9PVmRDWDNoaVoyNXVkVWtTRmxsUVFsRmhjV1ZrVFZCWGRIRjBjMUEwV1U5elRWRWFJa0ZFYzNJNVpsRjZSMVpNTkZKR2IwRmhZbmhQWmpSRFRqbHBNRTVCWjAxcFowRSIsInZlcnNpb24iOjJ9" }, "moreStores": { "type": "boolean", @@ -5023,8 +5341,8 @@ export const ENDPOINTS = { }, "google-maps": { "slug": "google-maps", - "title": "Google Maps API", - "description": "The Google Maps API allows users to retreive business data including business type, phone, address, website, ratings, number of reviews, and more.", + "title": "Google Maps Search API", + "description": "The Google Maps Search API allows users to search for locations using keyword, coordinates, and various filters. The API returns relevant location details and map data.", "category": "Google Maps", "method": "GET", "path": "/scrape/google-maps/search", @@ -5910,235 +6228,822 @@ export const ENDPOINTS = { "cc", "co", "km", - "cg", - "cd", - "ck", - "cr", - "ci", + "cg", + "cd", + "ck", + "cr", + "ci", + "hr", + "cu", + "cy", + "cz", + "dk", + "dj", + "dm", + "do", + "ec", + "eg", + "sv", + "gq", + "er", + "ee", + "et", + "fk", + "fo", + "fj", + "fi", + "fr", + "gf", + "pf", + "tf", + "ga", + "gm", + "ge", + "gg", + "de", + "gh", + "gi", + "gr", + "gl", + "gd", + "gp", + "gu", + "gt", + "gn", + "gw", + "gy", + "ht", + "hm", + "va", + "hn", + "hk", + "hu", + "im", + "is", + "in", + "id", + "ir", + "iq", + "ie", + "il", + "it", + "je", + "jm", + "jp", + "jo", + "kz", + "ke", + "ki", + "kp", + "kr", + "kw", + "kg", + "la", + "lv", + "lb", + "ls", + "lr", + "ly", + "li", + "lt", + "lu", + "me", + "mo", + "mk", + "mg", + "mw", + "my", + "mv", + "ml", + "mt", + "mh", + "mq", + "mr", + "mu", + "yt", + "mx", + "fm", + "md", + "mc", + "mn", + "ms", + "ma", + "mz", + "mm", + "na", + "nr", + "np", + "nl", + "an", + "nc", + "nz", + "ni", + "ne", + "ng", + "nu", + "nf", + "mp", + "no", + "om", + "pk", + "pw", + "ps", + "pa", + "pg", + "py", + "pe", + "ph", + "pn", + "pl", + "pt", + "pr", + "qa", + "re", + "ro", + "ru", + "rw", + "sh", + "kn", + "lc", + "pm", + "vc", + "ws", + "sm", + "st", + "sa", + "sn", + "rs", + "sc", + "sl", + "sg", + "sk", + "si", + "sb", + "so", + "za", + "gs", + "es", + "lk", + "sd", + "sr", + "sj", + "sz", + "se", + "ch", + "sy", + "tw", + "tj", + "tz", + "th", + "tl", + "tg", + "tk", + "to", + "tt", + "tn", + "tr", + "tm", + "tc", + "tv", + "ug", + "ua", + "ae", + "uk", + "gb", + "us", + "um", + "uy", + "uz", + "vu", + "ve", + "vn", + "vg", + "vi", + "wf", + "eh", + "ye", + "zm", + "zw" + ] + }, + "num": { + "type": "integer", + "description": "Number of results per page, ranging from 10 to 200.", + "wireName": "num" + }, + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. It is used for retrieving the next page results.", + "wireName": "nextPageToken" + } + } + }, + "google-maps-photos": { + "slug": "google-maps-photos", + "title": "Google Maps Photos API", + "description": "The Google Maps Photos API returns photos for a place on Google Maps. Use either dataId or placeId with optional language, category, and pagination.", + "category": "Google Maps", + "method": "GET", + "path": "/scrape/google-maps/photos", + "cost": 5, + "required": [], + "properties": { + "dataId": { + "type": "string", + "description": "Google Maps data ID. Either dataId or placeId should be set.", + "wireName": "dataId", + "default": "0x80cc0654bd27e08d:0xb1c2554442d42e8d" + }, + "placeId": { + "type": "string", + "description": "Unique reference to a place on Google Maps. Either dataId or placeId should be set.", + "wireName": "placeId" + }, + "hl": { + "type": "string", + "description": "The two-letter language code for the language you want to use for the search.", + "wireName": "hl", + "enum": [ + "af", + "ak", + "sq", + "ws", + "am", + "ar", + "hy", + "az", + "eu", + "be", + "bem", + "bn", + "bh", + "xx-bork", + "bs", + "br", + "bg", + "bt", + "km", + "ca", + "chr", + "ny", + "zh-cn", + "zh-tw", + "zh-hk", + "co", + "hr", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", + "et", + "ee", + "fo", + "tl", + "fil", + "fi", + "fr", + "fy", + "gaa", + "gl", + "ka", + "de", + "el", + "kl", + "gn", + "gu", + "xx-hacker", + "ht", + "ha", + "haw", + "iw", + "he", + "hi", + "hu", + "is", + "ig", + "id", + "ia", + "ga", + "it", + "ja", + "jw", + "kn", + "kk", + "rw", + "rn", + "xx-klingon", + "kg", + "ko", + "kri", + "ku", + "ckb", + "ky", + "lo", + "la", + "lv", + "ln", + "lt", + "loz", + "lg", + "ach", + "mk", + "mg", + "my", + "ml", + "mt", + "mv", + "mi", + "mr", + "mfe", + "mo", + "mn", + "ms", + "sr-me", + "ne", + "pcm", + "nso", + "no", + "nn", + "oc", + "or", + "om", + "ps", + "fa", + "xx-pirate", + "pl", + "pt", + "pt-br", + "pt-pt", + "pa", + "qu", + "ro", + "rm", + "nyn", + "ru", + "gd", + "sr", + "sh", + "st", + "tn", + "crs", + "sn", + "sd", + "si", + "sk", + "sl", + "so", + "es", + "es-419", + "su", + "sw", + "sv", + "tg", + "ta", + "tt", + "te", + "th", + "ti", + "to", + "lua", + "tum", + "tr", + "tk", + "tw", + "ug", + "uk", + "ur", + "uz", + "vu", + "vi", + "cy", + "wo", + "xh", + "yi", + "yo", + "zu" + ] + }, + "categoryId": { + "type": "string", + "description": "Filters photos by category.", + "wireName": "categoryId" + }, + "nextPageToken": { + "type": "string", + "description": "Token for fetching the next page of photos.", + "wireName": "nextPageToken" + } + } + }, + "google-maps-place": { + "slug": "google-maps-place", + "title": "Google Maps Place API", + "description": "The Google Maps Place API retrieves detailed information about a specific place using a `placeId`.", + "category": "Google Maps", + "method": "GET", + "path": "/scrape/google-maps/place", + "cost": 5, + "required": [ + "placeId" + ], + "properties": { + "placeId": { + "type": "string", + "description": "A unique identifier for the place. This ID can be obtained from Google Maps search results.", + "wireName": "placeId", + "default": "ChIJFU2bda4SM4cRKSCRyb6pOB8" + }, + "domain": { + "type": "string", + "description": "Google domain to use. Default is google.com.", + "wireName": "domain", + "enum": [ + "google.ac", + "google.ad", + "google.ae", + "google.al", + "google.am", + "google.as", + "google.at", + "google.az", + "google.ba", + "google.be", + "google.bf", + "google.bg", + "google.bi", + "google.bj", + "google.bs", + "google.bt", + "google.by", + "google.ca", + "google.cd", + "google.cf", + "google.cg", + "google.ch", + "google.ci", + "google.cl", + "google.cm", + "google.co.ao", + "google.co.bw", + "google.co.ck", + "google.co.cr", + "google.co.id", + "google.co.il", + "google.co.in", + "google.co.jp", + "google.co.ke", + "google.co.kr", + "google.co.ls", + "google.co.ma", + "google.co.mz", + "google.co.nz", + "google.co.th", + "google.co.tz", + "google.co.ug", + "google.co.uk", + "google.co.uz", + "google.co.ve", + "google.co.vi", + "google.co.za", + "google.co.zm", + "google.co.zw", + "google.com", + "google.com.af", + "google.com.ag", + "google.com.ai", + "google.com.ar", + "google.com.au", + "google.com.bd", + "google.com.bh", + "google.com.bn", + "google.com.bo", + "google.com.br", + "google.com.bz", + "google.com.co", + "google.com.cu", + "google.com.cy", + "google.com.do", + "google.com.ec", + "google.com.eg", + "google.com.et", + "google.com.fj", + "google.com.gh", + "google.com.gi", + "google.com.gt", + "google.com.hk", + "google.com.jm", + "google.com.kh", + "google.com.kw", + "google.com.lb", + "google.com.ly", + "google.com.mm", + "google.com.mt", + "google.com.mx", + "google.com.my", + "google.com.na", + "google.com.ng", + "google.ng", + "google.com.nf", + "google.com.ni", + "google.com.np", + "google.com.om", + "google.com.pa", + "google.com.pe", + "google.com.pg", + "google.com.ph", + "google.com.pk", + "google.com.pr", + "google.com.py", + "google.com.qa", + "google.com.sa", + "google.com.sb", + "google.com.sg", + "google.com.sl", + "google.com.sv", + "google.com.tj", + "google.com.tr", + "google.com.tw", + "google.com.ua", + "google.com.uy", + "google.com.vc", + "google.com.vn", + "google.cat", + "google.cn", + "google.cv", + "google.cz", + "google.de", + "google.dj", + "google.dk", + "google.dm", + "google.dz", + "google.ee", + "google.es", + "google.fi", + "google.fm", + "google.fr", + "google.ga", + "google.ge", + "google.gg", + "google.gl", + "google.gm", + "google.gp", + "google.gr", + "google.gy", + "google.hn", + "google.hr", + "google.ht", + "google.hu", + "google.ie", + "google.im", + "google.iq", + "google.is", + "google.it", + "google.je", + "google.jo", + "google.kg", + "google.ki", + "google.kz", + "google.la", + "google.li", + "google.lk", + "google.lt", + "google.lu", + "google.lv", + "google.md", + "google.me", + "google.mg", + "google.mk", + "google.ml", + "google.mn", + "google.ms", + "google.mu", + "google.mv", + "google.mw", + "google.ne", + "google.nl", + "google.no", + "google.nr", + "google.nu", + "google.pl", + "google.pn", + "google.ps", + "google.pt", + "google.ro", + "google.rs", + "google.ru", + "google.rw", + "google.sc", + "google.se", + "google.sh", + "google.si", + "google.sk", + "google.sm", + "google.sn", + "google.so", + "google.sr", + "google.st", + "google.td", + "google.tg", + "google.tk", + "google.tl", + "google.tm", + "google.tn", + "google.to", + "google.tt", + "google.vg", + "google.vu", + "google.ws" + ] + }, + "hl": { + "type": "string", + "description": "The two-letter language code for the language you want to use for the search.", + "wireName": "hl", + "enum": [ + "af", + "ak", + "sq", + "ws", + "am", + "ar", + "hy", + "az", + "eu", + "be", + "bem", + "bn", + "bh", + "xx-bork", + "bs", + "br", + "bg", + "bt", + "km", + "ca", + "chr", + "ny", + "zh-cn", + "zh-tw", + "zh-hk", + "co", "hr", - "cu", - "cy", - "cz", - "dk", - "dj", - "dm", - "do", - "ec", - "eg", - "sv", - "gq", - "er", - "ee", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", "et", - "fk", + "ee", "fo", - "fj", + "tl", + "fil", "fi", "fr", - "gf", - "pf", - "tf", - "ga", - "gm", - "ge", - "gg", - "de", - "gh", - "gi", - "gr", + "fy", + "gaa", "gl", - "gd", - "gp", - "gu", - "gt", + "ka", + "de", + "el", + "kl", "gn", - "gw", - "gy", + "gu", + "xx-hacker", "ht", - "hm", - "va", - "hn", - "hk", + "ha", + "haw", + "iw", + "he", + "hi", "hu", - "im", "is", - "in", + "ig", "id", - "ir", - "iq", - "ie", - "il", + "ia", + "ga", "it", - "je", - "jm", - "jp", - "jo", - "kz", - "ke", - "ki", - "kp", - "kr", - "kw", + "ja", + "jw", + "kn", + "kk", + "rw", + "rn", + "xx-klingon", "kg", + "ko", + "kri", + "ku", + "ckb", + "ky", + "lo", "la", "lv", - "lb", - "ls", - "lr", - "ly", - "li", + "ln", "lt", - "lu", - "me", - "mo", + "loz", + "lg", + "ach", "mk", "mg", - "mw", "my", - "mv", "ml", "mt", - "mh", - "mq", + "mv", + "mi", "mr", - "mu", - "yt", - "mx", - "fm", - "md", - "mc", + "mfe", + "mo", "mn", "ms", - "ma", - "mz", - "mm", - "na", - "nr", - "np", - "nl", - "an", - "nc", - "nz", - "ni", + "sr-me", "ne", - "ng", - "nu", - "nf", - "mp", + "pcm", + "nso", "no", + "nn", + "oc", + "or", "om", - "pk", - "pw", "ps", - "pa", - "pg", - "py", - "pe", - "ph", - "pn", + "fa", + "xx-pirate", "pl", "pt", - "pr", - "qa", - "re", + "pt-br", + "pt-pt", + "pa", + "qu", "ro", + "rm", + "nyn", "ru", - "rw", + "gd", + "sr", "sh", - "kn", - "lc", - "pm", - "vc", - "ws", - "sm", "st", - "sa", + "tn", + "crs", "sn", - "rs", - "sc", - "sl", - "sg", - "sk", + "sd", "si", - "sb", + "sk", + "sl", "so", - "za", - "gs", "es", - "lk", - "sd", - "sr", - "sj", - "sz", - "se", - "ch", - "sy", - "tw", - "tj", - "tz", - "th", - "tl", + "es-419", + "su", + "sw", + "sv", "tg", - "tk", - "to", + "ta", "tt", - "tn", + "te", + "th", + "ti", + "to", + "lua", + "tum", "tr", - "tm", - "tc", - "tv", + "tk", + "tw", "ug", - "ua", - "ae", "uk", - "gb", - "us", - "um", - "uy", + "ur", "uz", "vu", - "ve", - "vn", - "vg", "vi", - "wf", - "eh", - "ye", - "zm", - "zw" - ] - }, - "num": { - "type": "integer", - "description": "Number of results per page, ranging from 10 to 200.", - "wireName": "num" - }, - "nextPageToken": { - "type": "string", - "description": "Defines the next page token. It is used for retrieving the next page results.", - "wireName": "nextPageToken" + "cy", + "wo", + "xh", + "yi", + "yo", + "zu" + ] } } }, - "google-maps-photos": { - "slug": "google-maps-photos", - "title": "Google Maps Photos API", - "description": "The Google Maps Photos API returns photos for a place on Google Maps. Use either dataId or placeId with optional language, category, and pagination.", + "google-maps-posts": { + "slug": "google-maps-posts", + "title": "Google Maps Posts API", + "description": "The Google Maps Posts API provides access to posts (offers, events, announcements) published by businesses on their Google Maps listings, identified by data ID or place ID.", "category": "Google Maps", "method": "GET", - "path": "/scrape/google-maps/photos", - "cost": 5, + "path": "/scrape/google-maps/posts", + "cost": 10, "required": [], "properties": { "dataId": { "type": "string", - "description": "Google Maps data ID. Either dataId or placeId should be set.", + "description": "Google Maps data ID.", "wireName": "dataId", - "default": "0x80cc0654bd27e08d:0xb1c2554442d42e8d" + "default": "0x873312ae759b4d15:0x1f38a9bec9912029" }, "placeId": { "type": "string", - "description": "Unique reference to a place on Google Maps. Either dataId or placeId should be set.", + "description": "Unique reference to a place on a Google Map. Either dataId or placeId should be set.", "wireName": "placeId" }, "hl": { @@ -6307,237 +7212,33 @@ export const ENDPOINTS = { "zu" ] }, - "categoryId": { - "type": "string", - "description": "Filters photos by category.", - "wireName": "categoryId" - }, "nextPageToken": { "type": "string", - "description": "Token for fetching the next page of photos.", + "description": "Defines the next page token. It is used for retrieving the next page results.", "wireName": "nextPageToken" } } }, - "google-maps-place": { - "slug": "google-maps-place", - "title": "Google Maps Place API", - "description": "The Google Maps Place API retrieves detailed information about a specific place using a `placeId`.", + "google-maps-reviews": { + "slug": "google-maps-reviews", + "title": "Google Maps Reviews API", + "description": "The Google Maps Reviews API provides access to reviews from Google Maps, with options to specify the data ID, place ID, language, sorting parameters, and topic filters.", "category": "Google Maps", "method": "GET", - "path": "/scrape/google-maps/place", + "path": "/scrape/google-maps/reviews", "cost": 5, - "required": [ - "placeId" - ], + "required": [], "properties": { - "placeId": { + "dataId": { "type": "string", - "description": "A unique identifier for the place. This ID can be obtained from Google Maps search results.", - "wireName": "placeId", - "default": "ChIJFU2bda4SM4cRKSCRyb6pOB8" + "description": "Google Maps data ID.", + "wireName": "dataId", + "default": "0x873312ae759b4d15:0x1f38a9bec9912029" }, - "domain": { + "placeId": { "type": "string", - "description": "Google domain to use. Default is google.com.", - "wireName": "domain", - "enum": [ - "google.ac", - "google.ad", - "google.ae", - "google.al", - "google.am", - "google.as", - "google.at", - "google.az", - "google.ba", - "google.be", - "google.bf", - "google.bg", - "google.bi", - "google.bj", - "google.bs", - "google.bt", - "google.by", - "google.ca", - "google.cd", - "google.cf", - "google.cg", - "google.ch", - "google.ci", - "google.cl", - "google.cm", - "google.co.ao", - "google.co.bw", - "google.co.ck", - "google.co.cr", - "google.co.id", - "google.co.il", - "google.co.in", - "google.co.jp", - "google.co.ke", - "google.co.kr", - "google.co.ls", - "google.co.ma", - "google.co.mz", - "google.co.nz", - "google.co.th", - "google.co.tz", - "google.co.ug", - "google.co.uk", - "google.co.uz", - "google.co.ve", - "google.co.vi", - "google.co.za", - "google.co.zm", - "google.co.zw", - "google.com", - "google.com.af", - "google.com.ag", - "google.com.ai", - "google.com.ar", - "google.com.au", - "google.com.bd", - "google.com.bh", - "google.com.bn", - "google.com.bo", - "google.com.br", - "google.com.bz", - "google.com.co", - "google.com.cu", - "google.com.cy", - "google.com.do", - "google.com.ec", - "google.com.eg", - "google.com.et", - "google.com.fj", - "google.com.gh", - "google.com.gi", - "google.com.gt", - "google.com.hk", - "google.com.jm", - "google.com.kh", - "google.com.kw", - "google.com.lb", - "google.com.ly", - "google.com.mm", - "google.com.mt", - "google.com.mx", - "google.com.my", - "google.com.na", - "google.com.ng", - "google.ng", - "google.com.nf", - "google.com.ni", - "google.com.np", - "google.com.om", - "google.com.pa", - "google.com.pe", - "google.com.pg", - "google.com.ph", - "google.com.pk", - "google.com.pr", - "google.com.py", - "google.com.qa", - "google.com.sa", - "google.com.sb", - "google.com.sg", - "google.com.sl", - "google.com.sv", - "google.com.tj", - "google.com.tr", - "google.com.tw", - "google.com.ua", - "google.com.uy", - "google.com.vc", - "google.com.vn", - "google.cat", - "google.cn", - "google.cv", - "google.cz", - "google.de", - "google.dj", - "google.dk", - "google.dm", - "google.dz", - "google.ee", - "google.es", - "google.fi", - "google.fm", - "google.fr", - "google.ga", - "google.ge", - "google.gg", - "google.gl", - "google.gm", - "google.gp", - "google.gr", - "google.gy", - "google.hn", - "google.hr", - "google.ht", - "google.hu", - "google.ie", - "google.im", - "google.iq", - "google.is", - "google.it", - "google.je", - "google.jo", - "google.kg", - "google.ki", - "google.kz", - "google.la", - "google.li", - "google.lk", - "google.lt", - "google.lu", - "google.lv", - "google.md", - "google.me", - "google.mg", - "google.mk", - "google.ml", - "google.mn", - "google.ms", - "google.mu", - "google.mv", - "google.mw", - "google.ne", - "google.nl", - "google.no", - "google.nr", - "google.nu", - "google.pl", - "google.pn", - "google.ps", - "google.pt", - "google.ro", - "google.rs", - "google.ru", - "google.rw", - "google.sc", - "google.se", - "google.sh", - "google.si", - "google.sk", - "google.sm", - "google.sn", - "google.so", - "google.sr", - "google.st", - "google.td", - "google.tg", - "google.tk", - "google.tl", - "google.tm", - "google.tn", - "google.to", - "google.tt", - "google.vg", - "google.vu", - "google.ws" - ] + "description": "Unique reference to a place on a Google Map. Either dataId or placeId should be set.", + "wireName": "placeId" }, "hl": { "type": "string", @@ -6704,224 +7405,297 @@ export const ENDPOINTS = { "yo", "zu" ] + }, + "sortBy": { + "type": "string", + "description": "Parameter used for sorting and refining results.", + "wireName": "sortBy", + "enum": [ + "mostRelevant", + "newestFirst", + "ratingHigh", + "ratingLow" + ] + }, + "topicId": { + "type": "string", + "description": "Defines the ID of the topic you want to use for filtering reviews.", + "wireName": "topicId" + }, + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. It is used for retrieving the next page results.", + "wireName": "nextPageToken" } } }, - "google-maps-posts": { - "slug": "google-maps-posts", - "title": "Google Maps Posts API", - "description": "The Google Maps Posts API provides access to posts (offers, events, announcements) published by businesses on their Google Maps listings, identified by data ID or place ID.", - "category": "Google Maps", + "google-news": { + "slug": "google-news", + "title": "Google News API", + "description": "Real-time access to structured Google News results with a high success rate at scale.", + "category": "Google SERP", "method": "GET", - "path": "/scrape/google-maps/posts", + "path": "/scrape/google/news", "cost": 10, "required": [], "properties": { - "dataId": { - "type": "string", - "description": "Google Maps data ID.", - "wireName": "dataId", - "default": "0x873312ae759b4d15:0x1f38a9bec9912029" - }, - "placeId": { + "q": { "type": "string", - "description": "Unique reference to a place on a Google Map. Either dataId or placeId should be set.", - "wireName": "placeId" + "description": "Free-text query as used on news.google.com. Not allowed with `topicToken`, `storyToken`, or `publicationToken`.", + "wireName": "q" }, - "hl": { + "gl": { "type": "string", - "description": "The two-letter language code for the language you want to use for the search.", - "wireName": "hl", + "description": "The two-letter country code for the country you want to limit the search to.", + "wireName": "gl", "enum": [ + "ac", "af", - "ak", - "sq", - "ws", - "am", + "al", + "dz", + "as", + "ad", + "ao", + "ai", + "aq", + "ag", "ar", - "hy", + "am", + "aw", + "au", + "at", "az", - "eu", - "be", - "bem", - "bn", - "bh", - "xx-bork", "bs", + "bh", + "bd", + "bb", + "by", + "be", + "bz", + "bj", + "bm", + "bt", + "bo", + "ba", + "bw", + "bv", "br", + "io", + "bn", "bg", - "bt", - "km", + "bf", + "bi", + "kh", + "cm", "ca", - "chr", - "ny", - "zh-cn", - "zh-tw", - "zh-hk", + "cv", + "ky", + "cf", + "td", + "cl", + "cn", + "cx", + "cc", "co", + "km", + "cg", + "cd", + "ck", + "cr", + "ci", "hr", - "cs", - "da", - "nl", - "xx-elmer", - "en", - "eo", - "et", + "cu", + "cy", + "cz", + "dk", + "dj", + "dm", + "do", + "ec", + "eg", + "sv", + "gq", + "er", "ee", + "et", + "fk", "fo", - "tl", - "fil", + "fj", "fi", "fr", - "fy", - "gaa", - "gl", - "ka", + "gf", + "pf", + "tf", + "ga", + "gm", + "ge", + "gg", "de", - "el", - "kl", - "gn", + "gh", + "gi", + "gr", + "gl", + "gd", + "gp", "gu", - "xx-hacker", + "gt", + "gn", + "gw", + "gy", "ht", - "ha", - "haw", - "iw", - "he", - "hi", + "hm", + "va", + "hn", + "hk", "hu", + "im", "is", - "ig", + "in", "id", - "ia", - "ga", + "ir", + "iq", + "ie", + "il", "it", - "ja", - "jw", - "kn", - "kk", - "rw", - "rn", - "xx-klingon", + "je", + "jm", + "jp", + "jo", + "kz", + "ke", + "ki", + "kp", + "kr", + "kw", "kg", - "ko", - "kri", - "ku", - "ckb", - "ky", - "lo", "la", "lv", - "ln", + "lb", + "ls", + "lr", + "ly", + "li", "lt", - "loz", - "lg", - "ach", + "lu", + "me", + "mo", "mk", "mg", + "mw", "my", + "mv", "ml", "mt", - "mv", - "mi", + "mh", + "mq", "mr", - "mfe", - "mo", + "mu", + "yt", + "mx", + "fm", + "md", + "mc", "mn", "ms", - "sr-me", + "ma", + "mz", + "mm", + "na", + "nr", + "np", + "nl", + "an", + "nc", + "nz", + "ni", "ne", - "pcm", - "nso", + "ng", + "nu", + "nf", + "mp", "no", - "nn", - "oc", - "or", "om", + "pk", + "pw", "ps", - "fa", - "xx-pirate", + "pa", + "pg", + "py", + "pe", + "ph", + "pn", "pl", "pt", - "pt-br", - "pt-pt", - "pa", - "qu", + "pr", + "qa", + "re", "ro", - "rm", - "nyn", "ru", - "gd", - "sr", + "rw", "sh", + "kn", + "lc", + "pm", + "vc", + "ws", + "sm", "st", - "tn", - "crs", + "sa", "sn", - "sd", - "si", - "sk", + "rs", + "sc", "sl", + "sg", + "sk", + "si", + "sb", "so", + "za", + "gs", "es", - "es-419", - "su", - "sw", - "sv", - "tg", - "ta", - "tt", - "te", + "lk", + "sd", + "sr", + "sj", + "sz", + "se", + "ch", + "sy", + "tw", + "tj", + "tz", "th", - "ti", + "tl", + "tg", + "tk", "to", - "lua", - "tum", + "tt", + "tn", "tr", - "tk", - "tw", + "tm", + "tc", + "tv", "ug", + "ua", + "ae", "uk", - "ur", + "gb", + "us", + "um", + "uy", "uz", "vu", + "ve", + "vn", + "vg", "vi", - "cy", - "wo", - "xh", - "yi", - "yo", - "zu" + "wf", + "eh", + "ye", + "zm", + "zw" ] }, - "nextPageToken": { - "type": "string", - "description": "Defines the next page token. It is used for retrieving the next page results.", - "wireName": "nextPageToken" - } - } - }, - "google-maps-reviews": { - "slug": "google-maps-reviews", - "title": "Google Maps Reviews API", - "description": "The Google Maps Reviews API provides access to reviews from Google Maps, with options to specify the data ID, place ID, language, sorting parameters, and topic filters.", - "category": "Google Maps", - "method": "GET", - "path": "/scrape/google-maps/reviews", - "cost": 5, - "required": [], - "properties": { - "dataId": { - "type": "string", - "description": "Google Maps data ID.", - "wireName": "dataId", - "default": "0x873312ae759b4d15:0x1f38a9bec9912029" - }, - "placeId": { - "type": "string", - "description": "Unique reference to a place on a Google Map. Either dataId or placeId should be set.", - "wireName": "placeId" - }, "hl": { "type": "string", "description": "The two-letter language code for the language you want to use for the search.", @@ -7088,296 +7862,665 @@ export const ENDPOINTS = { "zu" ] }, - "sortBy": { + "topicToken": { "type": "string", - "description": "Parameter used for sorting and refining results.", - "wireName": "sortBy", - "enum": [ - "qualityScore", - "newestFirst", - "ratingHigh", - "ratingLow" - ] + "description": "Token for a Google News topic such as World, Business, or Technology. Not allowed with `q`, `storyToken`, or `publicationToken`.", + "wireName": "topicToken" }, - "topicId": { + "sectionToken": { "type": "string", - "description": "Defines the ID of the topic you want to use for filtering reviews.", - "wireName": "topicId" + "description": "Token for a sub-section under a topic, for example Business → Economy. Use only when `topicToken` or `publicationToken` is present.", + "wireName": "sectionToken" }, - "nextPageToken": { + "publicationToken": { "type": "string", - "description": "Defines the next page token. It is used for retrieving the next page results.", - "wireName": "nextPageToken" + "description": "Token for a specific publisher such as CNN or BBC. Not allowed with `q`, `storyToken`, or `topicToken`.", + "wireName": "publicationToken" + }, + "storyToken": { + "type": "string", + "description": "Token for a single news story cluster (the “Full coverage” page).", + "wireName": "storyToken" + }, + "so": { + "type": "string", + "description": "Sort order for articles in a story. Use only with storyToken.", + "wireName": "so", + "enum": [ + "0", + "1" + ] } } }, - "google-news": { - "slug": "google-news", - "title": "Google News API", - "description": "The Google News API offers real-time access to comprehensive news articles from Google, enabling users to fetch news based on specific queries, locations, publishers, and various filter options for tailored news feeds.", - "category": "Google SERP", + "google-scholar": { + "slug": "google-scholar", + "title": "Google Scholar API", + "description": "Provides real-time access to Google Scholar search results, including papers, citations, and related scholarly metadata.", + "category": "Google Scholar", "method": "GET", - "path": "/scrape/google/news", + "path": "/scrape/google/scholar", "cost": 10, - "required": [], + "required": [ + "q" + ], "properties": { "q": { "type": "string", - "description": "Free-text query as used on news.google.com. Not allowed with `topicToken`, `storyToken`, or `publicationToken`.", - "wireName": "q" + "description": "Search query. Supports Google Scholar search helpers such as `author:` and `source:`.", + "wireName": "q", + "default": "machine learning" }, - "gl": { + "hl": { "type": "string", - "description": "The two-letter country code for the country you want to limit the search to.", - "wireName": "gl", + "description": "The two-letter language code for the language you want to use for the search.", + "wireName": "hl", "enum": [ - "ac", "af", - "al", - "dz", - "as", - "ad", - "ao", - "ai", - "aq", - "ag", - "ar", + "ak", + "sq", + "ws", "am", - "aw", - "au", - "at", + "ar", + "hy", "az", - "bs", - "bh", - "bd", - "bb", - "by", + "eu", "be", - "bz", - "bj", - "bm", - "bt", - "bo", - "ba", - "bw", - "bv", - "br", - "io", + "bem", "bn", + "bh", + "xx-bork", + "bs", + "br", "bg", - "bf", - "bi", - "kh", - "cm", + "bt", + "km", "ca", - "cv", - "ky", - "cf", - "td", - "cl", - "cn", - "cx", - "cc", + "chr", + "ny", + "zh-cn", + "zh-tw", + "zh-hk", "co", - "km", - "cg", - "cd", - "ck", - "cr", - "ci", "hr", - "cu", - "cy", - "cz", - "dk", - "dj", - "dm", - "do", - "ec", - "eg", - "sv", - "gq", - "er", - "ee", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", "et", - "fk", + "ee", "fo", - "fj", + "tl", + "fil", "fi", "fr", - "gf", - "pf", - "tf", - "ga", - "gm", - "ge", - "gg", - "de", - "gh", - "gi", - "gr", + "fy", + "gaa", "gl", - "gd", - "gp", - "gu", - "gt", + "ka", + "de", + "el", + "kl", "gn", - "gw", - "gy", + "gu", + "xx-hacker", "ht", - "hm", - "va", - "hn", - "hk", + "ha", + "haw", + "iw", + "he", + "hi", "hu", - "im", "is", - "in", + "ig", "id", - "ir", - "iq", - "ie", - "il", + "ia", + "ga", "it", - "je", - "jm", - "jp", - "jo", - "kz", - "ke", - "ki", - "kp", - "kr", - "kw", + "ja", + "jw", + "kn", + "kk", + "rw", + "rn", + "xx-klingon", "kg", + "ko", + "kri", + "ku", + "ckb", + "ky", + "lo", "la", "lv", - "lb", - "ls", - "lr", - "ly", - "li", + "ln", "lt", - "lu", - "me", - "mo", + "loz", + "lg", + "ach", "mk", "mg", - "mw", "my", - "mv", "ml", "mt", - "mh", - "mq", + "mv", + "mi", "mr", - "mu", - "yt", - "mx", - "fm", - "md", - "mc", + "mfe", + "mo", "mn", "ms", - "ma", - "mz", - "mm", - "na", - "nr", - "np", - "nl", - "an", - "nc", - "nz", - "ni", + "sr-me", "ne", - "ng", - "nu", - "nf", - "mp", + "pcm", + "nso", "no", + "nn", + "oc", + "or", "om", - "pk", - "pw", "ps", - "pa", - "pg", - "py", - "pe", - "ph", - "pn", + "fa", + "xx-pirate", "pl", "pt", - "pr", - "qa", - "re", + "pt-br", + "pt-pt", + "pa", + "qu", "ro", + "rm", + "nyn", "ru", - "rw", + "gd", + "sr", "sh", - "kn", - "lc", - "pm", - "vc", - "ws", - "sm", "st", - "sa", + "tn", + "crs", "sn", - "rs", - "sc", - "sl", - "sg", - "sk", + "sd", "si", - "sb", + "sk", + "sl", "so", - "za", - "gs", "es", - "lk", - "sd", - "sr", - "sj", - "sz", - "se", - "ch", - "sy", - "tw", - "tj", - "tz", - "th", - "tl", + "es-419", + "su", + "sw", + "sv", "tg", - "tk", - "to", + "ta", "tt", - "tn", + "te", + "th", + "ti", + "to", + "lua", + "tum", "tr", - "tm", - "tc", - "tv", + "tk", + "tw", "ug", - "ua", - "ae", "uk", - "gb", - "us", - "um", - "uy", + "ur", "uz", "vu", - "ve", - "vn", - "vg", "vi", - "wf", - "eh", - "ye", - "zm", - "zw" + "cy", + "wo", + "xh", + "yi", + "yo", + "zu" + ] + }, + "lr": { + "type": "array", + "description": "The 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content.", + "wireName": "lr", + "items": { + "type": "string", + "enum": [ + "lang_ar", + "lang_hy", + "lang_bg", + "lang_ca", + "lang_cs", + "lang_da", + "lang_de", + "lang_el", + "lang_en", + "lang_es", + "lang_et", + "lang_tl", + "lang_fi", + "lang_fr", + "lang_hr", + "lang_hi", + "lang_hu", + "lang_id", + "lang_is", + "lang_it", + "lang_iw", + "lang_he", + "lang_ja", + "lang_ko", + "lang_lt", + "lang_lv", + "lang_nl", + "lang_no", + "lang_fa", + "lang_pl", + "lang_pt", + "lang_ro", + "lang_ru", + "lang_sk", + "lang_sl", + "lang_sr", + "lang_sv", + "lang_th", + "lang_tr", + "lang_uk", + "lang_vi", + "lang_zh-CN", + "lang_zh-TW" + ] + } + }, + "start": { + "type": "integer", + "description": "Result offset for pagination, where 0 is the first result.", + "wireName": "start" + }, + "num": { + "type": "integer", + "description": "Maximum number of results to return per page.", + "wireName": "num" + }, + "asYlo": { + "type": "integer", + "description": "Return results published from this year onward.", + "wireName": "asYlo", + "default": 2020 + }, + "asYhi": { + "type": "integer", + "description": "Return results published up to and including this year.", + "wireName": "asYhi", + "default": 2024 + }, + "scisbd": { + "type": "integer", + "description": "Sort results by date instead of relevance: 1 for abstracts only, 2 for everything. Omit for relevance sorting.", + "wireName": "scisbd" + }, + "cluster": { + "type": "string", + "description": "Unique article ID to look up all indexed versions of that article, as returned in a result's `versions.clusterId`.", + "wireName": "cluster" + }, + "cites": { + "type": "string", + "description": "Unique article ID to look up articles that cite it, as returned in a result's `citedBy.citesId`.", + "wireName": "cites" + }, + "asSdt": { + "type": "string", + "description": "Search type/filter. Pick a value below to search case law from a specific court, or use `0,5` for Articles (default) / `7` to include patents. Any comma-separated court-code combination Google Scholar accepts also works here as free text beyond this list.", + "wireName": "asSdt", + "default": "0,5", + "enum": [ + "2003", + "2006", + "2007", + "0,5", + "4,1", + "4,61", + "4,62", + "4,63", + "4,64", + "4,2", + "4,65", + "4,66", + "4,3", + "4,67", + "4,68", + "4,4", + "4,70", + "4,71", + "4,5", + "4,102", + "4,103", + "4,104", + "4,6", + "4,115", + "4,116", + "4,7", + "4,117", + "4,118", + "4,8", + "4,132", + "4,385", + "4,133", + "4,9", + "4,165", + "4,10", + "4,167", + "4,168", + "4,11", + "4,169", + "4,170", + "4,12", + "4,171", + "4,172", + "4,13", + "4,173", + "4,174", + "4,14", + "4,175", + "4,176", + "4,15", + "4,177", + "4,178", + "4,179", + "4,16", + "4,181", + "4,182", + "4,17", + "4,183", + "4,184", + "4,18", + "4,185", + "4,186", + "4,19", + "4,386", + "4,187", + "4,20", + "4,193", + "4,21", + "4,195", + "4,194", + "4,22", + "4,196", + "4,197", + "4,23", + "4,198", + "4,199", + "4,24", + "4,200", + "4,201", + "4,25", + "4,202", + "4,203", + "4,26", + "4,204", + "4,205", + "4,27", + "4,206", + "4,28", + "4,207", + "4,208", + "4,29", + "4,209", + "4,30", + "4,210", + "4,31", + "4,211", + "4,212", + "4,32", + "4,213", + "4,214", + "4,33", + "4,215", + "4,387", + "4,216", + "4,34", + "4,217", + "4,218", + "4,35", + "4,219", + "4,220", + "4,36", + "4,221", + "4,222", + "4,37", + "4,223", + "4,224", + "4,225", + "4,226", + "4,38", + "4,227", + "4,228", + "4,39", + "4,229", + "4,388", + "4,230", + "4,40", + "4,231", + "4,41", + "4,232", + "4,233", + "4,42", + "4,234", + "4,43", + "4,235", + "4,236", + "4,237", + "4,44", + "4,238", + "4,239", + "4,240", + "4,241", + "4,45", + "4,242", + "4,243", + "4,46", + "4,244", + "4,47", + "4,245", + "4,246", + "4,48", + "4,247", + "4,248", + "4,49", + "4,249", + "4,50", + "4,250", + "4,251", + "4,51", + "4,252", + "4,60", + "4,188", + "4,189", + "4,190", + "4,191", + "4,192", + "4,55", + "4,119,105,145,147,152,157,158,82,84,89,94,95,379", + "4,119,105", + "4,145", + "4,147", + "4,152", + "4,157", + "4,158", + "4,82,84,89,94,95", + "4,379", + "4,122,107,138,162,349,350,351,352,75,99,286,287,288,289,380", + "4,122,107", + "4,138", + "4,162", + "4,349", + "4,350", + "4,351", + "4,352", + "4,75,99,286,287,288,289", + "4,380", + "4,123,108,139,153,163,361,362,363,76,90,100,298,299,300", + "4,123,108", + "4,139", + "4,153", + "4,163", + "4,361", + "4,362", + "4,363", + "4,76,90,100,298,299,300", + "4,124,109,146,159,353,354,355,371,372,375,376,83,96,290,291,292,308,309,312,313", + "4,124,109", + "4,146", + "4,159", + "4,353", + "4,354", + "4,355", + "4,371", + "4,372", + "4,375", + "4,376", + "4,83,96,290,291,292,308,309,312,313", + "4,125,110,340,341,342,345,346,367,368,369,370,277,278,279,282,283,304,305,306,307", + "4,125,110", + "4,340", + "4,341", + "4,342", + "4,345", + "4,346", + "4,367", + "4,368", + "4,369", + "4,370", + "4,277,278,279,282,283,304,305,306,307", + "4,126,111,338,339,343,344,356,357,364,365,366,275,276,280,281,293,294,301,302,303,381", + "4,126,111", + "4,338", + "4,339", + "4,343", + "4,344", + "4,356", + "4,357", + "4,364", + "4,365", + "4,366", + "4,275,276,280,281,293,294,301,302,303", + "4,381", + "4,127,112,331,332,333,334,335,377,378,268,269,270,271,272,314,315", + "4,127,112", + "4,331", + "4,332", + "4,333", + "4,334", + "4,335", + "4,377", + "4,378", + "4,268,269,270,271,272,314,315", + "4,128,113,148,150,155,160,319,320,336,337,347,348,85,87,92,97,256,257,273,274,284,285,382", + "4,128,113", + "4,148", + "4,150", + "4,155", + "4,160", + "4,319", + "4,320", + "4,336", + "4,337", + "4,347", + "4,348", + "4,85,87,92,97,256,257,273,274,284,285", + "4,382", + "4,129,114,134,135,141,142,143,149,151,156,321,322,323,324,373,374,72,73,78,79,80,86,88,93,258,259,260,261,310,311,383", + "4,129,114", + "4,134", + "4,135", + "4,141", + "4,142", + "4,143", + "4,149", + "4,151", + "4,156", + "4,321", + "4,322", + "4,323", + "4,324", + "4,373", + "4,374", + "4,72,73,78,79,80,86,88,93,258,259,260,261,310,311", + "4,383", + "4,120,106,137,144,154,161,164,358,359,360,74,81,91,98,101,295,296,297,384", + "4,120,106", + "4,137", + "4,144", + "4,154", + "4,161", + "4,164", + "4,358", + "4,359", + "4,360", + "4,74,81,91,98,101,295,296,297", + "4,384", + "4,121,316,317,318,325,326,327,328,329,330,253,254,255,262,263,264,265,266,267", + "4,121", + "4,316", + "4,317", + "4,318", + "4,325", + "4,326", + "4,327", + "4,328", + "4,329", + "4,330", + "4,253,254,255,262,263,264,265,266,267", + "4,130,140,77", + "4,130", + "4,140", + "4,77", + "4,131" + ] + }, + "safe": { + "type": "string", + "description": "Adult content filtering option.", + "wireName": "safe", + "enum": [ + "active", + "off" ] }, + "filter": { + "type": "number", + "description": "Defines whether to enable or disable the filters for 'Similar Results' and 'Omitted Results'. Set to 1 (default) to enable these filters, or 0 to disable them.", + "wireName": "filter" + }, + "asVis": { + "type": "number", + "description": "Set to 1 to exclude citations from the results, or 0 (default) to include them.", + "wireName": "asVis" + }, + "asRr": { + "type": "number", + "description": "Set to 1 to return review articles only, or 0 (default) to return all articles.", + "wireName": "asRr" + } + } + }, + "google-scholar-cite": { + "slug": "google-scholar-cite", + "title": "Google Scholar Cite API", + "description": "Provides real-time access to Google Scholar citation formats and reference-manager export links for a single organic search result.", + "category": "Google Scholar", + "method": "GET", + "path": "/scrape/google/scholar-cite", + "cost": 10, + "required": [ + "q" + ], + "properties": { + "q": { + "type": "string", + "description": "The `resultId` of a Google Scholar organic result, as returned by the google/scholar endpoint.", + "wireName": "q", + "default": "EQ8shYj8Ai8J" + }, "hl": { "type": "string", "description": "The two-letter language code for the language you want to use for the search.", @@ -7543,42 +8686,13 @@ export const ENDPOINTS = { "yo", "zu" ] - }, - "topicToken": { - "type": "string", - "description": "Token for a Google News topic such as World, Business, or Technology. Not allowed with `q`, `storyToken`, or `publicationToken`.", - "wireName": "topicToken" - }, - "sectionToken": { - "type": "string", - "description": "Token for a sub-section under a topic, for example Business → Economy. Use only when `topicToken` or `publicationToken` is present.", - "wireName": "sectionToken" - }, - "publicationToken": { - "type": "string", - "description": "Token for a specific publisher such as CNN or BBC. Not allowed with `q`, `storyToken`, or `topicToken`.", - "wireName": "publicationToken" - }, - "storyToken": { - "type": "string", - "description": "Token for a single news story cluster (the “Full coverage” page).", - "wireName": "storyToken" - }, - "so": { - "type": "string", - "description": "Sort order for articles in a story. Use only with storyToken.", - "wireName": "so", - "enum": [ - "0", - "1" - ] } } }, "google-serp": { "slug": "google-serp", "title": "Google SERP API", - "description": "The Google SERP API provides real-time access to structured Google search results, offering no blocks or CAPTCHAs.", + "description": "The Google SERP API provides real-time access to structured Google search results with a high success rate at scale.", "category": "Google SERP", "method": "GET", "path": "/scrape/google/serp", @@ -8359,7 +9473,7 @@ export const ENDPOINTS = { "google-serp-light": { "slug": "google-serp-light", "title": "Google SERP Light API", - "description": "Google Light SERP API offers real-time access to essential search data, omitting extra-rich results for faster response times and lower costs.", + "description": "Google Light SERP API offers real-time access to Google search results parsed from the lightweight layout — organic results, AI Overview, answer box, knowledge graph, related questions and searches, inline images, local pack and search filters — for faster response times and lower costs.", "category": "Google SERP", "method": "GET", "path": "/scrape/google-light/serp", @@ -9092,7 +10206,7 @@ export const ENDPOINTS = { "google-shopping": { "slug": "google-shopping", "title": "Google Shopping API", - "description": "The Google Shopping API gives real-time access to structured product listings from Google Shopping, with no blocks or CAPTCHAs.", + "description": "The Google Shopping API gives real-time access to structured product listings from Google Shopping with a high success rate at scale.", "category": "Google SERP", "method": "GET", "path": "/scrape/google/shopping", @@ -15387,11 +16501,42 @@ export const ENDPOINTS = { } } }, + "instagram-posts": { + "slug": "instagram-posts", + "title": "Instagram Posts Scraper API", + "description": "The Instagram Posts Scraper API lets you retrieve the latest posts of a public Instagram account using its handle. It returns posts with captions, hashtags, mentions, likes, comments, and plays counts, image and video URLs, and timestamps, with token-based pagination for retrieving older posts.", + "category": "Social", + "method": "GET", + "path": "/scrape/instagram/posts", + "cost": 5, + "required": [ + "handle" + ], + "properties": { + "handle": { + "type": "string", + "description": "The Instagram username of the account whose posts you want to scrape, without the `@` symbol.", + "wireName": "handle", + "default": "hasdatadotcom" + }, + "limit": { + "type": "integer", + "description": "The maximum number of posts to retrieve per request. Defaults to 12.", + "wireName": "limit", + "default": 12 + }, + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. It is used for retrieving the next page results. Use the `nextPageToken` value returned by the previous response.", + "wireName": "nextPageToken" + } + } + }, "instagram-profile": { "slug": "instagram-profile", "title": "Instagram Profile Scraper API", "description": "The Instagram Profile Scraper API lets you retrieve public profile information for a specific Instagram account using its handle. It returns data such as bio, followers, following, posts count, and other visible profile details.", - "category": "Instagram", + "category": "Social", "method": "GET", "path": "/scrape/instagram/profile", "cost": 5, @@ -15411,7 +16556,7 @@ export const ENDPOINTS = { "slug": "redfin-listing", "title": "Redfin Listing Scraper API", "description": "The Redfin Listing Scraper API allows you to retrieve real estate listings from Redfin based on various search parameters.", - "category": "Redfin", + "category": "Real Estate", "method": "GET", "path": "/scrape/redfin/listing", "cost": 5, @@ -15422,7 +16567,7 @@ export const ENDPOINTS = { "properties": { "keyword": { "type": "string", - "description": "The zipcode used to search for listings.", + "description": "The location to search for listings. Accepts a zipcode (`33321`), a city (`Austin` or `Austin, TX`), a neighborhood (`East Austin`), a school (`BASIS Austin`), a school district (`Austin Independent School District`), an apartment building by its name (`Maizon Brickell`), or a full street address (`5805 Woodview Ave, Austin, TX 78756`), including a single unit (`221 SW 12th St Unit 1716, Miami, FL`). An address or a building returns a single property card instead of a list of listings, and the `type` parameter does not apply to it.", "wireName": "keyword", "default": "33321" }, @@ -16078,109 +17223,444 @@ export const ENDPOINTS = { "description": "The minimum transit score (1-100).", "wireName": "transportScores[transitScore]" }, - "transportScoresBikeScore": { - "type": "number", - "description": "The minimum bike score (1-100).", - "wireName": "transportScores[bikeScore]" + "transportScoresBikeScore": { + "type": "number", + "description": "The minimum bike score (1-100).", + "wireName": "transportScores[bikeScore]" + }, + "page": { + "type": "number", + "description": "The page number of the results to retrieve.", + "wireName": "page" + } + } + }, + "redfin-property": { + "slug": "redfin-property", + "title": "Redfin Property Scraper API", + "description": "The Redfin Property Scraper API allows users to retrieve detailed information about a specific property using its URL. It provides details such as property features, price, and agent contacts.", + "category": "Real Estate", + "method": "GET", + "path": "/scrape/redfin/property", + "cost": 5, + "required": [ + "url" + ], + "properties": { + "url": { + "type": "string", + "description": "The URL of the property on Redfin. Must be a valid Redfin property URL.", + "wireName": "url", + "default": "https://www.redfin.com/IL/Chicago/1322-S-Prairie-Ave-60605/unit-1106/home/12694628" + } + } + }, + "shopify-collections": { + "slug": "shopify-collections", + "title": "Shopify Collections Scraper API", + "description": "The Shopify Collections Scraper API allows users to retrieve information about collections in a Shopify store, including details such as title, handle, description, and image.", + "category": "E-commerce", + "method": "GET", + "path": "/scrape/shopify/collections", + "cost": 5, + "required": [ + "url" + ], + "properties": { + "url": { + "type": "string", + "description": "The URL of the Shopify store. For example, 'https://b2bdemoexperience.myshopify.com'.", + "wireName": "url", + "default": "https://b2bdemoexperience.myshopify.com" + }, + "limit": { + "type": "integer", + "description": "The maximum number of collections to retrieve. Must be between 1 and 250.", + "wireName": "limit", + "default": 10 + }, + "page": { + "type": "integer", + "description": "The page number of the results to retrieve. Must be a positive integer.", + "wireName": "page" + } + } + }, + "shopify-products": { + "slug": "shopify-products", + "title": "Shopify Products Scraper API", + "description": "The Shopify Products Scraper API allows users to retrieve product information from a Shopify store using the provided URL, with options to limit the results and filter by collection.", + "category": "E-commerce", + "method": "GET", + "path": "/scrape/shopify/products", + "cost": 5, + "required": [ + "url" + ], + "properties": { + "url": { + "type": "string", + "description": "The URL of the Shopify store. For example, 'https://b2bdemoexperience.myshopify.com'.", + "wireName": "url", + "default": "https://b2bdemoexperience.myshopify.com" + }, + "limit": { + "type": "integer", + "description": "The maximum number of products to retrieve. Must be between 1 and 250.", + "wireName": "limit", + "default": 1 + }, + "page": { + "type": "integer", + "description": "The page number of the results to retrieve. Must be a positive integer.", + "wireName": "page" + }, + "collection": { + "type": "string", + "description": "The handle of the collection to filter the products. Provide the collection handle as a string.", + "wireName": "collection" + } + } + }, + "tiktok-comments": { + "slug": "tiktok-comments", + "title": "TikTok Comments Scraper API", + "description": "The TikTok Comments Scraper API returns the comments on a public TikTok video, or the replies to a specific comment. Each comment includes its text, like count, timestamp, reply count, and author (with links to the author's profile and posts). Results are paginated with a token.", + "category": "Social", + "method": "GET", + "path": "/scrape/tiktok/comments", + "cost": 10, + "required": [ + "videoId" + ], + "properties": { + "videoId": { + "type": "string", + "description": "The numeric id of the video (the number after `/video/` in a TikTok URL).", + "wireName": "videoId", + "default": "7667749432279977230" + }, + "commentId": { + "type": "string", + "description": "When provided, returns the replies to this comment instead of the video's top-level comments.", + "wireName": "commentId" + }, + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page.", + "wireName": "nextPageToken" + } + } + }, + "tiktok-posts": { + "slug": "tiktok-posts", + "title": "TikTok Posts Scraper API", + "description": "The TikTok Posts Scraper API lets you retrieve the videos of a public TikTok account using its handle. It returns each video with description, hashtags, mentions, like/comment/share/play counts, cover and playable video URLs, music, and timestamp. Results are paginated with a token — pass the `nextPageToken` from a response to fetch the next page.", + "category": "Social", + "method": "GET", + "path": "/scrape/tiktok/posts", + "cost": 10, + "required": [ + "handle" + ], + "properties": { + "handle": { + "type": "string", + "description": "The TikTok username of the account whose videos you want to scrape, with or without the `@` symbol.", + "wireName": "handle", + "default": "tiktok" + }, + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. It is used for retrieving the next page of results. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page.", + "wireName": "nextPageToken" + } + } + }, + "tiktok-profile": { + "slug": "tiktok-profile", + "title": "TikTok Profile Scraper API", + "description": "The TikTok Profile Scraper API lets you retrieve public profile information for a specific TikTok account using its handle. It returns data such as nickname, bio, followers, likes, videos count, and other visible profile details.", + "category": "Social", + "method": "GET", + "path": "/scrape/tiktok/profile", + "cost": 10, + "required": [ + "handle" + ], + "properties": { + "handle": { + "type": "string", + "description": "The TikTok username of the profile you want to scrape, with or without the `@` symbol.", + "wireName": "handle", + "default": "nasa" + } + } + }, + "tiktok-search": { + "slug": "tiktok-search", + "title": "TikTok Search Scraper API", + "description": "The TikTok Search Scraper API lets you search TikTok by keyword for videos or users. Video results include description, hashtags, stats, cover and playable URLs, and author info; user results include nickname, bio, avatar, verified flag, and follower count. Results are paginated with a token.", + "category": "Social", + "method": "GET", + "path": "/scrape/tiktok/search", + "cost": 10, + "required": [ + "keyword" + ], + "properties": { + "keyword": { + "type": "string", + "description": "The phrase to search for on TikTok.", + "wireName": "keyword", + "default": "dance" + }, + "type": { + "type": "string", + "description": "What to search for — videos or users. Defaults to video.", + "wireName": "type", + "enum": [ + "video", + "user" + ] }, - "page": { - "type": "number", - "description": "The page number of the results to retrieve.", - "wireName": "page" + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page.", + "wireName": "nextPageToken" } } }, - "redfin-property": { - "slug": "redfin-property", - "title": "Redfin Property Scraper API", - "description": "The Redfin Property Scraper API allows users to retrieve detailed information about a specific property using its URL. It provides details such as property features, price, and agent contacts.", - "category": "Redfin", + "walmart-product": { + "slug": "walmart-product", + "title": "Walmart Product Scraper API", + "description": "The Walmart Product Scraper API returns the full detail page of a single Walmart item, and optionally the offers of other sellers competing for the same product.", + "category": "E-commerce", "method": "GET", - "path": "/scrape/redfin/property", - "cost": 5, - "required": [ - "url" - ], + "path": "/scrape/walmart/product", + "cost": 10, + "required": [], "properties": { + "itemId": { + "type": "string", + "description": "Walmart item id, taken from a product URL or from the id field of the Walmart Search API response. On `walmart.com` it is numeric (for example `14977205582`), on `walmart.ca` an alphanumeric code (for example `6NZMJ5CW6MH2`). Required unless `url` is provided.", + "wireName": "itemId", + "default": "14977205582" + }, "url": { "type": "string", - "description": "The URL of the property on Redfin. Must be a valid Redfin property URL.", + "description": "A full Walmart product URL to scrape as is. When provided, it overrides `itemId` and the storefront is taken from the URL itself. Required unless `itemId` is provided.", "wireName": "url", - "default": "https://www.redfin.com/IL/Chicago/1322-S-Prairie-Ave-60605/unit-1106/home/12694628" + "default": "https://www.walmart.com/ip/Samsung-Galaxy-S25-Ultra-256GB-Unlocked-Android-Cell-Phone-with-200MP-Camera-Titanium-Blue/14977205582" + }, + "domain": { + "type": "string", + "description": "Walmart storefront the item belongs to. Each storefront has its own catalog, item ids, prices and currency, so an id from one storefront does not resolve on another. Ignored when `url` is provided. Default is `walmart.com`.", + "wireName": "domain", + "enum": [ + "walmart.com", + "walmart.ca" + ] + }, + "language": { + "type": "string", + "description": "Language of the product details. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default.", + "wireName": "language", + "default": "en", + "enum": [ + "en", + "es", + "fr" + ] + }, + "otherOffers": { + "type": "boolean", + "description": "Also collect the offers of other sellers competing for this item - each seller name, storefront, price, condition, shipping cost, delivery date and return policy. This takes an extra request to Walmart and costs 5 credits on top of the base 10, whether or not the item turns out to have competing sellers. How many competitors the item advertises, and the cheapest competing price, are returned in the `otherOffers` block whether the switch is on or off, so it can be left off until the count shows there is something to collect. Default is `false`.", + "wireName": "otherOffers" } } }, - "shopify-collections": { - "slug": "shopify-collections", - "title": "Shopify Collections Scraper API", - "description": "The Shopify Collections Scraper API allows users to retrieve information about collections in a Shopify store, including details such as title, handle, description, and image.", - "category": "Shopify", + "walmart-reviews": { + "slug": "walmart-reviews", + "title": "Walmart Reviews Scraper API", + "description": "The Walmart Reviews Scraper API returns the customer reviews of a single Walmart item, ten a page, with the sorting and filtering the product page itself offers.", + "category": "E-commerce", "method": "GET", - "path": "/scrape/shopify/collections", - "cost": 5, - "required": [ - "url" - ], + "path": "/scrape/walmart/reviews", + "cost": 10, + "required": [], "properties": { + "itemId": { + "type": "string", + "description": "Walmart item id, taken from a product URL or from the id field of the Walmart Search API response. On `walmart.com` it is numeric (for example `14977205582`), on `walmart.ca` an alphanumeric code (for example `6NZMJ5CW6MH2`). Required unless `url` is provided.", + "wireName": "itemId", + "default": "1028936148" + }, "url": { "type": "string", - "description": "The URL of the Shopify store. For example, 'https://b2bdemoexperience.myshopify.com'.", + "description": "A full Walmart product URL whose reviews to scrape. When provided, it overrides `itemId` and the storefront is taken from the URL itself. Required unless `itemId` is provided.", "wireName": "url", - "default": "https://b2bdemoexperience.myshopify.com" + "default": "https://www.walmart.com/ip/Restored-Apple-iPhone-14-Carrier-Unlocked-128-GB-Starlight-MPUN3LL-A-Refurbished/1028936148" }, - "limit": { - "type": "integer", - "description": "The maximum number of collections to retrieve. Must be between 1 and 250.", - "wireName": "limit", - "default": 10 + "domain": { + "type": "string", + "description": "Walmart storefront the item belongs to. Each storefront has its own catalog, item ids and review pool, so an id from one storefront does not resolve on another. Ignored when `url` is provided. Default is `walmart.com`.", + "wireName": "domain", + "enum": [ + "walmart.com", + "walmart.ca" + ] + }, + "language": { + "type": "string", + "description": "Language of the review page. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. Reviews themselves are returned in the language their author wrote them in.", + "wireName": "language", + "default": "en", + "enum": [ + "en", + "es", + "fr" + ] }, "page": { "type": "integer", - "description": "The page number of the results to retrieve. Must be a positive integer.", - "wireName": "page" + "description": "Page of reviews to return, ten reviews a page. The response reports the last available page in `pagination.totalPages`, the next one in `pagination.nextPage`, and how many reviews the current filters select in `pagination.totalResults`. Note that only reviews carrying written text are paginated, so the ceiling follows `reviewsInformation.totalReviews` rather than the larger `reviewsInformation.totalRatings`. Default is `1`.", + "wireName": "page", + "default": 1 + }, + "sort": { + "type": "string", + "description": "Order of the returned reviews, named as the Walmart review page names it. Default is `mostRelevant`.", + "wireName": "sort", + "default": "mostRelevant", + "enum": [ + "mostRelevant", + "mostRecent", + "mostHelpful", + "highestRated", + "lowestRated", + "oldest" + ] + }, + "rating": { + "type": "integer", + "description": "Return only reviews carrying this star rating, from `1` to `5`. The Star rating group of the `filters` block lists the ratings this item actually has, each with the `value` to send here and a `count` of how many reviews to expect.", + "wireName": "rating" + }, + "aspectId": { + "type": "string", + "description": "Return only reviews mentioning one topic. Send the `value` of the topic you want, taken from the Frequent mentions group of the `filters` block in the response - given `{\"name\": \"Battery Life\", \"value\": \"6049\", \"count\": 8}` you send `6049`, and `count` is how many reviews to expect. **Only one topic per request**, Walmart rejects a list of them. Topics belong to the product rather than to Walmart: a phone offers Battery Life or Display, a coffee offers Flavor or Aroma, and some items offer none at all - so make an unfiltered request first and read the block, instead of reusing a topic id across products.", + "wireName": "aspectId" + }, + "condition": { + "type": "string", + "description": "Return only reviews written about one condition of the item. Send the `value` from the Condition group of the `filters` block - given `{\"name\": \"Restored: Like New\", \"value\": \"5\"}` you send `5`. **Only one condition per request.** This group appears for items Walmart sells in several conditions, and only when the request already names one: reach the variant through the `url` parameter with its `conditionGroupCode`, as in `https://www.walmart.com/ip/1028936148?conditionGroupCode=2`, and the block then lists the condition that variant carries. An item sold in a single condition has no such group, and no reviews to separate by it.", + "wireName": "condition" + }, + "verifiedPurchasesOnly": { + "type": "boolean", + "description": "Return only reviews left by customers whose purchase Walmart confirmed. Narrows the pool considerably, since most reviews are unverified or syndicated from the manufacturer.", + "wireName": "verifiedPurchasesOnly" } } }, - "shopify-products": { - "slug": "shopify-products", - "title": "Shopify Products Scraper API", - "description": "The Shopify Products Scraper API allows users to retrieve product information from a Shopify store using the provided URL, with options to limit the results and filter by collection.", - "category": "Shopify", + "walmart-search": { + "slug": "walmart-search", + "title": "Walmart Search Scraper API", + "description": "The Walmart Search Scraper API allows users to get search results from Walmart based on the specified query, category and storefront. This API enables searching for products on Walmart.", + "category": "E-commerce", "method": "GET", - "path": "/scrape/shopify/products", - "cost": 5, - "required": [ - "url" - ], + "path": "/scrape/walmart/search", + "cost": 10, + "required": [], "properties": { - "url": { + "q": { "type": "string", - "description": "The URL of the Shopify store. For example, 'https://b2bdemoexperience.myshopify.com'.", - "wireName": "url", - "default": "https://b2bdemoexperience.myshopify.com" + "description": "The search term for which to get the search results. It can be omitted only when `catId` is provided, to browse a whole category instead of searching.", + "wireName": "q", + "default": "coffee" }, - "limit": { - "type": "integer", - "description": "The maximum number of products to retrieve. Must be between 1 and 250.", - "wireName": "limit", - "default": 1 + "catId": { + "type": "string", + "description": "Walmart category id, taken from a category URL (for example `976759_1086446_1229651`). Combine it with `q` to search inside a category, or send it alone to browse the whole category. Required unless `q` is provided.", + "wireName": "catId" + }, + "domain": { + "type": "string", + "description": "Walmart storefront to search. Each storefront has its own catalog, prices and currency. Default is `walmart.com`.", + "wireName": "domain", + "enum": [ + "walmart.com", + "walmart.ca" + ] + }, + "language": { + "type": "string", + "description": "Language of the results. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default.", + "wireName": "language", + "default": "en", + "enum": [ + "en", + "es", + "fr" + ] + }, + "sort": { + "type": "string", + "description": "The sorting option for the search results.", + "wireName": "sort", + "default": "bestMatch", + "enum": [ + "bestMatch", + "priceLowToHigh", + "priceHighToLow", + "bestseller", + "highlyRated", + "newArrivals" + ] + }, + "url": { + "type": "string", + "description": "A full Walmart search or category URL to scrape as is. When provided, it overrides `q`, `catId` and the other search parameters, and the storefront is taken from the URL itself.", + "wireName": "url" }, "page": { "type": "integer", - "description": "The page number of the results to retrieve. Must be a positive integer.", + "description": "Page number for pagination (e.g., `1` for the first page, `2` for the second page, etc.). Walmart stops serving results after roughly page 10, returning an empty page beyond that.", "wireName": "page" }, - "collection": { + "minPrice": { + "type": "number", + "description": "Lower bound of the price range, in the storefront currency.", + "wireName": "minPrice" + }, + "maxPrice": { + "type": "number", + "description": "Upper bound of the price range, in the storefront currency.", + "wireName": "maxPrice" + }, + "deliveryType": { "type": "string", - "description": "The handle of the collection to filter the products. Provide the collection handle as a string.", - "wireName": "collection" + "description": "Keep only the products available with the selected fulfillment method. Default is `shipping`. Note that `pickup` is answered against one Walmart store, so an item in stock nationally can still be unavailable for `pickup` nearby - the response then reports that nothing matched the filters rather than that the query had no results.", + "wireName": "deliveryType", + "default": "shipping", + "enum": [ + "shipping", + "pickup" + ] + }, + "facet": { + "type": "string", + "description": "Walmart filter in the `name:value` form, for example `brand:Great Value`. Every value available for a query is listed in the facets block of the response, each one carrying the exact string to send back here, so a first unfiltered request tells you what can be filtered on. To combine filters, put each one on its own line. The double-pipe form Walmart's own urls use `brand:Great Value||retailer_type:Walmart` is also accepted.", + "wireName": "facet", + "default": "brand:Great Value\nretailer_type:Walmart" } } }, "web-scraping": { "slug": "web-scraping", "title": "Web Scraping API", - "description": "If you're tired of fiddling with proxies, headless browsers and captchas, it's time to use Scrape-it.cloud. Send the desired URL and we'll return an HTML response. Work without headaches and worries about blocking.", + "description": "Web Scraping API allows you to scrape web pages without the hassle of managing proxies and headless browsers. Simply send the URL and get the HTML response in return.", "category": "Web Scraping", "method": "POST", "path": "/scrape/web", @@ -16474,6 +17954,124 @@ export const ENDPOINTS = { } } }, + "yelp-reviews": { + "slug": "yelp-reviews", + "title": "Yelp Reviews Scraper API", + "description": "The Yelp Reviews Scraper API allows users to retrieve the review feed of a specific place on Yelp, with filtering by rating, language and keyword.", + "category": "Business", + "method": "GET", + "path": "/scrape/yelp/reviews", + "cost": 10, + "required": [ + "placeId" + ], + "properties": { + "placeId": { + "type": "string", + "description": "The Yelp ID of the place. For example, '-4ofMtrD7pSpZIX5pnDkig'. Yelp IDs can be obtained from the Yelp Search Scraper API.", + "wireName": "placeId", + "default": "-4ofMtrD7pSpZIX5pnDkig" + }, + "domain": { + "type": "string", + "description": "Yelp domain to use. Default is `www.yelp.com`.", + "wireName": "domain", + "enum": [ + "www.yelp.com", + "www.yelp.co.uk", + "www.yelp.ca", + "www.yelp.com.au", + "ms.yelp.my", + "www.yelp.cz", + "www.yelp.dk", + "www.yelp.de", + "www.yelp.at", + "de.yelp.ch", + "en.yelp.be", + "en.yelp.com.hk", + "en.yelp.my", + "www.yelp.co.nz", + "en.yelp.com.ph", + "www.yelp.ie", + "www.yelp.com.sg", + "en.yelp.ch", + "www.yelp.com.ar", + "www.yelp.cl", + "www.yelp.es", + "www.yelp.com.mx", + "fil.yelp.com.ph", + "fr.yelp.be", + "fr.yelp.ca", + "www.yelp.fr", + "fr.yelp.ch", + "www.yelp.it", + "it.yelp.ch", + "nl.yelp.be", + "www.yelp.nl", + "www.yelp.no", + "www.yelp.pl", + "www.yelp.com.br", + "www.yelp.pt", + "fi.yelp.fi", + "sv.yelp.fi", + "www.yelp.com.tr", + "www.yelp.co.jp", + "zh.yelp.com.hk", + "www.yelp.com.tw" + ] + }, + "query": { + "type": "string", + "description": "Note: Yelp ignores the `rating` filter while searching, so a query returns matching reviews of every star rating. Free-text query to search within the reviews of the place.", + "wireName": "query" + }, + "sortBy": { + "type": "string", + "description": "The order in which the reviews are returned. Defaults to relevanceDesc.", + "wireName": "sortBy", + "enum": [ + "relevanceDesc", + "dateDesc", + "dateAsc", + "ratingDesc", + "ratingAsc", + "elitesDesc" + ] + }, + "rating": { + "type": "string", + "description": "Note: Yelp ignores this filter when `query` is set, so a search returns matching reviews of every star rating. Filters the reviews by star rating. Possible values are 5, 4, 3, 2 and 1. To return only five-star reviews, set it to `5`. To include several ratings, pass them comma-separated, for example `5,4,3`. When omitted, reviews with any rating are returned.", + "wireName": "rating", + "default": "5,4" + }, + "languageCode": { + "type": "string", + "description": "Language of the reviews to return, as a two-letter code (e.g., 'en', 'es', 'fr'). Defaults to en.", + "wireName": "languageCode", + "default": "en" + }, + "notRecommended": { + "type": "boolean", + "description": "Returns the reviews Yelp does not currently recommend (filtered out of the main feed by its recommendation software) instead of the recommended ones. These reviews carry no photos, videos or reactions, and are paginated ten at a time. Defaults to false.", + "wireName": "notRecommended" + }, + "start": { + "type": "integer", + "description": "Result offset for pagination. It skips the given number of reviews, so the step matches `num` (e.g., 0, 49, 98 for the recommended feed, or 0, 10, 20 when `notRecommended` is set). The response echoes it back as `pagination.start`. Cannot be combined with `nextPageToken`.", + "wireName": "start" + }, + "num": { + "type": "integer", + "description": "Number of reviews to return per page. The maximum is 49. Defaults to 49 for the recommended feed and to 10 when `notRecommended` is set. The response echoes it back as `pagination.num`.", + "wireName": "num" + }, + "nextPageToken": { + "type": "string", + "description": "Opaque cursor for the next page, taken verbatim from `pagination.nextPageToken` of the previous response. It carries both the offset and the page size, so passing it alone continues the feed where the last response ended. Keep the other filters (`sortBy`, `rating`, `languageCode`, `query`, `notRecommended`) identical across pages. Use either this or `start`, not both. Paginate until `pagination.hasNextPage` is false.", + "wireName": "nextPageToken" + } + } + }, "yelp-search": { "slug": "yelp-search", "title": "Yelp Search Scraper API", @@ -18038,7 +19636,7 @@ export const ENDPOINTS = { "slug": "zillow-listing", "title": "Zillow Listing Scraper API", "description": "The Zillow Listing Scraper API lets you retrieve property listings from Zillow.com based on various search parameters.", - "category": "Zillow", + "category": "Real Estate", "method": "GET", "path": "/scrape/zillow/listing", "cost": 5, @@ -18300,7 +19898,7 @@ export const ENDPOINTS = { }, "moveInDate": { "type": "string", - "description": "The desired move-in date.", + "description": "The desired move-in date in `YYYY-MM-DD` format.", "wireName": "moveInDate" }, "mustHaveGarage": { @@ -18329,7 +19927,7 @@ export const ENDPOINTS = { "slug": "zillow-property", "title": "Zillow Property Scraper API", "description": "The Zillow Property Scraper API lets you retrieve detailed information about a specific property on Zillow.com using its URL. It provides details such as property features, price, and agent contacts.", - "category": "Zillow", + "category": "Real Estate", "method": "GET", "path": "/scrape/zillow/property", "cost": 5,