diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c6a7d64..8488255 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,7 +28,7 @@ jobs: enable-cache: true - name: Install dependencies - run: uv sync --extra dev --frozen + run: uv sync --group dev --frozen - name: Run tests run: uv run pytest -q diff --git a/Dockerfile b/Dockerfile index 7dc242a..2f581da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,12 +6,11 @@ WORKDIR /app COPY pyproject.toml /app/ COPY uv.lock /app/uv.lock -COPY README.md /app/ COPY src /app/src COPY engines /app/engines COPY build-engines.py /app/build-engines.py -RUN uv sync --locked +RUN uv sync --locked --no-dev ENV PATH="/app/.venv/bin:$PATH" diff --git a/engines/amazon.json b/engines/amazon.json index b3fb9f1..bb71490 100644 --- a/engines/amazon.json +++ b/engines/amazon.json @@ -2,7 +2,7 @@ "engine": "amazon", "params": { "k": { - "description": "Parameter defines the query you want to search. You can use anything that you would use in a regular Amazon search.", + "description": "Parameter defines the query you want to search. You can use anything that you would use in a regular Amazon search. This parameter can't be used with the node parameter.", "group": "search_query" }, "amazon_domain": { @@ -354,16 +354,16 @@ "group": "advanced_amazon_parameters" }, "node": { - "description": "Parameter specifies the category for Amazon search results. You can find the appropriate node value by browsing Amazon’s website and accessing a specific category. The node ID is typically included in the URL after the format `node=[NODE ID]`. For example, on Amazon.com, the node for Smart Home is `6563140011`, and on Amazon.co.uk, the node for Fashion is `11961407031`. Use this node value to filter search results by category.", + "description": "Parameter specifies the category for Amazon search results. You can find the appropriate node value by browsing Amazon’s website and accessing a specific category. The node ID is typically included in the URL after the format `node=[NODE ID]`. For example, on Amazon.com, the node for Smart Home is `6563140011`, and on Amazon.co.uk, the node for Fashion is `11961407031`. Use this node value to filter search results by category. This parameter can't be used with the k parameter. Head to Amazon Category Nodes for a full list of supported Amazon Categories.", "group": "advanced_filters" }, "rh": { - "description": "Parameter defines items filtering based on their attributes. The structure is a list of `key:value` pairs separated by `,`. For example `n:16318031,p_n_cpf_eligible:21512497011,p_72:1248897011` to filter for products in **Coffee** department (`n:16318031`) that are **Climate Pledge Friendly** (`p_n_cpf_eligible:21512497011`) and rated **4 Stars & Up** (`p_72:1248897011`).", + "description": "Parameter defines items filtering based on their attributes. The structure is a list of `key:value` pairs separated by `,`. For example `n:16318031,p_n_cpf_eligible:21512497011,p_72:1248897011` to filter for products in **Coffee** department (`n:16318031`) that are **Climate Pledge Friendly** (`p_n_cpf_eligible:21512497011`) and rated **4 Stars & Up** (`p_72:1248897011`). Head to Amazon Category Nodes for a full list of supported Amazon Categories.", "group": "advanced_filters" }, "dc": { "type": "checkbox", - "description": "Activate spelling fix. `true` (default) includes spelling fix, `false` searches without spelling fix.", + "description": "Parameter defines the exclusion of results from an auto-corrected query when the original query is spelled wrong. It can be set to `true` to exclude these results, or `false` to include them (default).", "group": "advanced_filters" }, "page": { diff --git a/engines/amazon_product.json b/engines/amazon_product.json index 9553524..8e5383a 100644 --- a/engines/amazon_product.json +++ b/engines/amazon_product.json @@ -2,6 +2,7 @@ "engine": "amazon_product", "params": { "asin": { + "required": true, "description": "Parameter defines the Amazon Standard Identification Number (ASIN) of the product you want to retrieve. This is a unique identifier assigned to each product on Amazon.", "group": "search_query" }, diff --git a/engines/apple_maps.json b/engines/apple_maps.json new file mode 100644 index 0000000..405d534 --- /dev/null +++ b/engines/apple_maps.json @@ -0,0 +1,136 @@ +{ + "engine": "apple_maps", + "params": { + "query": { + "required": true, + "description": "Parameter defines the query you want to search. You can use anything that you would use in a regular Apple Maps search.", + "group": "search_query" + }, + "center": { + "description": "Parameter defines coordinates of the center point of the region you want to search within. You can pass the coordinates as `latitude,longitude`. (e.g. `30.324639,-97.7304611` for Austin, TX). Either a center or a location parameter is required. These parameters can't be used together.", + "group": "geographic_location" + }, + "span": { + "description": "Parameter defines width and height of the search region as `latitudeDelta,longitudeDelta`. Smaller delta values correspond to a higher zoom level. (defaults to `0.5,0.5`).", + "group": "geographic_location" + }, + "location": { + "type": "location", + "description": "Parameter defines the GPS coordinates used for the search origin. (e.g. `Austin, Texas, United States`). Either a center or a location parameter is required. These parameters can't be used together.", + "group": "geographic_location" + }, + "sort": { + "type": "select", + "options": [ + "default", + "distance", + "ratings" + ], + "description": "Parameter defines the sorting refinement for the search. Can be one of the following: `distance` - Sort by distance from the `center`/`location`. `ratings` - Sort by result ratings. `default` - Sort by best match for your query. This is the default.", + "group": "refinement" + }, + "toggles": { + "description": "Parameter defines the toggle options for the search. A comma separated list of toggle `key` values can be passed to this parameter. See the `refinements.toggles` object of the response to see available toggles for a search.", + "group": "refinement" + }, + "multi_select_options": { + "description": "Parameter defines the options you want to filter by for multi select refinements. A comma separated list of toggle `key` values can be passed to this parameter. See the `refinement.multi_select..options` object of the response to see available multi select refinements for the search.", + "group": "refinement" + }, + "open_at": { + "type": "number", + "description": "Parameter defines the time at which result locations should be open at. The value must be a Unix timestamp that is in the future, and no more than 24 hours from the current time. (e.g. `1784657409`).", + "group": "refinement" + }, + "locale": { + "type": "select", + "options": [ + "ar-SA", + "bn-BD", + "ca-ES", + "cs-CZ", + "da-DK", + "de-DE", + "el-GR", + "en-AU", + "en-GB", + "en-US", + "es-ES", + "es-MX", + "fi-FI", + "fr-CA", + "fr-FR", + "gu-IN", + "he-IL", + "hi-IN", + "hr-HR", + "hu-HU", + "id-ID", + "it-IT", + "ja-JP", + "kn-IN", + "ko-KR", + "ml-IN", + "mr-IN", + "ms-MY", + "nb-NO", + "nl-NL", + "or-IN", + "pa-IN", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sk-SK", + "sl-SI", + "sv-SE", + "ta-IN", + "te-IN", + "th-TH", + "tr-TR", + "uk-UA", + "ur-PK", + "vi-VN", + "zh-CN", + "zh-HK", + "zh-TW" + ], + "description": "Parameter defines the locale the results should be localized for. Locales for Apple Maps are represented as `-`. (defaults to `en-US`, the locale for U.S. English). Head to Apple Maps Locales for the list of available locales.", + "group": "localization" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `apple_maps` to use the Apple Maps API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Apple Maps results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/apple_maps_places.json b/engines/apple_maps_places.json new file mode 100644 index 0000000..5dac1ae --- /dev/null +++ b/engines/apple_maps_places.json @@ -0,0 +1,100 @@ +{ + "engine": "apple_maps_places", + "params": { + "muid": { + "required": true, + "description": "Parameter defines the MUID of the place you want to search. You can use the MUID from the Apple Maps Places API response. (e.g. `18366846785603624515` for London). You can also pass multiple MUIDs separated by commas (e.g., `18366846785603624515,11018610862491969006` to get London and Austin). Upto 50 MUIDs can be fetched in a single request.", + "group": "search_query" + }, + "locale": { + "type": "select", + "options": [ + "ar-SA", + "bn-BD", + "ca-ES", + "cs-CZ", + "da-DK", + "de-DE", + "el-GR", + "en-AU", + "en-GB", + "en-US", + "es-ES", + "es-MX", + "fi-FI", + "fr-CA", + "fr-FR", + "gu-IN", + "he-IL", + "hi-IN", + "hr-HR", + "hu-HU", + "id-ID", + "it-IT", + "ja-JP", + "kn-IN", + "ko-KR", + "ml-IN", + "mr-IN", + "ms-MY", + "nb-NO", + "nl-NL", + "or-IN", + "pa-IN", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sk-SK", + "sl-SI", + "sv-SE", + "ta-IN", + "te-IN", + "th-TH", + "tr-TR", + "uk-UA", + "ur-PK", + "vi-VN", + "zh-CN", + "zh-HK", + "zh-TW" + ], + "description": "Parameter defines the locale the results should be localized for. Locales for Apple Maps are represented as `-`. (defaults to `en-US`, the locale for U.S. English). Head to Apple Maps Locales for the list of available locales.", + "group": "localization" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `apple_maps_places` to use the Apple Maps Places API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Apple Maps Places results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/baidu.json b/engines/baidu.json index 4418dad..263ae60 100644 --- a/engines/baidu.json +++ b/engines/baidu.json @@ -36,7 +36,7 @@ "group": "pagination" }, "gpc": { - "description": "Parameter defines the time period for results. (e.g., `stf=1767797961,1768402761|stftype=1` only returns results from the past 7 days. First integer within the parameter,`1767797961` is Unix Timestamp for 7 days ago. Second integer,`1768402761` is Unix Timestamp for now.).", + "description": "Parameter defines the time period for results. (e.g., `stf=1784016609,1784621409|stftype=1` only returns results from the past 7 days. First integer within the parameter,`1784016609` is Unix Timestamp for 7 days ago. Second integer,`1784621409` is Unix Timestamp for now.).", "group": "advanced_filters" }, "q5": { diff --git a/engines/bing.json b/engines/bing.json index 4f47b03..bc4d62d 100644 --- a/engines/bing.json +++ b/engines/bing.json @@ -117,9 +117,9 @@ "safeSearch": { "type": "select", "options": [ - "off", + "strict", "moderate", - "strict" + "off" ], "description": "Parameter defines the level of filtering for adult content. It can be set to: `Off` to return webpages with adult text, images, or videos. `Moderate` to return webpages with adult text, but not adult images or videos. `Strict` to not return webpages with adult text, images, or videos.", "group": "advanced_filters" diff --git a/engines/bing_images.json b/engines/bing_images.json index ee1f236..c3acb8a 100644 --- a/engines/bing_images.json +++ b/engines/bing_images.json @@ -192,6 +192,16 @@ ], "description": "Parameter is used for filtering images by license. It can be set to: `Type-Any` - All Creative Commons `L1` - Public Domain `L2_L3_L4_L5_L6_L7` - Free to share and use `L2_L3_L4` - Free to share and use commercially `L2_L3_L5_L6` - Free to modify, share and use `L2_L3` - Free to modify, share, and use commercially", "group": "advanced_bing_images_parameters" + }, + "safeSearch": { + "type": "select", + "options": [ + "strict", + "moderate", + "off" + ], + "description": "Parameter defines the level of filtering for adult content. It can be set to: `strict` - Strict `moderate` - Moderate (Default) `off` - Off", + "group": "advanced_bing_images_parameters" } }, "common_params": { diff --git a/engines/bing_news.json b/engines/bing_news.json index 3197958..030a1b4 100644 --- a/engines/bing_news.json +++ b/engines/bing_news.json @@ -117,9 +117,9 @@ "safeSearch": { "type": "select", "options": [ - "off", + "strict", "moderate", - "strict" + "off" ], "description": "Parameter defines the level of filtering for adult content. It can be set to: `Off` to return webpages with adult text, images, or videos. `Moderate` to return webpages with adult text, but not adult images or videos. `Strict` to not return webpages with adult text, images, or videos.", "group": "advanced_filters" diff --git a/engines/brave_ai_mode.json b/engines/brave_ai_mode.json new file mode 100644 index 0000000..2e0a2d0 --- /dev/null +++ b/engines/brave_ai_mode.json @@ -0,0 +1,176 @@ +{ + "engine": "brave_ai_mode", + "params": { + "q": { + "required": true, + "description": "Parameter defines the query you want to search.", + "group": "search_query" + }, + "location": { + "type": "location", + "description": "Parameter defines from where you want the search to originate. If several locations match the location requested, we'll pick the most popular one. Head to the /locations.json API if you need more precise control. It is recommended to specify location at the city level in order to simulate a real user’s search. If location is omitted, the search may take on the location of the proxy. Parameter can't be used with lat or lon parameters.", + "group": "geographic_location" + }, + "lat": { + "type": "number", + "description": "Parameter defines a GPS latitude for the search origin. Parameter is required when using lon parameter. Parameter can't be used with location parameter.", + "group": "geographic_location" + }, + "lon": { + "type": "number", + "description": "Parameter defines a GPS longitude for the search origin. Parameter is required when using lat parameter. Parameter can't be used with location parameter.", + "group": "geographic_location" + }, + "country": { + "type": "select", + "options": [ + "ar", + "au", + "at", + "be", + "br", + "ca", + "cl", + "cn", + "dk", + "fi", + "fr", + "de", + "gr", + "hk", + "in", + "id", + "it", + "jp", + "kr", + "my", + "mx", + "nl", + "nz", + "no", + "pl", + "pt", + "ph", + "ru", + "sa", + "sg", + "za", + "es", + "se", + "ch", + "tw", + "tr", + "gb", + "us" + ], + "description": "Parameter defines the country to use for the Brave AI search. It's a two-letter country code. (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France). Head to the Brave countries page for a full list of supported Brave AI Mode countries.", + "group": "localization" + }, + "language": { + "type": "select", + "options": [ + "az", + "bg", + "br", + "ca", + "cs", + "cy", + "da", + "de", + "el", + "en", + "es", + "et", + "eu", + "fi", + "fr", + "gl", + "hr", + "hu", + "id", + "it", + "ja", + "ka", + "ko", + "lt", + "lv", + "ms", + "nb", + "nl", + "pl", + "pt", + "ro", + "ru", + "sk", + "sl", + "sq", + "sr", + "sv", + "sw", + "th", + "tr", + "uk", + "vi", + "zh" + ], + "description": "Parameter defines the language to use for the Brave AI search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Brave languages page for a full list of supported Brave AI Mode languages.", + "group": "localization" + }, + "safeSearch": { + "type": "select", + "options": [ + "off", + "moderate", + "strict" + ], + "description": "Parameter defines the level of filtering for adult content. It can be set to: `off` - Off `moderate` - Moderate `strict` - Strict", + "group": "advanced_filters" + }, + "units_of_measurement": { + "type": "select", + "options": [ + "metric", + "us" + ], + "description": "Parameter defines the units of measurement to use. It can be set to: `metric` - Metric `us` - Imperial (US)", + "group": "advanced_filters" + }, + "subsequent_request_token": { + "description": "Parameter defines the token used to continue a Brave AI Mode conversation. Pass this token to send a follow-up question that includes the prior exchange as context (multi-turn). The token is returned by SerpApi from your previous request using our Brave AI Mode API. When using this token, include a new q for your follow-up prompt. For consistent behavior, reuse the same localization settings (gl, hl, and location) you used to obtain the token.", + "group": "subsequent_request" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `brave_ai_mode` to use the Brave AI Mode API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Brave AI Mode results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/duckduckgo.json b/engines/duckduckgo.json index 1dacb64..a9036d4 100644 --- a/engines/duckduckgo.json +++ b/engines/duckduckgo.json @@ -77,6 +77,11 @@ "description": "Parameter defines the region to use for the DuckDuckGo search. Region code examples: `us-en` for the United States, `uk-en` for United Kingdom, or `fr-fr` for France. Head to the DuckDuckGo regions for a full list of supported regions.", "group": "localization" }, + "search_assist": { + "type": "checkbox", + "description": "Parameter determines if DuckDuckGo's AI Search Assist will be returned in the response. It can be set to `true` or `false` (default). search\\_assist and m can't be used together.", + "group": "advanced_parameters" + }, "safe": { "type": "select", "options": [ @@ -101,7 +106,7 @@ }, "m": { "type": "number", - "description": "Parameter defines the maximum number of results to return. Default value:`50` Min. value:`1` Max. value:`50` When offset is not being used (initial search request, start parameter is set to 0 or left blank), up to 35 `organic_results` can be returned. DuckDuckGo may return duplicated results or a variable number of results. This is more likely to happen with higher start and m parameters.", + "description": "Parameter defines the maximum number of results to return. Default value:`50` Min. value:`1` Max. value:`50` When offset is not being used (initial search request, start parameter is set to 0 or left blank), up to 35 `organic_results` can be returned. DuckDuckGo may return duplicated results or a variable number of results. This is more likely to happen with higher start and m parameters. m and search\\_assist can't be used together.", "group": "pagination" } }, diff --git a/engines/ebay.json b/engines/ebay.json index 1a1bd6e..84ac5ef 100644 --- a/engines/ebay.json +++ b/engines/ebay.json @@ -19,7 +19,6 @@ "ebay.it", "ebay.com.my", "ebay.nl", - "ebay.ph", "ebay.pl", "ebay.com.sg", "ebay.es", @@ -972,6 +971,29 @@ "description": "Parameter defines the buying format you can apply to the results. Available options **(case-sensitive)**: `Auction` - Auction `BIN` - Buy It Now `BO` - Accepts Offers", "group": "advanced_filters" }, + "_sasl": { + "description": "Parameter defines the seller username(s) to filter results by. You can specify multiple sellers separated by commas (e.g. `iRobot,samsung`). Use with `_saslop` to control whether to include or exclude items from the specified seller(s).", + "group": "advanced_filters" + }, + "_saslop": { + "type": "select", + "options": [ + [ + "1", + "Only show items from sellers (default)" + ], + [ + "2", + "Don't show items from sellers" + ] + ], + "description": "Parameter defines whether to include or exclude items from the seller(s) specified in `_sasl`. Available options: `1` - Only show items from sellers (default) `2` - Don't show items from sellers", + "group": "advanced_filters" + }, + "popular_filters": { + "description": "Parameter allows filtering items based on their attributes. The structure is a list of `key=value` pairs separated by `&` (e.g. `Brand=Nespresso&Size=L`). To pass multiple values for the same filter, join them with `|` (e.g. `Brand=adidas|Majestic`). Values can be obtained from the `popular_filters[].parameter` field of the API response.", + "group": "advanced_filters" + }, "_udlo": { "type": "number", "description": "Parameter defines the lowest price of items that should be included in the results (e.g. `10` will only return items that have higher price than `10`).", @@ -1079,12 +1101,12 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `ebay` to use the Ebay API engine.", + "description": "Set parameter to `ebay` to use the eBay API engine.", "group": "serpapi_parameters" }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Ebay results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the eBay results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/ebay_product.json b/engines/ebay_product.json index d765cbb..2475f97 100644 --- a/engines/ebay_product.json +++ b/engines/ebay_product.json @@ -19,7 +19,6 @@ "ebay.it", "ebay.com.my", "ebay.nl", - "ebay.ph", "ebay.pl", "ebay.com.sg", "ebay.es", @@ -506,12 +505,12 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `ebay_product` to use the Ebay Product API engine.", + "description": "Set parameter to `ebay_product` to use the eBay Product API engine.", "group": "serpapi_parameters" }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Ebay Product results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the eBay Product results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/google.json b/engines/google.json index 5f3e22b..41e7094 100644 --- a/engines/google.json +++ b/engines/google.json @@ -8,11 +8,26 @@ }, "location": { "type": "location", - "description": "Parameter defines from where you want the search to originate. If several locations match the location requested, we'll pick the most popular one. Head to the /locations.json API if you need more precise control. The location and uule parameters can't be used together. It is recommended to specify location at the city level in order to simulate a real user’s search. If location is omitted, the search may take on the location of the proxy. When only the location parameter is set, Google may still take into account the proxy’s country, which can influence some results. For more consistent country-specific filtering, use the gl parameter alongside location.", + "description": "Parameter defines from where you want the search to originate. If several locations match the location requested, we'll pick the most popular one. Head to the /locations.json API if you need more precise control. It is recommended to specify location at the city level in order to simulate a real user’s search. If location is omitted, the search may take on the location of the proxy. When only the location parameter is set, Google may still take into account the proxy’s country, which can influence some results. For more consistent country-specific filtering, use the gl parameter alongside location. Parameter can't be used together with uule, lat, and lon parameters.", "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", + "group": "geographic_location" + }, + "lat": { + "type": "number", + "description": "Parameter defines a GPS latitude for the search origin. Parameter is required when using lon parameter. For consistent results, a matching gl parameter is required. Parameter can't be used together with location and uule parameters.", + "group": "geographic_location" + }, + "lon": { + "type": "number", + "description": "Parameter defines a GPS longitude for the search origin. Parameter is required when using lat parameter. For consistent results, a matching gl parameter is required. Parameter can't be used together with location and uule parameters.", + "group": "geographic_location" + }, + "radius": { + "type": "number", + "description": "Parameter defines the distance (in meters) within which to bias the search results. Results inside of this region will be ranked higher than results outside of it. However, prominent results from outside of the search radius may still be included. Value range per device: - Desktop: `1..199` - Tablet: `1..1000` - Mobile: `1..1000` Parameter can be used alongside location or lat/lon parameters. When parameter is paired with location, its center point coordinates are used for the search.", "group": "geographic_location" }, "ludocid": { @@ -39,6 +54,15 @@ "description": "Parameter enables to filter search. It's a string provided by Google as a filter. `uds` values are provided under the section: `filters` with `uds`, `q` and `serpapi_link` values provided for each filter.", "group": "advanced_google_parameters" }, + "color_scheme": { + "type": "select", + "options": [ + "light", + "dark" + ], + "description": "Parameter forces the selected color scheme to be used on the results page. If the parameter is not set, a random color scheme will be returned. Options: `light` - Light `dark` - Dark", + "group": "advanced_google_parameters" + }, "google_domain": { "type": "select", "options": [ @@ -731,7 +755,7 @@ "vid", "pts" ], - "description": "(to be matched) parameter defines the type of search you want to do. It can be set to: `(no tbm parameter)`: regular Google Search, `isch`: Google Images API, `lcl` - Google Local API `vid`: Google Videos API, `nws`: Google News API, `shop`: Google Shopping API, `pts`: Google Patents API, or any other Google service.", + "description": "(to be matched) parameter defines the type of search you want to do. It can be set to: `(no tbm parameter)`: regular Google Search, `isch`: Google Images API, `lcl`: Google Local API, `vid`: Google Videos API, `nws`: Google News API, `shop`: Google Shopping API, `pts`: Google Patents API, or any other Google service.", "group": "search_type" }, "start": { diff --git a/engines/google_about_this_result.json b/engines/google_about_this_result.json index c27f6d8..e030d2c 100644 --- a/engines/google_about_this_result.json +++ b/engines/google_about_this_result.json @@ -3,7 +3,7 @@ "params": { "q": { "required": true, - "description": "Parameter defines the URL of a website which results you what to show. Value should be formatted in the next order: `About URL` (e.g. `About https://www.starbucks.com/`)", + "description": "Parameter defines the URL of a website which results you what to show. Value should be formatted as: `URL` (e.g. `https://www.starbucks.com/`)", "group": "search_query" }, "google_domain": { @@ -198,6 +198,421 @@ "description": "Parameter defines the Google domain to use. It defaults to `google.com`. Head to the Google domains page for a full list of supported Google domains.", "group": "localization" }, + "gl": { + "type": "select", + "options": [ + "af", + "al", + "dz", + "as", + "ad", + "ao", + "ai", + "aq", + "ag", + "ar", + "am", + "aw", + "au", + "at", + "az", + "bs", + "bh", + "bd", + "bb", + "by", + "be", + "bz", + "bj", + "bm", + "bt", + "bo", + "ba", + "bw", + "bv", + "br", + "io", + "bn", + "bg", + "bf", + "bi", + "kh", + "cm", + "ca", + "cv", + "ky", + "cf", + "td", + "cl", + "cn", + "cx", + "cc", + "co", + "km", + "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", + "de", + "gh", + "gi", + "gr", + "gl", + "gd", + "gp", + "gu", + "gt", + "gg", + "gn", + "gw", + "gy", + "ht", + "hm", + "va", + "hn", + "hk", + "hu", + "is", + "in", + "id", + "ir", + "iq", + "ie", + "im", + "il", + "it", + "je", + "jm", + "jp", + "jo", + "kz", + "ke", + "ki", + "kp", + "kr", + "kw", + "kg", + "la", + "lv", + "lb", + "ls", + "lr", + "ly", + "li", + "lt", + "lu", + "mo", + "mk", + "mg", + "mw", + "my", + "mv", + "ml", + "mt", + "mh", + "mq", + "mr", + "mu", + "yt", + "mx", + "fm", + "md", + "mc", + "mn", + "me", + "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" + ], + "description": "Parameter defines the country to use for the Google About This Result search. It's a two-letter country code. (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France) Head to the Google countries page for a full list of supported Google countries.", + "group": "localization" + }, + "hl": { + "type": "select", + "options": [ + "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", + "co", + "hr", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", + "et", + "ee", + "fo", + "tl", + "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", + "ms", + "ml", + "mt", + "mv", + "mi", + "mr", + "mfe", + "mo", + "mn", + "sr-me", + "my", + "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" + ], + "description": "Parameter defines the language to use for the Google About This Result search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", + "group": "localization" + }, "ilps": { "description": "Parameter defines unique ID of a website which results you what to show.", "group": "advanced_about_this_result_parameters" diff --git a/engines/google_ads.json b/engines/google_ads.json new file mode 100644 index 0000000..8d05d95 --- /dev/null +++ b/engines/google_ads.json @@ -0,0 +1,237 @@ +{ + "engine": "google_ads", + "params": { + "q": { + "required": true, + "description": "Parameter defines the query you want to search. You can use anything that you would use in a regular Google search. e.g. `inurl:`, `site:`, `intitle:`.", + "group": "search_query" + }, + "location": { + "type": "location", + "required": true, + "description": "Parameter defines from where you want the search to originate. If several locations match the location requested, we'll pick the most popular one. Head to the /locations.json API if you need more precise control.", + "group": "geographic_location" + }, + "hl": { + "type": "select", + "options": [ + "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", + "co", + "hr", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", + "et", + "ee", + "fo", + "tl", + "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", + "ms", + "ml", + "mt", + "mv", + "mi", + "mr", + "mfe", + "mo", + "mn", + "sr-me", + "my", + "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" + ], + "description": "Parameter defines the language to use for the Google search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", + "group": "localization" + }, + "safe": { + "type": "select", + "options": [ + "active", + "off" + ], + "description": "Parameter defines the level of filtering for adult content. It can be set to `active` or `off`, by default Google will blur explicit content.", + "group": "advanced_filters" + }, + "nfpr": { + "type": "checkbox", + "description": "Parameter defines the exclusion of results from an auto-corrected query when the original query is spelled wrong. It can be set to `1` to exclude these results, or `0` to include them (default). Note that this parameter may not prevent Google from returning results for an auto-corrected query if no other results are available.", + "group": "advanced_filters" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `google_ads` to use the Google Ads API engine.", + "group": "serpapi_parameters" + }, + "device": { + "type": "device", + "options": [ + "desktop", + "tablet", + "mobile" + ], + "description": "Parameter defines the device to use to get the results. It can be set to `desktop` (default) to use a regular browser, `tablet` to use a tablet browser (currently using iPads), or `mobile` to use a mobile browser.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Google Ads results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/google_ai_mode.json b/engines/google_ai_mode.json index e156853..ec1acc4 100644 --- a/engines/google_ai_mode.json +++ b/engines/google_ai_mode.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "gl": { @@ -430,15 +430,24 @@ "description": "Parameter defines the language to use for the Google search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", "group": "localization" }, + "continuable": { + "type": "checkbox", + "description": "Set parameter to `true` to make the conversation continuable. It defaults to `false`. When set to `true`, SerpApi will return a subsequent\\_request\\_token in the response which can be used to continue the conversation with a follow-up question that includes the prior exchange as context (multi-turn).", + "group": "subsequent_request" + }, "subsequent_request_token": { "description": "Parameter defines the token used to continue a Google AI Mode conversation. Pass this token to send a follow-up question that includes the prior exchange as context (multi-turn). The token is returned by SerpApi from your previous request using our Google AI Mode API. When using this token, include a new q for your follow-up prompt. For consistent behavior, reuse the same localization settings (gl, hl, and location) you used to obtain the token.", "group": "subsequent_request" + }, + "image_url": { + "description": "Parameter defines the URL of an image to include in the prompt. The image will be used as additional context for the AI to generate a response.", + "group": "advanced_parameters" } }, "common_params": { "engine": { "required": true, - "description": "Set parameter to `google_ai_mode` to use the Google Ai Mode API engine.", + "description": "Set parameter to `google_ai_mode` to use the Google AI Mode API engine.", "group": "serpapi_parameters" }, "device": { @@ -453,7 +462,7 @@ }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Google Ai Mode results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the Google AI Mode results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/google_events.json b/engines/google_events.json index 5b1847b..1f3407e 100644 --- a/engines/google_events.json +++ b/engines/google_events.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "gl": { diff --git a/engines/google_finance_markets.json b/engines/google_finance_markets.json index 903c1ba..4539efc 100644 --- a/engines/google_finance_markets.json +++ b/engines/google_finance_markets.json @@ -4,16 +4,10 @@ "trend": { "type": "select", "options": [ - "indexes", - "most-active", - "gainers", - "losers", - "climate-leaders", - "cryptocurrencies", - "currencies" + "indexes" ], "required": true, - "description": "Parameter is used for retrieving different market trends. Available options: `indexes` - Market indexes `most-active` - Most active `gainers` - Gainers `losers` - Losers `climate-leaders` - Climate leaders `cryptocurrencies` - Crypto `currencies` - Currencies", + "description": "Parameter is used for retrieving different market trends. Due to a recent Google Finance update, this parameter now only accepts `indexes` as a valid value.", "group": "search_query" }, "hl": { @@ -430,16 +424,6 @@ ], "description": "Parameter defines the country to use for the Google Finance Markets search. It's a two-letter country code. (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France). Head to the Google countries page for a full list of supported Google countries.", "group": "localization" - }, - "index_market": { - "type": "select", - "options": [ - "americas", - "europe-middle-east-africa", - "asia-pacific" - ], - "description": "Parameter is used for expanding market indexes by region and retrieving more results. Available options: `americas` - Americas `europe-middle-east-africa` - Europe, Middle East, and Africa `asia-pacific` - Asia Pacific Parameter can be used only when trend parameter is set to: `indexes`.", - "group": "advanced_google_finance_parameters" } }, "common_params": { diff --git a/engines/google_flights.json b/engines/google_flights.json index b88f203..fd78855 100644 --- a/engines/google_flights.json +++ b/engines/google_flights.json @@ -2,11 +2,11 @@ "engine": "google_flights", "params": { "departure_id": { - "description": "Parameter defines the departure airport code or location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple departure airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", + "description": "Parameter defines the departure airport code or location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/` or `/g/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple departure airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", "group": "search_query" }, "arrival_id": { - "description": "Parameter defines the arrival airport code or location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple arrival airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", + "description": "Parameter defines the arrival airport code or location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/` or `/g/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple arrival airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", "group": "search_query" }, "gl": { @@ -522,11 +522,11 @@ "group": "advanced_google_flights_parameters" }, "outbound_date": { - "description": "Parameter defines the outbound date. The format is YYYY-MM-DD. e.g. `2026-01-15`", + "description": "Parameter defines the outbound date. The format is YYYY-MM-DD. e.g. `2026-07-22`", "group": "advanced_google_flights_parameters" }, "return_date": { - "description": "Parameter defines the return date. The format is YYYY-MM-DD. e.g. `2026-01-21` Parameter is required if type parameter is set to: `1` (Round trip)", + "description": "Parameter defines the return date. The format is YYYY-MM-DD. e.g. `2026-07-28` Parameter is required if type parameter is set to: `1` (Round trip)", "group": "advanced_google_flights_parameters" }, "travel_class": { @@ -553,12 +553,12 @@ "group": "advanced_google_flights_parameters" }, "multi_city_json": { - "description": "Parameter defines the flight information for multi-city flights. It's a JSON string containing multiple flight information objects. Each object should contain the following fields: `departure_id` - The departure airport code or location kgmid. The format is the same as the main departure\\_id parameter. `arrival_id` - The arrival airport code or location kgmid. The format is the same as the main arrival\\_id parameter. `date` - Flight date. The format is the same as the outbound\\_date parameter. `times` - Time range for the flight. The format is the same as the outbound\\_times parameter. This parameter is optional. Example: `[{\"departure_id\":\"CDG\",\"arrival_id\":\"NRT\",\"date\":\"2026-01-21\"},{\"departure_id\":\"NRT\",\"arrival_id\":\"LAX,SEA\",\"date\":\"2026-01-28\"},{\"departure_id\":\"LAX,SEA\",\"arrival_id\":\"AUS\",\"date\":\"2026-02-04\",\"times\":\"8,18,9,23\"}]` The example is a multi-city flight from `CDG` to `NRT` on `2026-01-21`, then from `NRT` to `LAX` or `SEA` on `2026-01-28`, and finally from `LAX` or `SEA` to `AUS` on `2026-02-04`. The last flight has a departure time range from 8:00 AM to 7:00 PM and an arrival time range from 9:00 AM to 12:00 AM (Midnight).", + "description": "Parameter defines the flight information for multi-city flights. It's a JSON string containing multiple flight information objects. Each object should contain the following fields: `departure_id` - The departure airport code or location kgmid. The format is the same as the main departure\\_id parameter. `arrival_id` - The arrival airport code or location kgmid. The format is the same as the main arrival\\_id parameter. `date` - Flight date. The format is the same as the outbound\\_date parameter. `times` - Time range for the flight. The format is the same as the outbound\\_times parameter. This parameter is optional. Example: `[{\"departure_id\":\"CDG\",\"arrival_id\":\"NRT\",\"date\":\"2026-07-28\"},{\"departure_id\":\"NRT\",\"arrival_id\":\"LAX,SEA\",\"date\":\"2026-08-04\"},{\"departure_id\":\"LAX,SEA\",\"arrival_id\":\"AUS\",\"date\":\"2026-08-11\",\"times\":\"8,18,9,23\"}]` The example is a multi-city flight from `CDG` to `NRT` on `2026-07-28`, then from `NRT` to `LAX` or `SEA` on `2026-08-04`, and finally from `LAX` or `SEA` to `AUS` on `2026-08-11`. The last flight has a departure time range from 8:00 AM to 7:00 PM and an arrival time range from 9:00 AM to 12:00 AM (Midnight).", "group": "advanced_google_flights_parameters" }, "show_hidden": { "type": "checkbox", - "description": "Set to `true` to include the hidden flight results. Default to `false`.", + "description": "Set to `true` to include the hidden flight results. This is equivalent to clicking 'View more flights' on Google Flights. Default to `false`.", "group": "advanced_google_flights_parameters" }, "exclude_basic": { @@ -692,9 +692,13 @@ }, "max_duration": { "type": "number", - "description": "Parameter defines the maximum flight duration, in minutes. For example, specify `1500` for 25 hours.", + "description": "Parameter defines the maximum flight duration, in minutes. For example, specify `1500` for 25 hours. If your search returns no results, try increasing your max\\_duration by up to `200` minutes to account for route-specific scheduling variances.", "group": "advanced_filters" }, + "selected_flights_json": { + "description": "Parameter pins the itinerary to specific flights, segment by segment. It's a JSON object with an `outbound` key (required) and a `return` key (required for round-trip, forbidden for one-way). Each value is an ordered array of flight segment objects, each containing: `flight_number` - IATA flight number (2-character airline code + 1–4 digits, e.g. `BA591`). `departure_id` - 3-letter IATA airport code for that segment's departure. `arrival_id` - 3-letter IATA airport code for that segment's arrival. `date` - Departure date of that segment, `YYYY-MM-DD`. Within a leg, each segment's `departure_id` must equal the previous segment's `arrival_id`, and dates must be non-decreasing. Example (round-trip `MXP → LHR → MAD` outbound, `MAD → MXP` nonstop return): `{\"outbound\":[{\"flight_number\":\"BA591\",\"departure_id\":\"MXP\",\"arrival_id\":\"LHR\",\"date\":\"2026-07-22\"},{\"flight_number\":\"BA460\",\"departure_id\":\"LHR\",\"arrival_id\":\"MAD\",\"date\":\"2026-07-22\"}],\"return\":[{\"flight_number\":\"IB675\",\"departure_id\":\"MAD\",\"arrival_id\":\"MXP\",\"date\":\"2026-07-28\"}]}` When this parameter is provided, the top-level departure\\_id, arrival\\_id, outbound\\_date and return\\_date are optional and derived from the first/last segments of each leg. If supplied, they must match. Cannot be used together with departure\\_token, booking\\_token, or multi\\_city\\_json (`type` = 3).", + "group": "selected_flights" + }, "departure_token": { "description": "Parameter is used to select the flight and get returning flights (for Round trip) or flights for the next leg of itinerary (for Multi-city). Find this token in the departure flight results. It cannot be used together with booking\\_token.", "group": "next_flights" diff --git a/engines/google_flights_deals.json b/engines/google_flights_deals.json new file mode 100644 index 0000000..e7e2762 --- /dev/null +++ b/engines/google_flights_deals.json @@ -0,0 +1,665 @@ +{ + "engine": "google_flights_deals", + "params": { + "departure_id": { + "description": "Parameter defines the departure airport code or location kgmid. An airport code is an uppercase 3-letter code. You can search for it using our Google Flights Autocomplete API or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/` or `/g/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple departure airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", + "group": "search_query" + }, + "gl": { + "type": "select", + "options": [ + "af", + "al", + "dz", + "as", + "ad", + "ao", + "ai", + "aq", + "ag", + "ar", + "am", + "aw", + "au", + "at", + "az", + "bs", + "bh", + "bd", + "bb", + "by", + "be", + "bz", + "bj", + "bm", + "bt", + "bo", + "ba", + "bw", + "bv", + "br", + "io", + "bn", + "bg", + "bf", + "bi", + "kh", + "cm", + "ca", + "cv", + "ky", + "cf", + "td", + "cl", + "cn", + "cx", + "cc", + "co", + "km", + "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", + "de", + "gh", + "gi", + "gr", + "gl", + "gd", + "gp", + "gu", + "gt", + "gg", + "gn", + "gw", + "gy", + "ht", + "hm", + "va", + "hn", + "hk", + "hu", + "is", + "in", + "id", + "ir", + "iq", + "ie", + "im", + "il", + "it", + "je", + "jm", + "jp", + "jo", + "kz", + "ke", + "ki", + "kp", + "kr", + "kw", + "kg", + "la", + "lv", + "lb", + "ls", + "lr", + "ly", + "li", + "lt", + "lu", + "mo", + "mk", + "mg", + "mw", + "my", + "mv", + "ml", + "mt", + "mh", + "mq", + "mr", + "mu", + "yt", + "mx", + "fm", + "md", + "mc", + "mn", + "me", + "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" + ], + "description": "Parameter defines the country to use for the Google Flights Deals search. It's a two-letter country code. (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France) Head to the Google countries page for a full list of supported Google countries.", + "group": "localization" + }, + "hl": { + "type": "select", + "options": [ + "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", + "co", + "hr", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", + "et", + "ee", + "fo", + "tl", + "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", + "ms", + "ml", + "mt", + "mv", + "mi", + "mr", + "mfe", + "mo", + "mn", + "sr-me", + "my", + "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" + ], + "description": "Parameter defines the language to use for the Google Flights Deals search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", + "group": "localization" + }, + "currency": { + "type": "select", + "options": [ + "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", + "AED", + "VND" + ], + "description": "Parameter defines the currency of the returned prices. Default to `USD`. Head to the Google Travel Currencies page for a full list of supported currency codes.", + "group": "localization" + }, + "type": { + "type": "select", + "options": [ + [ + "1", + "Round trip (default) - 1" + ], + [ + "2", + "One way - 2" + ] + ], + "description": "Parameter defines the type of the flights. Available options: `1` - Round trip (default) `2` - One way", + "group": "advanced_google_flights_parameters" + }, + "travel_class": { + "type": "select", + "options": [ + [ + 1, + "Economy (default) - 1" + ], + [ + 2, + "Premium economy - 2" + ], + [ + 3, + "Business - 3" + ], + [ + 4, + "First - 4" + ] + ], + "description": "Parameter defines the travel class. Available options: `1` - Economy (default) `2` - Premium economy `3` - Business `4` - First", + "group": "advanced_google_flights_parameters" + }, + "outbound_date": { + "description": "Parameter defines when you want to depart. Use a single YYYY-MM-DD date for an exact departure date, or two comma-separated dates for a flexible departure window. Examples: `2026-07-22` — depart on this exact date `2026-07-22,2026-08-20` — depart anytime within this window With a **single date**: return\\_date (single date) is required for round trip flights. With a **date range**: optionally combine with one of return\\_date (as a range), travel\\_duration, or trip\\_length to control the trip length. If none are provided, deals of any duration are returned. If omitted entirely, deals for any date are returned.", + "group": "date_parameters" + }, + "return_date": { + "description": "Parameter defines when you want to return. Use a single YYYY-MM-DD date for an exact return date, or two comma-separated dates for a flexible return window. Examples: `2026-07-28` — return on this exact date (use with a single outbound\\_date) `2026-07-28,2026-08-27` — return anytime within this window (use with a range outbound\\_date) Not available for one-way flights (type = `2`). A single return\\_date must be paired with a single outbound\\_date. A range return\\_date must be paired with a range outbound\\_date. Cannot be combined with travel\\_duration or trip\\_length (use one or the other to define trip length).", + "group": "date_parameters" + }, + "travel_duration": { + "type": "select", + "options": [ + [ + 1, + "1 week (default) - 1" + ], + [ + 2, + "Weekend - 2" + ], + [ + 3, + "2 weeks - 3" + ] + ], + "description": "Parameter defines a preset trip duration when searching with flexible dates. Available options: `1` - 1 week (default) `2` - Weekend `3` - 2 weeks Can be used alone (deals of this duration, any departure date) or with outbound\\_date as a date range (e.g., `2026-07-22,2026-08-20`) to limit the departure window. Cannot be combined with return\\_date or trip\\_length. Not available for one-way flights (type = `2`).", + "group": "date_parameters" + }, + "trip_length": { + "description": "Parameter defines a custom trip length in days when searching with flexible dates. Provide a single number for an exact duration, or two comma-separated numbers for a min/max range. Examples: `7` — exactly 7 days `5,10` — between 5 and 10 days Can be used alone (deals of this length, any departure date) or with outbound\\_date as a date range (e.g., `2026-07-22,2026-08-20`) to limit the departure window. Cannot be combined with return\\_date or travel\\_duration. Not available for one-way flights (type = `2`). Each value must be at least `1`. When two values are provided, the first (min) must be ≤ the second (max).", + "group": "date_parameters" + }, + "adults": { + "type": "number", + "description": "Parameter defines the number of adults. Default to 1.", + "group": "number_of_passengers" + }, + "children": { + "type": "number", + "description": "Parameter defines the number of children. Default to 0.", + "group": "number_of_passengers" + }, + "infants_in_seat": { + "type": "number", + "description": "Parameter defines the number of infants in seat. Default to 0.", + "group": "number_of_passengers" + }, + "infants_on_lap": { + "type": "number", + "description": "Parameter defines the number of infants on lap. Default to 0.", + "group": "number_of_passengers" + }, + "stops": { + "type": "select", + "options": [ + [ + 0, + "Any number of stops (default) - 0" + ], + [ + 1, + "Nonstop only - 1" + ], + [ + 2, + "1 stop or fewer - 2" + ], + [ + 3, + "2 stops or fewer - 3" + ] + ], + "description": "Parameter defines the number of stops during the flight. Available options: `0` - Any number of stops (default) `1` - Nonstop only `2` - 1 stop or fewer `3` - 2 stops or fewer", + "group": "advanced_filters" + }, + "exclude_airlines": { + "description": "Parameter defines the airline codes to be excluded. Split multiple airlines with comma. It can't be used together with `include_airlines`. Each airline code should be a 2-character IATA code consisting of either two uppercase letters or one uppercase letter and one digit. You can search for airline codes on IATA. For example, `UA` is United Airlines. Additionally, alliances can be also included here: `STAR_ALLIANCE` - Star Alliance `SKYTEAM` - SkyTeam `ONEWORLD` - Oneworld exclude\\_airlines and include\\_airlines parameters can't be used together.", + "group": "advanced_filters" + }, + "include_airlines": { + "description": "Parameter defines the airline codes to be included. Split multiple airlines with comma. It can't be used together with `exclude_airlines`. Each airline code should be a 2-character IATA code consisting of either two uppercase letters or one uppercase letter and one digit. You can search for airline codes on IATA. For example, `UA` is United Airlines. Additionally, alliances can be also included here: `STAR_ALLIANCE` - Star Alliance `SKYTEAM` - SkyTeam `ONEWORLD` - Oneworld exclude\\_airlines and include\\_airlines parameters can't be used together.", + "group": "advanced_filters" + }, + "max_price": { + "type": "number", + "description": "Parameter defines the maximum ticket price. Default to unlimited.", + "group": "advanced_filters" + }, + "max_duration": { + "type": "number", + "description": "Parameter defines the maximum flight duration, in minutes. For example, specify `1500` for 25 hours. If your search returns no results, try increasing your max\\_duration by up to `200` minutes to account for route-specific scheduling variances.", + "group": "advanced_filters" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `google_flights_deals` to use the Google Flights Deals API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Google Flights Deals results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/google_forums.json b/engines/google_forums.json index 1262684..99f5f04 100644 --- a/engines/google_forums.json +++ b/engines/google_forums.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "gl": { @@ -430,6 +430,33 @@ "description": "Parameter defines the language to use for the Google Forums search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", "group": "localization" }, + "period_unit": { + "type": "select", + "options": [ + "s", + "n", + "h", + "d", + "w", + "m", + "y" + ], + "description": "Parameter defines the time period unit to search for the recent images, e.g. from past minute, hour, day etc. Options: `s` - Second `n` - Minute `h` - Hour `d` - Day `w` - Week `m` - Month `y` - Year This parameter can't be used with `start_date`/`end_date` parameters.", + "group": "time_period" + }, + "period_value": { + "type": "number", + "description": "Parameter defines an optional time period value that can be used with `period_unit` to describe time periods like `15 seconds`, `42 hours`, `178 days` etc. Default value: `1` Value range: `1..2147483647`", + "group": "time_period" + }, + "start_date": { + "description": "Parameter defines the start date of time period you want to limit the image search to. Format: `YYYYMMDD` Example: `20251201` This parameter can't be used with `period_unit`/`period_value` parameters. `start_date` with blank `end_date` produces date range `FROM start_date TO today`.", + "group": "time_period" + }, + "end_date": { + "description": "Parameter defines the end date of time period you want to limit the image search to. Format: `YYYYMMDD` Example: `20251231` This parameter can't be used with `period_unit`/`period_value` parameters. `end_date` with blank `start_date` produces date range `BEFORE end_date`.", + "group": "time_period" + }, "start": { "type": "number", "description": "Parameter defines the result offset. It skips the given number of results. It's used for pagination. (e.g., `0` (default) is the first page of results, `10` is the 2nd page of results, `20` is the 3rd page of results, etc.).", @@ -444,6 +471,10 @@ "type": "checkbox", "description": "Parameter defines if the filters for 'Similar Results' and 'Omitted Results' are on or off. It can be set to `1` (default) to enable these filters, or `0` to disable these filters.", "group": "advanced_filters" + }, + "tbs": { + "description": "(to be searched) parameter defines advanced search parameters that aren't possible in the regular query field. (e.g., advanced search for dates, time period, etc.).", + "group": "advanced_filters" } }, "common_params": { diff --git a/engines/google_hotels.json b/engines/google_hotels.json index 3ac1612..5d005f8 100644 --- a/engines/google_hotels.json +++ b/engines/google_hotels.json @@ -501,12 +501,12 @@ }, "check_in_date": { "required": true, - "description": "Parameter defines the check-in date. The format is **YYYY-MM-DD**. e.g. `2026-01-15`", + "description": "Parameter defines the check-in date. The format is **YYYY-MM-DD**. e.g. `2026-07-22`", "group": "advanced_parameters" }, "check_out_date": { "required": true, - "description": "Parameter defines the check-out date. The format is **YYYY-MM-DD**. e.g. `2026-01-16`", + "description": "Parameter defines the check-out date. The format is **YYYY-MM-DD**. e.g. `2026-07-23`", "group": "advanced_parameters" }, "adults": { diff --git a/engines/google_hotels_photos.json b/engines/google_hotels_photos.json new file mode 100644 index 0000000..d8a80e5 --- /dev/null +++ b/engines/google_hotels_photos.json @@ -0,0 +1,47 @@ +{ + "engine": "google_hotels_photos", + "params": { + "property_token": { + "required": true, + "description": "Parameter defines unique identifier used to identify a Google Property. You can find property\\_token from Google Hotels Properties API.", + "group": "search_query" + }, + "next_page_token": { + "description": "Parameter defines the next page token needed to retrieve the next batch of photos of a particular section.", + "group": "pagination" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `google_hotels_photos` to use the Google Hotels Photos API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Google Hotels Photos results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/google_hotels_reviews.json b/engines/google_hotels_reviews.json index 1a8b045..a7209fc 100644 --- a/engines/google_hotels_reviews.json +++ b/engines/google_hotels_reviews.json @@ -3,7 +3,7 @@ "params": { "property_token": { "required": true, - "description": "Parameter defines the sepcific property. You can find property\\_token from Google Hotels Properties API.", + "description": "Parameter defines the specific property. You can find property\\_token from Google Hotels Properties API.", "group": "search_query" }, "hl": { diff --git a/engines/google_images.json b/engines/google_images.json index 8846ccf..67cf8f7 100644 --- a/engines/google_images.json +++ b/engines/google_images.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_images_light.json b/engines/google_images_light.json index c903960..5787101 100644 --- a/engines/google_images_light.json +++ b/engines/google_images_light.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_jobs.json b/engines/google_jobs.json index 0c75b82..b4a13d6 100644 --- a/engines/google_jobs.json +++ b/engines/google_jobs.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { @@ -210,252 +210,112 @@ "gl": { "type": "select", "options": [ - "af", - "al", - "dz", - "as", - "ad", - "ao", - "ai", - "aq", + "ae", "ag", + "ai", + "ao", "ar", - "am", - "aw", - "au", + "as", "at", - "az", - "bs", - "bh", - "bd", - "bb", - "by", "be", - "bz", + "bf", + "bh", + "bi", "bj", - "bm", - "bt", "bo", - "ba", - "bw", - "bv", "br", - "io", - "bn", - "bg", - "bf", - "bi", - "kh", - "cm", + "bs", + "bz", "ca", - "cv", - "ky", + "cd", "cf", - "td", + "cg", + "ch", + "ci", "cl", - "cn", - "cx", - "cc", + "cm", "co", - "km", - "cg", - "cd", - "ck", "cr", - "ci", - "hr", "cu", - "cy", - "cz", - "dk", + "cv", + "de", "dj", + "dk", "dm", "do", + "dz", "ec", "eg", - "sv", - "gq", - "er", - "ee", - "et", - "fk", - "fo", - "fj", - "fi", + "es", "fr", - "gf", - "pf", - "tf", "ga", - "gm", - "ge", - "de", + "gb", "gh", - "gi", + "gm", "gr", - "gl", - "gd", - "gp", - "gu", "gt", - "gg", - "gn", - "gw", "gy", - "ht", - "hm", - "va", - "hn", "hk", - "hu", - "is", - "in", + "hn", + "ht", "id", - "ir", + "in", "iq", - "ie", - "im", - "il", "it", - "je", "jm", - "jp", "jo", - "kz", - "ke", - "ki", - "kp", - "kr", + "jp", "kw", - "kg", - "la", - "lv", - "lb", - "ls", - "lr", + "lk", "ly", - "li", - "lt", - "lu", - "mo", - "mk", - "mg", - "mw", - "my", - "mv", + "ma", "ml", - "mt", - "mh", - "mq", - "mr", "mu", - "yt", "mx", - "fm", - "md", - "mc", - "mn", - "me", - "ms", - "ma", + "my", "mz", - "mm", "na", - "nr", - "np", - "nl", - "an", - "nc", - "nz", - "ni", - "ne", "ng", - "nu", - "nf", - "mp", - "no", + "ni", + "nl", "om", - "pk", - "pw", - "ps", "pa", - "pg", - "py", "pe", "ph", - "pn", - "pl", - "pt", + "pk", "pr", + "ps", + "pt", + "py", "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", + "sl", + "sn", "sr", - "sj", - "sz", - "se", - "ch", - "sy", - "tw", - "tj", - "tz", - "th", - "tl", + "st", + "sv", + "td", "tg", - "tk", - "to", - "tt", + "th", "tn", - "tr", - "tm", - "tc", - "tv", + "tt", + "tw", "ug", - "ua", - "ae", "uk", - "gb", "us", - "um", "uy", - "uz", - "vu", + "vc", "ve", - "vn", - "vg", "vi", - "wf", - "eh", - "ye", + "vn", + "za", "zm", "zw" ], - "description": "Parameter defines the country to use for the Google search. It's a two-letter country code. (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France) Head to the Google countries page for a full list of supported Google countries.", + "description": "Parameter defines the country to use for the Google Jobs search. It's a two-letter country code. (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France) Head to the Google Jobs countries page for a full list of supported Google Jobs countries.", "group": "localization" }, "hl": { diff --git a/engines/google_lens.json b/engines/google_lens.json index c0c38d7..9df0bb3 100644 --- a/engines/google_lens.json +++ b/engines/google_lens.json @@ -358,6 +358,11 @@ ], "description": "Parameter defines the level of filtering for adult content. It can be set to `active` or `off`, by default Google will blur explicit content.", "group": "advanced_parameters" + }, + "auto_crop": { + "type": "checkbox", + "description": "Parameter defines whether Google auto-crops the image to focus on the detected area of interest. It can be set to `true` or `false` (default). Auto Crop does not work with type set to `about_this_image`", + "group": "advanced_parameters" } }, "common_params": { diff --git a/engines/google_light.json b/engines/google_light.json index e879e89..565525e 100644 --- a/engines/google_light.json +++ b/engines/google_light.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_local.json b/engines/google_local.json index 83a5c0f..c8d8072 100644 --- a/engines/google_local.json +++ b/engines/google_local.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { @@ -632,7 +632,7 @@ }, "start": { "type": "number", - "description": "Parameter defines the result offset. It skips the given number of results. It's used for pagination. On desktop, parameter only accepts multiples of `20` (e.g. `20` for the second page results, `40` for the third page results, etc.). On mobile, parameter only accepts multiples of `10` (e.g. `10` for the second page results, `20` for the third page results, etc.).", + "description": "Parameter defines the result offset. It skips the given number of results. It's used for pagination. The value depends on the number of results returned which can either be `10` or `20`. For eg, on mobile `10` results are returned, so `start` should be `10`, `20`, `30`. It's advised to use serpapi\\_pagination.next where we handle this automatically.", "group": "pagination" } }, diff --git a/engines/google_maps.json b/engines/google_maps.json index 42b6060..aad3edd 100644 --- a/engines/google_maps.json +++ b/engines/google_maps.json @@ -592,6 +592,155 @@ "description": "Parameter defines the type of search you want to make. It can be set to: `search` - returns a list of results for the set q parameter, `place` - returns results for a specific place when data parameter is set Parameter is not required when using place\\_id or data\\_cid.", "group": "search_type" }, + "min_price": { + "type": "number", + "description": "Parameter defines the lower bound of the place price range. The places with the price range overlapping with the specified one will be returned. Parameter is applicable to searches expected to return places with numerical `price` data (e.g., cafes, restaurants, bars, etc.)", + "group": "advanced_filters" + }, + "max_price": { + "type": "number", + "description": "Parameter defines the upper bound of the place price range. The places with the price range overlapping with the specified one will be returned. Parameter is applicable to searches expected to return places with numerical `price` data (e.g., cafes, restaurants, bars, etc.)", + "group": "advanced_filters" + }, + "min_rating": { + "type": "select", + "options": [ + "2.0", + "2.5", + "3.0", + "3.5", + "4.0", + "4.5" + ], + "description": "Parameter defines the preferred minimum rating of the place. Places without a rating or with a rating below the specified value can still be returned, but with reduced relevance. Options: `2.0` - 2.0 `2.5` - 2.5 `3.0` - 3.0 `3.5` - 3.5 `4.0` - 4.0 `4.5` - 4.5", + "group": "advanced_filters" + }, + "open_state": { + "type": "select", + "options": [ + "now", + "24h" + ], + "description": "Parameter defines the open state of the place. Options: `now` - Open now `24h` - Open 24 hours Parameter can't be used with open\\_on\\_day or open\\_at\\_hour parameters.", + "group": "advanced_filters" + }, + "open_on_day": { + "type": "select", + "options": [ + "mon", + "tue", + "wed", + "thu", + "fri", + "sat", + "sun" + ], + "description": "Parameter defines the day on which the place is open. Options: `mon` - Monday `tue` - Tuesday `wed` - Wednesday `thu` - Thursday `fri` - Friday `sat` - Saturday `sun` - Sunday Parameter can't be used with open\\_state parameter.", + "group": "advanced_filters" + }, + "open_at_hour": { + "type": "select", + "options": [ + [ + "0", + "Midnight" + ], + [ + "1", + "1:00 AM" + ], + [ + "2", + "2:00 AM" + ], + [ + "3", + "3:00 AM" + ], + [ + "4", + "4:00 AM" + ], + [ + "5", + "5:00 AM" + ], + [ + "6", + "6:00 AM" + ], + [ + "7", + "7:00 AM" + ], + [ + "8", + "8:00 AM" + ], + [ + "9", + "9:00 AM" + ], + [ + "10", + "10:00 AM" + ], + [ + "11", + "11:00 AM" + ], + [ + "12", + "Noon" + ], + [ + "13", + "1:00 PM" + ], + [ + "14", + "2:00 PM" + ], + [ + "15", + "3:00 PM" + ], + [ + "16", + "4:00 PM" + ], + [ + "17", + "5:00 PM" + ], + [ + "18", + "6:00 PM" + ], + [ + "19", + "7:00 PM" + ], + [ + "20", + "8:00 PM" + ], + [ + "21", + "9:00 PM" + ], + [ + "22", + "10:00 PM" + ], + [ + "23", + "11:00 PM" + ] + ], + "description": "Parameter defines the hour at which the place is open. Options: `0` - Midnight `1` - 1:00 AM `2` - 2:00 AM `3` - 3:00 AM `4` - 4:00 AM `5` - 5:00 AM `6` - 6:00 AM `7` - 7:00 AM `8` - 8:00 AM `9` - 9:00 AM `10` - 10:00 AM `11` - 11:00 AM `12` - Noon `13` - 1:00 PM `14` - 2:00 PM `15` - 3:00 PM `16` - 4:00 PM `17` - 5:00 PM `18` - 6:00 PM `19` - 7:00 PM `20` - 8:00 PM `21` - 9:00 PM `22` - 10:00 PM `23` - 11:00 PM Parameter should be used with open\\_on\\_day parameter. Parameter can't be used with open\\_state parameter.", + "group": "advanced_filters" + }, "start": { "type": "number", "description": "Parameter defines the result offset. It skips the given number of results. It's used for pagination. (e.g., `0` (default) is the first page of results, `20` is the 2nd page of results, `40` is the 3rd page of results, etc.). We recommend starting with `0` and increasing by `20` for the next page. There is no hard limit on the maximum offset number, but we recommend a maximum of `100` (page six) which is the same behavior as with the Google Maps web app. More than that, the result might be duplicated or irrelevant.", diff --git a/engines/google_maps_contributor_reviews.json b/engines/google_maps_contributor_reviews.json index 4df338d..bd06358 100644 --- a/engines/google_maps_contributor_reviews.json +++ b/engines/google_maps_contributor_reviews.json @@ -421,10 +421,6 @@ "description": "Parameter defines the language to use for the Google Maps Contributor Reviews search. It's a two-letter language code, for example, `en` for English (default), `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", "group": "localization" }, - "next_page_token": { - "description": "Parameter defines the next page token. It is used for retrieving the next page results.", - "group": "pagination" - }, "num": { "type": "number", "description": "Parameter defines the maximum number of results to return. (e.g., `10` (default) returns 10 results, and `200` returns 200 results). This parameter should not be larger than `200`.", diff --git a/engines/google_maps_reviews.json b/engines/google_maps_reviews.json index f14db1f..b79930c 100644 --- a/engines/google_maps_reviews.json +++ b/engines/google_maps_reviews.json @@ -181,7 +181,7 @@ "ratingHigh", "ratingLow" ], - "description": "Parameter is used for sorting and refining results. Available options: `qualityScore` - the most relevant reviews (default). `newestFirst` - the most recent reviews. `ratingHigh` - the highest rating reviews. `ratingLow` - the lowest rating reviews.", + "description": "Parameter is used to sort and refine the results. Available options: `qualityScore` - the most relevant reviews (default). `newestFirst` - the most recent reviews. `ratingHigh` - the highest rating reviews. `ratingLow` - the lowest rating reviews. The total number of reviews returned may vary depending on the sorting option selected.", "group": "advanced_google_maps_reviews_parameters" }, "topic_id": { @@ -197,7 +197,7 @@ "group": "pagination" }, "next_page_token": { - "description": "Parameter defines the next page token. It is used for retrieving the next page results. Usage of start parameter (results offset) has been discontinued by Google.", + "description": "Parameter defines the next page token. It is used for retrieving the next page results. The next page token can be found in the SerpApi JSON response: `serpapi_pagination -> next_page_token` Usage of start parameter (results offset) has been discontinued by Google.", "group": "pagination" } }, diff --git a/engines/google_news_light.json b/engines/google_news_light.json index af411cc..f10e3c3 100644 --- a/engines/google_news_light.json +++ b/engines/google_news_light.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_patents.json b/engines/google_patents.json index 59dfdb2..5e9bf8a 100644 --- a/engines/google_patents.json +++ b/engines/google_patents.json @@ -59,11 +59,11 @@ "group": "date_range" }, "inventor": { - "description": "Parameter defines the inventors of the patents. Split multiple inventors with `,` (comma)", + "description": "Parameter defines the inventors of the patents. Split multiple inventors with `,` (comma). Wrap names containing commas in parentheses, e.g. `(Doe, John)`.", "group": "participants" }, "assignee": { - "description": "Parameter defines the assignees of the patents. Split multiple assignees with `,` (comma)", + "description": "Parameter defines the assignees of the patents. Split multiple assignees with `,` (comma). Wrap names containing commas in parentheses, e.g. `(Tesla, Inc)`.", "group": "participants" }, "country": { diff --git a/engines/google_reverse_image.json b/engines/google_reverse_image.json index 6c3670a..839251f 100644 --- a/engines/google_reverse_image.json +++ b/engines/google_reverse_image.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_scholar_case_law.json b/engines/google_scholar_case_law.json new file mode 100644 index 0000000..2c9838e --- /dev/null +++ b/engines/google_scholar_case_law.json @@ -0,0 +1,39 @@ +{ + "engine": "google_scholar_case_law", + "params": { + "case_id": { + "required": true, + "description": "Parameter defines the ID of the case you want to scrape. You can find case law case\\_id in Google Scholar API results. Please head to the Google Scholar API documentation to learn how to use the as\\_sdt parameter to get case law results using Google Scholar API.", + "group": "search_query" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `google_scholar_case_law` to use the Google Scholar Case Law API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Google Scholar Case Law results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/google_shopping.json b/engines/google_shopping.json index 0c2dc10..fc50607 100644 --- a/engines/google_shopping.json +++ b/engines/google_shopping.json @@ -3,7 +3,7 @@ "params": { "q": { "required": true, - "description": "Parameter defines the query you want to search. You can use anything that you would use in a regular Google Shopping search.", + "description": "Parameter defines the query you want to search. You can use anything that you would use in a regular Google Shopping search. This parameter is optional if using shoprs parameter.", "group": "search_query" }, "location": { @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_shopping_filters.json b/engines/google_shopping_filters.json index 16db5c7..0f20bd8 100644 --- a/engines/google_shopping_filters.json +++ b/engines/google_shopping_filters.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_shopping_light.json b/engines/google_shopping_light.json index 4282720..646c984 100644 --- a/engines/google_shopping_light.json +++ b/engines/google_shopping_light.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_short_videos.json b/engines/google_short_videos.json index 1a55811..645bcb0 100644 --- a/engines/google_short_videos.json +++ b/engines/google_short_videos.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_sports.json b/engines/google_sports.json new file mode 100644 index 0000000..65498bd --- /dev/null +++ b/engines/google_sports.json @@ -0,0 +1,514 @@ +{ + "engine": "google_sports", + "params": { + "kgmid": { + "required": true, + "description": "Parameter defines the Google Knowledge Graph ID of the selected entity type. It can be found in Google Search API, Google Sports API, or on Wikidata as \"Freebase ID\".", + "group": "search_query" + }, + "gl": { + "type": "select", + "options": [ + "af", + "al", + "dz", + "as", + "ad", + "ao", + "ai", + "aq", + "ag", + "ar", + "am", + "aw", + "au", + "at", + "az", + "bs", + "bh", + "bd", + "bb", + "by", + "be", + "bz", + "bj", + "bm", + "bt", + "bo", + "ba", + "bw", + "bv", + "br", + "io", + "bn", + "bg", + "bf", + "bi", + "kh", + "cm", + "ca", + "cv", + "ky", + "cf", + "td", + "cl", + "cn", + "cx", + "cc", + "co", + "km", + "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", + "de", + "gh", + "gi", + "gr", + "gl", + "gd", + "gp", + "gu", + "gt", + "gg", + "gn", + "gw", + "gy", + "ht", + "hm", + "va", + "hn", + "hk", + "hu", + "is", + "in", + "id", + "ir", + "iq", + "ie", + "im", + "il", + "it", + "je", + "jm", + "jp", + "jo", + "kz", + "ke", + "ki", + "kp", + "kr", + "kw", + "kg", + "la", + "lv", + "lb", + "ls", + "lr", + "ly", + "li", + "lt", + "lu", + "mo", + "mk", + "mg", + "mw", + "my", + "mv", + "ml", + "mt", + "mh", + "mq", + "mr", + "mu", + "yt", + "mx", + "fm", + "md", + "mc", + "mn", + "me", + "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" + ], + "description": "Parameter defines the country to use for the Google search. It's a two-letter country code (e.g., `us` for the United States, `uk` for United Kingdom, or `fr` for France). Head to the Google countries page for a full list of supported Google countries.", + "group": "localization" + }, + "hl": { + "type": "select", + "options": [ + "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", + "co", + "hr", + "cs", + "da", + "nl", + "xx-elmer", + "en", + "eo", + "et", + "ee", + "fo", + "tl", + "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", + "ms", + "ml", + "mt", + "mv", + "mi", + "mr", + "mfe", + "mo", + "mn", + "sr-me", + "my", + "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" + ], + "description": "Parameter defines the language to use for the Google search. It's a two-letter language code (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to the Google languages page for a full list of supported Google languages.", + "group": "localization" + }, + "mpd": { + "description": "Parameter defines the middle time of the league and team games. Games before and after the specified time will be returned. Format (ISO8601 UTC): `YYYY-MM-DDTHH:mm:ssZ` Example: `2026-05-29T12:30:00Z` Parameter cannot be used with moa and mob parameters.", + "group": "time_period" + }, + "moa": { + "description": "Parameter defines the earliest time of the league and team games. Games after the specified time will be returned. Format (ISO8601 UTC): `YYYY-MM-DDTHH:mm:ssZ` Example: `2026-05-29T12:30:00Z` Parameter cannot be used with mpd parameter. Parameter can be used with mob parameter, but should not be later.", + "group": "time_period" + }, + "mob": { + "description": "Parameter defines the latest time of the league and team games. Games before the specified time will be returned. Format (ISO8601 UTC): `YYYY-MM-DDTHH:mm:ssZ` Example: `2026-05-29T12:30:00Z` Parameter cannot be used with mpd parameter. Parameter can be used with moa parameter, but should not be earlier.", + "group": "time_period" + }, + "season_kgmid": { + "description": "Parameter defines the Google Knowledge Graph ID of the specific standings season and should be used alongside the main league or team kgmid. Available seasons can be found in Google Sports API standings results or on Wikidata as \"Freebase ID\". Parameter can be used as a standalone kgmid parameter to fetch tabs other than standings.", + "group": "advanced_parameters" + }, + "sp": { + "type": "select", + "options": [ + "ft", + "bs", + "bb", + "cr", + "af", + "ih", + "rg" + ], + "required": true, + "description": "Parameter defines the sport of the selected entity type. Options: `ft` - Football `bs` - Basketball `bb` - Baseball `cr` - Cricket `af` - American football `ih` - Ice hockey `rg` - Rugby", + "group": "advanced_parameters" + }, + "type": { + "type": "select", + "options": [ + "game", + "league", + "team" + ], + "required": true, + "description": "Parameter defines the entity type. Options: `game` - Game `league` - League `team` - Team", + "group": "advanced_parameters" + }, + "tab": { + "type": "select", + "options": [ + "gm", + "sn", + "pl", + "br", + "st", + "rn", + "ov" + ], + "description": "Parameter defines the tab on the page of the selected entity type. Options: `gm` - League/Team - Games `sn` - League/Team - Standings `pl` - League/Team - Players `br` - League/Team - Brackets `st` - League - Stats `rn` - League - Rankings `ov` - Game - Overview (American football) Parameter is required for `league` and `team` entity type. Parameter is optional for `game` entity type and should be used only with American football sp value.", + "group": "advanced_parameters" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `google_sports` to use the Google Sports API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Google Sports results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/google_travel_explore.json b/engines/google_travel_explore.json index b9574fa..6c89663 100644 --- a/engines/google_travel_explore.json +++ b/engines/google_travel_explore.json @@ -2,7 +2,8 @@ "engine": "google_travel_explore", "params": { "departure_id": { - "description": "Parameter defines the departure airport code or city location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple departure airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", + "required": true, + "description": "Parameter defines the departure airport code or city location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/` or `/g/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX. You can specify multiple departure airports by separating them with a comma. For example, `CDG,ORY,/m/04jpl`.", "group": "search_query" }, "gl": { @@ -499,11 +500,11 @@ "group": "localization" }, "arrival_area_id": { - "description": "Parameter defines the arrival region or country as a location kgmid. A location kgmid is a string that starts with `/m/`. You can search for a region or country on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/02j9z` is the location kgmid for Europe, and `/m/0f8l9c` is the location kgmid for France. This parameter is used when exploring flights to broader areas (regions or countries) rather than specific cities or airports.", + "description": "Parameter defines the arrival region or country as a location kgmid. A location kgmid is a string that starts with `/m/` or `/g/`. You can search for a region or country on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/02j9z` is the location kgmid for Europe, and `/m/0f8l9c` is the location kgmid for France. This parameter is used when exploring flights to broader areas (regions or countries) rather than specific cities or airports.", "group": "advanced_google_travel_explore_parameters" }, "arrival_id": { - "description": "Parameter defines the arrival airport code or city location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX.", + "description": "Parameter defines the arrival airport code or city location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, `CDG` is Paris Charles de Gaulle Airport and `AUS` is Austin-Bergstrom International Airport. A location kgmid is a string that starts with `/m/` or `/g/`. You can search for a location on Wikidata and use its \"Freebase ID\" as the location kgmid. For example, `/m/0vzm` is the location kgmid for Austin, TX.", "group": "advanced_google_travel_explore_parameters" }, "type": { @@ -522,11 +523,11 @@ "group": "advanced_google_travel_explore_parameters" }, "outbound_date": { - "description": "Parameter defines the outbound date. The format is YYYY-MM-DD. e.g. `2026-01-15`", + "description": "Parameter defines the outbound date. The format is YYYY-MM-DD. e.g. `2026-07-22`", "group": "advanced_google_travel_explore_parameters" }, "return_date": { - "description": "Parameter defines the return date. The format is YYYY-MM-DD. e.g. `2026-01-21` Parameter is required if type parameter is set to: `1` (Round trip)", + "description": "Parameter defines the return date. The format is YYYY-MM-DD. e.g. `2026-07-28` Parameter is required if type parameter is set to: `1` (Round trip)", "group": "advanced_google_travel_explore_parameters" }, "month": { @@ -650,7 +651,11 @@ "group": "advanced_filters" }, "include_airlines": { - "description": "Parameter defines the airline codes to be included. Split multiple airlines with comma. Each airline code should be a 2-character IATA code consisting of either two uppercase letters or one uppercase letter and one digit. You can search for airline codes on IATA. For example, `UA` is United Airlines. Additionally, alliances can be also included here: `STAR_ALLIANCE` - Star Alliance `SKYTEAM` - SkyTeam `ONEWORLD` - Oneworld", + "description": "Parameter defines the airline codes to be included. Split multiple airlines with a comma. Each airline code should be a 2-character IATA code consisting of either two uppercase letters or one uppercase letter and one digit. You can search for airline codes on IATA. For example, `UA` is United Airlines. Additionally, alliances can be also included here: `STAR_ALLIANCE` - Star Alliance `SKYTEAM` - SkyTeam `ONEWORLD` - Oneworld exclude\\_airlines and include\\_airlines parameters can't be used together.", + "group": "advanced_filters" + }, + "exclude_airlines": { + "description": "Parameter defines the airline codes to be excluded. Split multiple airlines with a comma. Each airline code should be a 2-character IATA code consisting of either two uppercase letters or one uppercase letter and one digit. You can search for airline codes on IATA. For example, `UA` is United Airlines. Additionally, alliances can be also excluded here: `STAR_ALLIANCE` - Star Alliance `SKYTEAM` - SkyTeam `ONEWORLD` - Oneworld exclude\\_airlines and include\\_airlines parameters can't be used together.", "group": "advanced_filters" }, "bags": { @@ -665,7 +670,7 @@ }, "max_duration": { "type": "number", - "description": "Parameter defines the maximum flight duration, in minutes. For example, specify `1500` for 25 hours.", + "description": "Parameter defines the maximum flight duration, in minutes. For example, specify `1500` for 25 hours. If your search returns no results, try increasing your max\\_duration by up to `200` minutes to account for route-specific scheduling variances.", "group": "advanced_filters" } }, diff --git a/engines/google_videos.json b/engines/google_videos.json index 8078bfc..216523a 100644 --- a/engines/google_videos.json +++ b/engines/google_videos.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/google_videos_light.json b/engines/google_videos_light.json index a21507e..1866d9d 100644 --- a/engines/google_videos_light.json +++ b/engines/google_videos_light.json @@ -12,7 +12,7 @@ "group": "geographic_location" }, "uule": { - "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together.", + "description": "Parameter is the Google encoded location you want to use for the search. uule and location parameters can't be used together. For consistent results with coordinates-based uule parameter, a matching gl parameter is required. Head to UULE Generator if you need to convert a location or GPS coordinates to uule parameter, and vice versa.", "group": "geographic_location" }, "google_domain": { diff --git a/engines/home_depot.json b/engines/home_depot.json index 60fdd87..19c61d3 100644 --- a/engines/home_depot.json +++ b/engines/home_depot.json @@ -94,12 +94,12 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `home_depot` to use the Home Depot API engine.", + "description": "Set parameter to `home_depot` to use the The Home Depot API engine.", "group": "serpapi_parameters" }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Home Depot results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the The Home Depot results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/instagram_profile.json b/engines/instagram_profile.json new file mode 100644 index 0000000..fb0c35b --- /dev/null +++ b/engines/instagram_profile.json @@ -0,0 +1,47 @@ +{ + "engine": "instagram_profile", + "params": { + "profile_id": { + "required": true, + "description": "Parameter defines the Instagram profile ID. You can find it in the URL of the profile page. For example, in `https://www.instagram.com/serpapicom`, the profile ID is `serpapicom`.", + "group": "search_query" + }, + "next_page_token": { + "description": "Parameter defines the next page token. It is used for retrieving the next page results. The next page token can be found in the SerpApi JSON response: `serpapi_pagination -> next_page_token`", + "group": "pagination" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `instagram_profile` to use the Instagram Profile API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Instagram Profile results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/naver_ai_overview.json b/engines/naver_ai_overview.json index 52d0f33..2f0d4d0 100644 --- a/engines/naver_ai_overview.json +++ b/engines/naver_ai_overview.json @@ -10,7 +10,7 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `naver_ai_overview` to use the Naver Ai Overview API engine.", + "description": "Set parameter to `naver_ai_overview` to use the Naver AI Overview API engine.", "group": "serpapi_parameters" }, "device": { @@ -25,7 +25,7 @@ }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Naver Ai Overview results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the Naver AI Overview results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/open_table_reviews.json b/engines/open_table_reviews.json index a7b0a9d..fffd3d6 100644 --- a/engines/open_table_reviews.json +++ b/engines/open_table_reviews.json @@ -1,9 +1,9 @@ { "engine": "open_table_reviews", "params": { - "place_id": { + "rid": { "required": true, - "description": "Parameter defines the OpenTable ID of a restaurant. This identifier can be found in the URL of the restaurant's page, immediately following `/r/`. For example, in the URL `https://www.opentable.com/r/central-park-boathouse-new-york-2`, the ID is `central-park-boathouse-new-york-2`.", + "description": "Parameter defines the OpenTable Restaurant ID. This identifier can be found in the URL of the restaurant's page, it's the path of the URL (the part after the first singular `/`). For example, in the URL `https://www.opentable.com/r/central-park-boathouse-new-york-2`, the Restaurant ID is `r/central-park-boathouse-new-york-2`.", "group": "search_query" }, "open_table_domain": { diff --git a/engines/search_index.json b/engines/search_index.json new file mode 100644 index 0000000..28e2629 --- /dev/null +++ b/engines/search_index.json @@ -0,0 +1,70 @@ +{ + "engine": "search_index", + "params": { + "q": { + "required": true, + "description": "Parameter defines the query you want to search.", + "group": "search_query" + }, + "num": { + "type": "number", + "description": "Parameter defines the number of results to return. (default: `10`).", + "group": "pagination" + }, + "start": { + "type": "number", + "description": "Parameter defines the result offset for pagination. (e.g., `0` (default) is the first page, `10` is the second page, etc.).", + "group": "pagination" + }, + "safe": { + "type": "select", + "options": [ + "active", + "off" + ], + "description": "Parameter defines the level of filtering for adult content. It can be set to `active` (default) or `off`.", + "group": "filters" + }, + "mode": { + "type": "select", + "options": [ + "deep" + ], + "description": "Parameter defines the search mode. Set to `deep` for expanded recall via parallel sub-query fan-out. Returns more diverse results by decomposing the query into multiple aspects.", + "group": "filters" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `search_index` to use the Search Index API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Search Index results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/tripadvisor.json b/engines/tripadvisor.json index 55d0e6b..825015e 100644 --- a/engines/tripadvisor.json +++ b/engines/tripadvisor.json @@ -8,66 +8,66 @@ }, "lat": { "type": "number", - "description": "Defines a GPS latitude for the search origin.", + "description": "Defines a GPS latitude for the search origin. This parameter might not be supported for all queries.", "group": "geographic_location" }, "lon": { "type": "number", - "description": "Defines a GPS longitude for the search origin.", + "description": "Defines a GPS longitude for the search origin. This parameter might not be supported for all queries.", "group": "geographic_location" }, "tripadvisor_domain": { "type": "select", "options": [ "www.tripadvisor.com", + "ar.tripadvisor.com", + "www.tripadvisor.com.ar", + "www.tripadvisor.com.au", + "www.tripadvisor.at", + "www.tripadvisor.be", + "fr.tripadvisor.be", + "www.tripadvisor.com.br", "www.tripadvisor.ca", "fr.tripadvisor.ca", - "www.tripadvisor.com.br", - "www.tripadvisor.com.mx", - "www.tripadvisor.com.ar", "www.tripadvisor.cl", + "cn.tripadvisor.com", "www.tripadvisor.co", "www.tripadvisor.com.pe", - "www.tripadvisor.com.ve", - "www.tripadvisor.co.uk", - "www.tripadvisor.it", - "www.tripadvisor.es", - "www.tripadvisor.de", - "www.tripadvisor.fr", - "www.tripadvisor.se", - "www.tripadvisor.nl", - "www.tripadvisor.com.tr", "www.tripadvisor.dk", - "www.tripadvisor.ie", - "www.tripadvisor.at", + "www.tripadvisor.com.eg", + "www.tripadvisor.fr", + "www.tripadvisor.de", "www.tripadvisor.com.gr", - "no.tripadvisor.com", - "www.tripadvisor.pt", - "www.tripadvisor.ru", - "www.tripadvisor.ch", - "fr.tripadvisor.ch", - "it.tripadvisor.ch", - "fr.tripadvisor.be", - "www.tripadvisor.be", - "www.tripadvisor.jp", - "cn.tripadvisor.com", + "www.tripadvisor.com.hk", + "en.tripadvisor.com.hk", "www.tripadvisor.in", - "www.tripadvisor.com.au", + "www.tripadvisor.co.id", + "www.tripadvisor.ie", + "www.tripadvisor.co.il", + "www.tripadvisor.it", + "www.tripadvisor.jp", + "www.tripadvisor.co.kr", "www.tripadvisor.com.my", + "www.tripadvisor.com.mx", + "www.tripadvisor.nl", "www.tripadvisor.co.nz", + "no.tripadvisor.com", "www.tripadvisor.com.ph", + "www.tripadvisor.pt", + "www.tripadvisor.ru", "www.tripadvisor.com.sg", - "www.tripadvisor.co.id", - "www.tripadvisor.co.kr", - "th.tripadvisor.com", - "www.tripadvisor.com.vn", - "www.tripadvisor.com.tw", - "en.tripadvisor.com.hk", - "www.tripadvisor.com.hk", - "ar.tripadvisor.com", - "www.tripadvisor.com.eg", "www.tripadvisor.co.za", - "www.tripadvisor.co.il" + "www.tripadvisor.es", + "www.tripadvisor.se", + "fr.tripadvisor.ch", + "www.tripadvisor.ch", + "it.tripadvisor.ch", + "www.tripadvisor.com.tw", + "th.tripadvisor.com", + "www.tripadvisor.com.tr", + "www.tripadvisor.co.uk", + "www.tripadvisor.com.ve", + "www.tripadvisor.com.vn" ], "description": "Parameter defines the Tripadvisor domain to use. It defaults to `tripadvisor.com`. Head to the Tripadvisor domains page for a full list of supported Tripadvisor domains.", "group": "localization" @@ -88,7 +88,7 @@ }, "offset": { "type": "number", - "description": "Parameter defines the result offset. It skips the given number of results. It's used for pagination. (e.g., `0` (default) is the first page of results, `30` is the 2nd page of results, `60` is the 3rd page of results, etc.).", + "description": "Parameter defines the result offset. It skips the given number of results. It's used for pagination. (e.g., `0` (default) is the first page of results, `30` is the 2nd page of results, `60` is the 3rd page of results, etc.). This parameter might not be supported for all queries.", "group": "pagination" }, "limit": { diff --git a/engines/tripadvisor_place.json b/engines/tripadvisor_place.json index 34fe6b7..1a347b8 100644 --- a/engines/tripadvisor_place.json +++ b/engines/tripadvisor_place.json @@ -10,54 +10,54 @@ "type": "select", "options": [ "www.tripadvisor.com", + "ar.tripadvisor.com", + "www.tripadvisor.com.ar", + "www.tripadvisor.com.au", + "www.tripadvisor.at", + "www.tripadvisor.be", + "fr.tripadvisor.be", + "www.tripadvisor.com.br", "www.tripadvisor.ca", "fr.tripadvisor.ca", - "www.tripadvisor.com.br", - "www.tripadvisor.com.mx", - "www.tripadvisor.com.ar", "www.tripadvisor.cl", + "cn.tripadvisor.com", "www.tripadvisor.co", "www.tripadvisor.com.pe", - "www.tripadvisor.com.ve", - "www.tripadvisor.co.uk", - "www.tripadvisor.it", - "www.tripadvisor.es", - "www.tripadvisor.de", - "www.tripadvisor.fr", - "www.tripadvisor.se", - "www.tripadvisor.nl", - "www.tripadvisor.com.tr", "www.tripadvisor.dk", - "www.tripadvisor.ie", - "www.tripadvisor.at", + "www.tripadvisor.com.eg", + "www.tripadvisor.fr", + "www.tripadvisor.de", "www.tripadvisor.com.gr", - "no.tripadvisor.com", - "www.tripadvisor.pt", - "www.tripadvisor.ru", - "www.tripadvisor.ch", - "fr.tripadvisor.ch", - "it.tripadvisor.ch", - "fr.tripadvisor.be", - "www.tripadvisor.be", - "www.tripadvisor.jp", - "cn.tripadvisor.com", + "www.tripadvisor.com.hk", + "en.tripadvisor.com.hk", "www.tripadvisor.in", - "www.tripadvisor.com.au", + "www.tripadvisor.co.id", + "www.tripadvisor.ie", + "www.tripadvisor.co.il", + "www.tripadvisor.it", + "www.tripadvisor.jp", + "www.tripadvisor.co.kr", "www.tripadvisor.com.my", + "www.tripadvisor.com.mx", + "www.tripadvisor.nl", "www.tripadvisor.co.nz", + "no.tripadvisor.com", "www.tripadvisor.com.ph", + "www.tripadvisor.pt", + "www.tripadvisor.ru", "www.tripadvisor.com.sg", - "www.tripadvisor.co.id", - "www.tripadvisor.co.kr", - "th.tripadvisor.com", - "www.tripadvisor.com.vn", - "www.tripadvisor.com.tw", - "en.tripadvisor.com.hk", - "www.tripadvisor.com.hk", - "ar.tripadvisor.com", - "www.tripadvisor.com.eg", "www.tripadvisor.co.za", - "www.tripadvisor.co.il" + "www.tripadvisor.es", + "www.tripadvisor.se", + "fr.tripadvisor.ch", + "www.tripadvisor.ch", + "it.tripadvisor.ch", + "www.tripadvisor.com.tw", + "th.tripadvisor.com", + "www.tripadvisor.com.tr", + "www.tripadvisor.co.uk", + "www.tripadvisor.com.ve", + "www.tripadvisor.com.vn" ], "description": "Parameter defines the Tripadvisor domain to use. It defaults to `tripadvisor.com`. Head to the Tripadvisor domains page for a full list of supported Tripadvisor domains.", "group": "localization" diff --git a/engines/tripadvisor_reviews.json b/engines/tripadvisor_reviews.json new file mode 100644 index 0000000..98218fe --- /dev/null +++ b/engines/tripadvisor_reviews.json @@ -0,0 +1,178 @@ +{ + "engine": "tripadvisor_reviews", + "params": { + "place_id": { + "required": true, + "description": "Parameter defines the Tripadvisor place ID. To extract the ID of a place, you can use our Tripadvisor Search API. NOTE: Tripadvisor has discontinued support for Vacation Rentals. As a result, requesting details for a Vacation Rental `place_id` may return incomplete incomplete data or no data at all.", + "group": "search_query" + }, + "tripadvisor_domain": { + "type": "select", + "options": [ + "www.tripadvisor.com", + "ar.tripadvisor.com", + "www.tripadvisor.com.ar", + "www.tripadvisor.com.au", + "www.tripadvisor.at", + "www.tripadvisor.be", + "fr.tripadvisor.be", + "www.tripadvisor.com.br", + "www.tripadvisor.ca", + "fr.tripadvisor.ca", + "www.tripadvisor.cl", + "cn.tripadvisor.com", + "www.tripadvisor.co", + "www.tripadvisor.com.pe", + "www.tripadvisor.dk", + "www.tripadvisor.com.eg", + "www.tripadvisor.fr", + "www.tripadvisor.de", + "www.tripadvisor.com.gr", + "www.tripadvisor.com.hk", + "en.tripadvisor.com.hk", + "www.tripadvisor.in", + "www.tripadvisor.co.id", + "www.tripadvisor.ie", + "www.tripadvisor.co.il", + "www.tripadvisor.it", + "www.tripadvisor.jp", + "www.tripadvisor.co.kr", + "www.tripadvisor.com.my", + "www.tripadvisor.com.mx", + "www.tripadvisor.nl", + "www.tripadvisor.co.nz", + "no.tripadvisor.com", + "www.tripadvisor.com.ph", + "www.tripadvisor.pt", + "www.tripadvisor.ru", + "www.tripadvisor.com.sg", + "www.tripadvisor.co.za", + "www.tripadvisor.es", + "www.tripadvisor.se", + "fr.tripadvisor.ch", + "www.tripadvisor.ch", + "it.tripadvisor.ch", + "www.tripadvisor.com.tw", + "th.tripadvisor.com", + "www.tripadvisor.com.tr", + "www.tripadvisor.co.uk", + "www.tripadvisor.com.ve", + "www.tripadvisor.com.vn" + ], + "description": "Parameter defines the Tripadvisor domain to use. It defaults to `www.tripadvisor.com`. Head to the Tripadvisor domains page for a full list of supported Tripadvisor domains.", + "group": "localization" + }, + "language": { + "type": "select", + "options": [ + "ar", + "cs", + "da", + "de", + "el", + "en", + "es", + "fi", + "fr", + "he", + "hu", + "id", + "it", + "ja", + "ko", + "nb", + "nl", + "pl", + "pt", + "ru", + "sk", + "sr", + "sv", + "th", + "tr", + "vi", + "zh" + ], + "description": "Parameter defines the language to use for the Tripadvisor reviews. Head to Tripadvisor reviews languages for a full list of supported Tripadvisor Reviews languages. If translate is enabled, reviews will be translated to the selected language.", + "group": "localization" + }, + "sort_by": { + "type": "select", + "options": [ + "most_recent", + "detailed_review" + ], + "description": "Parameter defines the sorting order of the results. Available options: `most_recent` - Most Recent (Default) `detailed_review` - Detailed Review", + "group": "advanced_parameters" + }, + "translate": { + "type": "checkbox", + "description": "Parameter defines whether to translate reviews to the choosen language. It can be set to `true` to translate reviews, or `false` to return reviews in their original language. By default, reviews are returned in their original language.", + "group": "advanced_parameters" + }, + "rating": { + "description": "Parameter defines to include only results with specified ratings. Example for single rating only: `5` Example for multiple ratings (separated by comma `,`): `5,3,2`", + "group": "advanced_filters" + }, + "month": { + "description": "Parameter defines to include only results from a specific months. Each month is represented by a number from `1` (January) to `12` (December). Example for single month only: `1` (for January) Example for multiple months (separated by comma `,`): `1,6,12`", + "group": "advanced_filters" + }, + "type_of_visit": { + "options": [ + "Business", + "Couples", + "Family", + "Friends", + "Solo" + ], + "description": "Parameter defines to include only results from a specific types of visit. Available options: `Business` - Business `Couples` - Couples `Family` - Family `Friends` - Friends `Solo` - Solo To include multiple types of visit, separate values with a comma `,` (e.g. `Business,Couples` to include reviews from 'Business' and 'Couples' types of visit).", + "group": "advanced_filters" + }, + "original_language": { + "description": "Parameter defines the original languages of the reviews to include. It can be set to a single language (e.g. `en` for English) or multiple languages separated by comma (e.g. `en,fr,es` to include reviews in English, French, and Spanish). Head to Tripadvisor reviews languages for a full list of supported Tripadvisor Reviews languages.", + "group": "advanced_filters" + }, + "offset": { + "description": "Parameter defines the result offset. It skips the given number of reviews. It's used for pagination. (e.g., `0` (default) is the first page of results, `10` is the 2nd page of results, `20` is the 3rd page of results, etc.).", + "group": "pagination" + }, + "limit": { + "description": "Parameter defines the maximum number of reviews to return. The maximum value is 20. (e.g., `10` (default) returns 10 results, `20` returns 20 results, etc.).", + "group": "pagination" + } + }, + "common_params": { + "engine": { + "required": true, + "description": "Set parameter to `tripadvisor_reviews` to use the Tripadvisor Reviews API engine.", + "group": "serpapi_parameters" + }, + "no_cache": { + "type": "checkbox", + "description": "Parameter will force SerpApi to fetch the Tripadvisor Reviews results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "group": "serpapi_parameters" + }, + "async": { + "description": "Parameter defines the way you want to submit your search to SerpApi. It can be set to `false` (default) to open an HTTP connection and keep it open until you got your search results, or `true` to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no\\_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.", + "group": "serpapi_parameters" + }, + "zero_trace": { + "description": "Enterprise only. Parameter enables ZeroTrace mode. It can be set to `false` (default) or `true`. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.", + "group": "serpapi_parameters" + }, + "api_key": { + "required": true, + "description": "Parameter defines the SerpApi private key to use.", + "group": "serpapi_parameters" + }, + "output": { + "description": "Parameter defines the final output you want. It can be set to json (default) to get a structured `JSON` of the results, or `html` to get the raw html retrieved.", + "group": "serpapi_parameters" + }, + "json_restrictor": { + "description": "Parameter defines the fields you want to restrict in the outputs for smaller, faster responses. See JSON Restrictor for more details.", + "group": "serpapi_parameters" + } + } +} \ No newline at end of file diff --git a/engines/walmart.json b/engines/walmart.json index 62964d6..63a76c9 100644 --- a/engines/walmart.json +++ b/engines/walmart.json @@ -6,6 +6,15 @@ "description": "Parameter defines the search query. You can use anything that you would use in a regular Walmart search. Either a `query` or a `cat_id` parameter is required.", "group": "search_query" }, + "walmart_domain": { + "type": "select", + "options": [ + "walmart.com", + "walmart.com.mx" + ], + "description": "Parameter defines the Walmart domain to use. It defaults to `walmart.com`. Head to the Walmart Stores for a full list of supported stores per domain.", + "group": "localization" + }, "sort": { "type": "select", "options": [ @@ -15,16 +24,16 @@ "best_match", "rating_high" ], - "description": "Parameter defines sorting. (e.g. `price_low`, `price_high`, `best_seller`, `best_match`, `rating_high`, `new`)", + "description": "Parameter defines sorting. (e.g. `price_low`, `price_high`, `best_seller`, `best_match`, `rating_high`, `new`). **Note:** `best_seller`, `rating_high`, and `new` are not supported for `walmart.com.mx`.", "group": "advanced_walmart_parameters" }, "soft_sort": { "type": "checkbox", - "description": "Parameter enables sort by relevance. Walmart is by default showing results sorted by relevance and using the `sort` option. Set to `false` to disable sort by Relevance.", + "description": "Parameter enables sort by relevance. Walmart is by default showing results sorted by relevance and using the `sort` option. Set to `false` to disable sort by Relevance. **Note:** not supported for `walmart.com.mx`.", "group": "advanced_walmart_parameters" }, "cat_id": { - "description": "Category on Walmart Search. (e.g. `0` (default) is all departments, `976759_976787` is 'Cookies', etc.). Either a `query` or a `cat_id` parameter is required.", + "description": "Category on Walmart Search. (e.g. `0` (default) is all departments, `976759_976787` is 'Cookies', etc.). Either a `query` or a `cat_id` parameter is required. **Note:** not supported for `walmart.com.mx`.", "group": "advanced_filters" }, "facet": { @@ -52,7 +61,7 @@ }, "nd_en": { "type": "checkbox", - "description": "Show results with NextDay delivery only. Set to `true` to enable or `false` (default) to disable", + "description": "Show results with NextDay delivery only. Set to `true` to enable or `false` (default) to disable. **Note:** not supported for `walmart.com.mx`.", "group": "advanced_filters" }, "page": { diff --git a/engines/walmart_product_sellers.json b/engines/walmart_product_sellers.json index 2de00f3..571a3be 100644 --- a/engines/walmart_product_sellers.json +++ b/engines/walmart_product_sellers.json @@ -7,6 +7,7 @@ "group": "search_query" }, "store_id": { + "required": true, "description": "Store ID to filter the products by the specific store only. Head to the Walmart Stores Locations for a full list of supported stores. It's possible for the product pricing to differ between stores.", "group": "advanced_filters" } diff --git a/engines/yahoo.json b/engines/yahoo.json index f1e2169..b941c21 100644 --- a/engines/yahoo.json +++ b/engines/yahoo.json @@ -237,7 +237,7 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `yahoo` to use the Yahoo API engine.", + "description": "Set parameter to `yahoo` to use the Yahoo! API engine.", "group": "serpapi_parameters" }, "device": { @@ -252,7 +252,7 @@ }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Yahoo results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the Yahoo! results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/yahoo_images.json b/engines/yahoo_images.json index b74880e..bccfe13 100644 --- a/engines/yahoo_images.json +++ b/engines/yahoo_images.json @@ -10,7 +10,6 @@ "type": "select", "options": [ "espanol", - "be", "fr", "br", "ca", @@ -22,7 +21,6 @@ "fr", "in", "id", - "ie", "it", "malaysia", "espanol", @@ -31,22 +29,15 @@ "at", "espanol", "ph", - "pl", "qc", - "ro", "ch", "sg", - "za", "fi", "se", - "tr", "uk", "espanol", "vn", - "gr", "ru", - "ua", - "il", "hk", "tw" ], @@ -150,7 +141,7 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `yahoo_images` to use the Yahoo Images API engine.", + "description": "Set parameter to `yahoo_images` to use the Yahoo! Images API engine.", "group": "serpapi_parameters" }, "device": { @@ -165,7 +156,7 @@ }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Yahoo Images results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the Yahoo! Images results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/yahoo_shopping.json b/engines/yahoo_shopping.json index 7e84123..350a178 100644 --- a/engines/yahoo_shopping.json +++ b/engines/yahoo_shopping.json @@ -58,12 +58,12 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `yahoo_shopping` to use the Yahoo Shopping API engine.", + "description": "Set parameter to `yahoo_shopping` to use the Yahoo! Shopping API engine.", "group": "serpapi_parameters" }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Yahoo Shopping results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the Yahoo! Shopping results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/yahoo_videos.json b/engines/yahoo_videos.json index f57215d..c4fd7f8 100644 --- a/engines/yahoo_videos.json +++ b/engines/yahoo_videos.json @@ -109,7 +109,7 @@ "common_params": { "engine": { "required": true, - "description": "Set parameter to `yahoo_videos` to use the Yahoo Videos API engine.", + "description": "Set parameter to `yahoo_videos` to use the Yahoo! Videos API engine.", "group": "serpapi_parameters" }, "device": { @@ -124,7 +124,7 @@ }, "no_cache": { "type": "checkbox", - "description": "Parameter will force SerpApi to fetch the Yahoo Videos results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", + "description": "Parameter will force SerpApi to fetch the Yahoo! Videos results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to `false` (default) to allow results from the cache, or `true` to disallow results from the cache. no\\_cache and async parameters should not be used together.", "group": "serpapi_parameters" }, "async": { diff --git a/engines/yandex.json b/engines/yandex.json index 24d046c..9f91f1a 100644 --- a/engines/yandex.json +++ b/engines/yandex.json @@ -3,7 +3,7 @@ "params": { "text": { "required": true, - "description": "Parameter defines the search query. You can use anything that you would use in a regular Yandex search.", + "description": "Parameter defines the search query. You can use anything that you would use in a regular Yandex search. It can be 400 characters at maximum. Yandex usually accepts first 40 words of the query.", "group": "search_query" }, "yandex_domain": { @@ -4072,6 +4072,26 @@ "description": "Parameter defines the maximum number of groups displayed on a single results page. It defaults to `20`.", "group": "advanced_yandex_parameters" }, + "sort_mode": { + "type": "select", + "options": [ + "relevance", + "time" + ], + "description": "Parameter defines the sorting mode of search results. It can be set to: `relevance` - by relevance (default) `date` - by date.", + "group": "advanced_yandex_parameters" + }, + "period": { + "type": "select", + "options": [ + "all", + "day", + "last_two_weeks", + "month" + ], + "description": "Parameter defines the time period for search results. It can be set to: `all` - all time (Default) `day` - last day `last_two_weeks` - last two weeks `month` - last month", + "group": "advanced_yandex_parameters" + }, "p": { "type": "number", "description": "Parameter defines page number. Pagination starts from 0.", diff --git a/engines/yandex_images.json b/engines/yandex_images.json index a8b12b7..cbcaefe 100644 --- a/engines/yandex_images.json +++ b/engines/yandex_images.json @@ -88,6 +88,25 @@ "description": "Parameter is used for showing images that appeared in the last 7 days.", "group": "advanced_yandex_images_parameters" }, + "family_mode": { + "type": "select", + "options": [ + [ + "0", + "Off" + ], + [ + "1", + "Moderate" + ], + [ + "2", + "Strict" + ] + ], + "description": "Parameter enables or disables Family Mode (safe search). It can be set to: - Off(`0`) - Moderate(`1`) - Strict(`2`). It defaults to Moderate(`1`).", + "group": "advanced_yandex_images_parameters" + }, "url": { "description": "Parameter defines the URL for an image to perform the reverse image search.", "group": "yandex_reverse_image_parameters" diff --git a/engines/yelp_place.json b/engines/yelp_place.json index cf987ba..830a398 100644 --- a/engines/yelp_place.json +++ b/engines/yelp_place.json @@ -2,6 +2,7 @@ "engine": "yelp_place", "params": { "place_id": { + "required": true, "description": "Parameter defines the Yelp ID of a place. Each place has two unique IDs (e.g. `ED7A7vDdg8yLNKJTSVHHmg` and `arabica-brooklyn`) and you can use either of them as a value of the place\\_id. To extract the IDs of a place you can use our Yelp Search API.", "group": "search_query" }, diff --git a/pyproject.toml b/pyproject.toml index 06c74df..ad51120 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,29 +1,10 @@ -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - [project] name = "serpapi-mcp-server" -version = "0.4.0" +version = "0.5.0" description = "A Model Context Protocol (MCP) server implementation that integrates with SerpApi for comprehensive search engine results and data extraction" -readme = "README.md" -license = "MIT" -authors = [ - { name = "SerpApi", email = "hello@serpapi.com" } -] -keywords = ["mcp", "serpapi", "search", "api", "model-context-protocol"] -classifiers = [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.13", - "Topic :: Internet :: WWW/HTTP :: Indexing/Search", - "Topic :: Software Development :: Libraries :: Python Modules", -] requires-python = ">=3.12" dependencies = [ - "fastmcp[apps]>=3.4.2", + "fastmcp[apps]>=3.4.4", # Prefab (the MCP Apps UI library) ships frequent breaking changes and # fastmcp does not pin an upper bound, so pin it explicitly here. "prefab-ui>=0.20.2,<0.21", @@ -37,7 +18,7 @@ dependencies = [ "markdownify>=0.14.1", ] -[project.optional-dependencies] +[dependency-groups] dev = [ "pytest>=7.0", "pytest-asyncio>=0.21.0", @@ -48,17 +29,8 @@ dev = [ "mypy>=1.5.0", ] -[project.urls] -Homepage = "https://github.com/serpapi/mcp-server" -Repository = "https://github.com/serpapi/mcp-server" -Issues = "https://github.com/serpapi/mcp-server/issues" -Documentation = "https://github.com/serpapi/mcp-server#readme" - -[project.scripts] -serpapi-mcp = "src.server:main" - -[tool.hatch.build.targets.wheel] -packages = ["src"] +[tool.uv] +package = false [tool.black] line-length = 100 diff --git a/src/mcp_components/resources.py b/src/mcp_components/resources.py index e10c209..eec7f34 100644 --- a/src/mcp_components/resources.py +++ b/src/mcp_components/resources.py @@ -23,7 +23,7 @@ def _get_engine_files() -> list[Path]: @resource( "serpapi://engines", name="serpapi-engines-index", - description="Index of available SerpApi engines and their resource URIs.", + description="Index of available SerpApi engine identifiers.", mime_type="application/json", annotations=Annotations( audience=["assistant"], @@ -37,7 +37,6 @@ def engines_index() -> ResourceResult: { "count": len(engines), "engines": engines, - "resources": [f"serpapi://engines/{engine}" for engine in engines], "schema": { "note": "Each engine resource uses a flat schema: params are engine-specific; common_params are shared SerpApi parameters.", "params_key": "params", @@ -76,12 +75,13 @@ def get_engine_schema(engine_name: str) -> ResourceResult: raise NotFoundError( f"Unknown engine: {engine_name!r}. See serpapi://engines for the full list." ) + engine_schema = json.loads(engine_path.read_text()) + engine_schema.get("common_params", {}).pop("api_key", None) return ResourceResult( contents=[ - # The json dump and load chain looks redundant - but it will help remove newlines from the file at `engine_path`, - # making the response context efficient for LLMs + # Re-encode the file as single-line JSON to keep LLM context compact. ResourceContent( - content=json.dumps(json.loads(engine_path.read_text())), + content=json.dumps(engine_schema), mime_type="application/json", ), ] diff --git a/src/server.py b/src/server.py index a627dbf..5e9134e 100644 --- a/src/server.py +++ b/src/server.py @@ -16,9 +16,23 @@ from fastmcp import FastMCP from fastmcp.server.providers import FileSystemProvider +from src.version import __version__ + COMPONENTS_DIR = Path(__file__).parent / "mcp_components" -mcp = FastMCP("SerpApi MCP Server", providers=[FileSystemProvider(COMPONENTS_DIR)]) + +mcp = FastMCP( + "SerpApi MCP Server", + version=__version__, + website_url="https://github.com/serpapi/mcp-server", + instructions=( + "Use the search tool for live SerpApi results. Use the " + "`serpapi://engines` resource to discover valid SerpApi engine names, then read " + "the `serpapi://engines/{engine_name}` resource template with the desired engine " + "name to inspect its supported parameters." + ), + providers=[FileSystemProvider(COMPONENTS_DIR)], +) load_dotenv() diff --git a/src/version.py b/src/version.py new file mode 100644 index 0000000..868250d --- /dev/null +++ b/src/version.py @@ -0,0 +1,11 @@ +import tomllib +from pathlib import Path + + +def _read_version() -> str: + pyproject_path = Path(__file__).resolve().parents[1] / "pyproject.toml" + with pyproject_path.open("rb") as pyproject_file: + return tomllib.load(pyproject_file)["project"]["version"] + + +__version__ = _read_version() diff --git a/tests/test_server.py b/tests/test_server.py index 70047eb..fa0b9c5 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -11,6 +11,7 @@ import pytest import requests import serpapi +from fastmcp import Client from serpapi.models import SerpResults from starlette.requests import Request @@ -18,6 +19,7 @@ import src.mcp_components.resources as mcp_resources import src.mcp_components.tools as mcp_tools import src.server as server +from src.version import __version__ def make_serpapi_http_error( @@ -94,13 +96,22 @@ def test_engines_dir_resolves_to_repo_engines_directory(): assert (mcp_resources.ENGINES_DIR / "google_light.json").exists() +async def test_protocol_server_identity_uses_application_metadata(): + async with Client(server.mcp) as client: + result = client.initialize_result + + assert result.serverInfo.version == __version__ + assert str(result.serverInfo.websiteUrl) == "https://github.com/serpapi/mcp-server" + assert "serpapi://engines" in result.instructions + + async def test_engines_index_resource_reads_engine_files(): result = await server.mcp.read_resource("serpapi://engines") body = json.loads(result.contents[0].content) assert body["count"] == len(list(mcp_resources.ENGINES_DIR.glob("*.json"))) assert "google_light" in body["engines"] - assert "serpapi://engines/google_light" in body["resources"] + assert "resources" not in body def raiser(exc): diff --git a/uv.lock b/uv.lock index 9297ab1..19fd518 100644 --- a/uv.lock +++ b/uv.lock @@ -409,14 +409,14 @@ wheels = [ [[package]] name = "fastmcp" -version = "3.4.2" +version = "3.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fastmcp-slim", extra = ["client", "server"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/29/18/46beaec18c9f86a599ae3f9cdf6677dd6b50240cfd844d18233710b47f13/fastmcp-3.4.2.tar.gz", hash = "sha256:b468722946fc467c3796a6572f7a14d93d48c014cf8fea12910245220cbbe4e1", size = 28756849, upload-time = "2026-06-06T01:30:35.694Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/f7/5188565d1b93ad611cbd80bf473e7ad669d1f3b689c4bedcd304e1ec3472/fastmcp-3.4.4.tar.gz", hash = "sha256:378202e26ec15b23819d9a1c0d1b0ebda096bc712720532010a0b82a45c2b1df", size = 28796458, upload-time = "2026-07-09T00:32:41.352Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/4d/8b1ba42251160e11ca34686344572121432c23a082d56ef6bbdec5888fc1/fastmcp-3.4.2-py3-none-any.whl", hash = "sha256:c87a62b029f0c5400ada85f683629345d2466c39169f0cb853e487b2f7308c08", size = 8018, upload-time = "2026-06-06T01:30:38.118Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/3cef84ba38a23dca1e1e776bfda8a35ab3c7a6c94a8ca81d0715de6dd3c5/fastmcp-3.4.4-py3-none-any.whl", hash = "sha256:f86f208713212260068cf55c32936839eee856fefc7808e18a032f31eb0f718e", size = 8019, upload-time = "2026-07-09T00:32:39.411Z" }, ] [package.optional-dependencies] @@ -426,7 +426,7 @@ apps = [ [[package]] name = "fastmcp-slim" -version = "3.4.2" +version = "3.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "platformdirs" }, @@ -436,9 +436,9 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/2e/d627b28b7403ecc526991ef732921b08bde010006e6148635f053fd29f4c/fastmcp_slim-3.4.2.tar.gz", hash = "sha256:290646e0955a516235a317151034559aa48336cb843d3f006131aedad8759bb4", size = 576291, upload-time = "2026-06-06T01:30:12.553Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/79/f35661c6a1d76dfbe17a079f912d96fffcfdd40fad5a9144bb9e7dfb1fdf/fastmcp_slim-3.4.4.tar.gz", hash = "sha256:dcaa3e0be2127d7eacdce592c2ef0039204923dc0ec396454615cb4a3275b078", size = 590203, upload-time = "2026-07-09T00:32:20.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/58/22afebf18df7260b09148199cbeb90cdcc4b3a4e1b5d7460e3591c3a7add/fastmcp_slim-3.4.2-py3-none-any.whl", hash = "sha256:bdc72492212681ca502755fa8acc0457f559295da1fc3dfc0599adc1c04b82f3", size = 749195, upload-time = "2026-06-06T01:30:11.22Z" }, + { url = "https://files.pythonhosted.org/packages/16/91/321e0b2e9ed70d0628b17ddaec76fc7b09f3e1d5d290f70bf101a2890142/fastmcp_slim-3.4.4-py3-none-any.whl", hash = "sha256:9d3a6327b9ee835188eb7323fc3b5d4cd061631b48da8ece56794bb538972505", size = 765158, upload-time = "2026-07-09T00:32:19.11Z" }, ] [package.optional-dependencies] @@ -1389,8 +1389,8 @@ wheels = [ [[package]] name = "serpapi-mcp-server" -version = "0.4.0" -source = { editable = "." } +version = "0.5.0" +source = { virtual = "." } dependencies = [ { name = "beautifulsoup4" }, { name = "fastmcp", extra = ["apps"] }, @@ -1403,7 +1403,7 @@ dependencies = [ { name = "uvicorn" }, ] -[package.optional-dependencies] +[package.dev-dependencies] dev = [ { name = "black" }, { name = "flake8" }, @@ -1417,23 +1417,26 @@ dev = [ [package.metadata] requires-dist = [ { name = "beautifulsoup4", specifier = ">=4.12.0" }, - { name = "black", marker = "extra == 'dev'", specifier = ">=23.0" }, - { name = "fastmcp", extras = ["apps"], specifier = ">=3.4.2" }, - { name = "flake8", marker = "extra == 'dev'", specifier = ">=6.0.0" }, + { name = "fastmcp", extras = ["apps"], specifier = ">=3.4.4" }, { name = "httpx", specifier = ">=0.25.0" }, - { name = "isort", marker = "extra == 'dev'", specifier = ">=5.12.0" }, { name = "markdownify", specifier = ">=0.14.1" }, - { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.5.0" }, { name = "prefab-ui", specifier = ">=0.20.2,<0.21" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0" }, - { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, { name = "python-dotenv", specifier = ">=1.0.0" }, - { name = "requests", marker = "extra == 'dev'", specifier = ">=2" }, { name = "serpapi", specifier = ">=0.1.5" }, { name = "starlette", specifier = ">=1.0.1" }, { name = "uvicorn", specifier = ">=0.38.0" }, ] -provides-extras = ["dev"] + +[package.metadata.requires-dev] +dev = [ + { name = "black", specifier = ">=23.0" }, + { name = "flake8", specifier = ">=6.0.0" }, + { name = "isort", specifier = ">=5.12.0" }, + { name = "mypy", specifier = ">=1.5.0" }, + { name = "pytest", specifier = ">=7.0" }, + { name = "pytest-asyncio", specifier = ">=0.21.0" }, + { name = "requests", specifier = ">=2" }, +] [[package]] name = "six"