{"id":28998624,"url":"https://github.com/luminati-io/serp-api","last_synced_at":"2025-06-25T07:09:29.659Z","repository":{"id":279179102,"uuid":"937509582","full_name":"luminati-io/serp-api","owner":"luminati-io","description":"An enterprise-grade Bright Data SERP API for large-scale, real-time search engine results extraction.","archived":false,"fork":false,"pushed_at":"2025-02-24T07:24:11.000Z","size":810,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-22T07:02:03.107Z","etag":null,"topics":["api","google-scraper","html","python","serp-api","serp-scraping","web-scraping"],"latest_commit_sha":null,"homepage":"https://brightdata.com/products/serp-api","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luminati-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-23T08:23:13.000Z","updated_at":"2025-02-24T07:24:14.000Z","dependencies_parsed_at":"2025-03-01T02:45:09.607Z","dependency_job_id":null,"html_url":"https://github.com/luminati-io/serp-api","commit_stats":null,"previous_names":["luminati-io/serp-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/luminati-io/serp-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminati-io%2Fserp-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminati-io%2Fserp-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminati-io%2Fserp-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminati-io%2Fserp-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luminati-io","download_url":"https://codeload.github.com/luminati-io/serp-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminati-io%2Fserp-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261823776,"owners_count":23215150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","google-scraper","html","python","serp-api","serp-scraping","web-scraping"],"created_at":"2025-06-25T07:09:21.772Z","updated_at":"2025-06-25T07:09:29.628Z","avatar_url":"https://github.com/luminati-io.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SERP API\n\n[![Promo](https://github.com/luminati-io/LinkedIn-Scraper/raw/main/Proxies%20and%20scrapers%20GitHub%20bonus%20banner.png)](https://brightdata.com/products/serp-api) \n\nThis repository provides two approaches for collecting Search Engine Results Page (SERP) data:\n1. A free, small-scale Google scraper suitable for basic data collection\n2. An enterprise-grade API solution for large-scale, real-time data collection from major search engines\n\n## Table of Contents\n- [Free SERP Scraper](#free-serp-scraper)\n   - [Input Parameters](#input-parameters)\n   - [Implementation](#implementation)\n   - [Sample Output](#sample-output)\n- [Limitations](#limitations)\n- [Bright Data SERP API](#bright-data-serp-api)\n   - [Key Features](#key-features)\n   - [Getting Started](#getting-started)\n   - [Direct API Access](#direct-api-access)\n   - [Native Proxy-Based Access](#native-proxy-based-access)\n- [Query Parameters Overview](#query-parameters-overview)\n   - [Google](#google)\n     - [Google Search](#1-google-search)\n     - [Google Maps](#2-google-maps)\n     - [Google Trends](#3-google-trends)\n     - [Google Reviews](#4-google-reviews)\n     - [Google Lens](#5-google-lens)\n     - [Google Hotels](#6-google-hotels)\n     - [Google Flights](#7-google-flights)\n   - [Bing](#bing)\n   - [Yandex](#yandex)\n   - [DuckDuckGo](#duckduckgo)\n- [Other Settings for SERP API](#other-settings-for-serp-api)\n   - [Asynchronous Requests](#asynchronous-requests)\n   - [Multi-Query Requests](#multi-query-requests)\n- [Support \u0026 Resources](#support--resources)\n\n## Free SERP Scraper\n[The free scraper](https://github.com/luminati-io/serp-api/tree/main/free_serp_scraper) allows small-scale Google SERP data collection.\n\n\u003cimg width=\"700\" alt=\"google-search\" src=\"https://github.com/luminati-io/serp-api/blob/main/Images/bright%20data%20products%20serp.png\" /\u003e\n\n\n### Input Parameters\n- **File:** Text file containing search terms (required)\n- **Format:** One search term per line\n\n### Implementation\nModify these parameters in the Python file:\n```python\n# free_serp_scraper/google_serp.py\nHEADLESS = False\nMAX_RETRIES = 2\nREQUEST_DELAY = (1, 4)\n\nwith open(\"search_terms.txt\", \"r\", encoding=\"utf-8\") as file:\n    pass\n```\n\n### Sample Output\n\u003cimg width=\"700\" alt=\"google-serp-data\" src=\"https://github.com/luminati-io/serp-api/blob/main/Images/samle%20output%20serp.png\" /\u003e\n\n\n## Limitations\nGoogle implements several anti-scraping measures:\n\n1. **CAPTCHAs**: Used to differentiate between humans and bots\n2. **IP Blocks**: Temporary or permanent bans for suspicious activity\n3. **Rate Limiting**: Quick detection and blocking of unidentified requests\n4. **Geotargeting**: Results vary by location, language, and device\n5. **Honeypot Traps**: Hidden elements to detect automated access\n\n## Bright Data SERP API\n[Bright Data's SERP API](https://brightdata.com/products/serp-api) offers a robust solution for reliable SERP data collection.\n\n### Key Features\n\n- Pay-per-successful-request model\n- Fast response times\n- Location-specific targeting\n- Support for multiple device types and search parameters\n- Coverage of major search engines (Google, Bing, DuckDuckGo, Yandex, Baidu, Yahoo, Naver)\n- Built-in anti-bot solutions\n- Real-time results with city-level accuracy\n- Structured data output (JSON/HTML)\n\n**Note:** The **SERP API** is part of [**Bright Data’s Web Scraping Suite**](https://docs.brightdata.com/scraping-automation/introduction) and includes full proxy management, unblocking, and parsing capabilities.\n\n### Getting Started\n\n1. **Prerequisites:**\n    - Create a [Bright Data account](https://brightdata.com/)\n    - Obtain your [API key](https://docs.brightdata.com/general/account/api-token)\n2. **Setting Up SERP API:** Follow the [step-by-step guide](https://github.com/luminati-io/SERP-API/blob/main/setup_serp_api.md) to set up the new SERP API in your Bright Data account.\n3. **Implementation Methods:**\n    1. Direct API Access\n    2. Native Proxy-Based Access\n\n### Direct API Access\nThe simplest way to use the API is by making a direct request.\n\n**cURL Example**\n```bash\ncurl https://api.brightdata.com/request \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer API_TOKEN\" \\\n  -d '{\n        \"zone\": \"ZONE_NAME\",\n        \"url\": \"https://www.google.com/search?q=ollama\u0026brd_json=1\",\n        \"format\": \"raw\"\n      }'\n```\n\n**Python Example**\n```python\nimport requests\nimport json\n\nurl = \"https://api.brightdata.com/request\"\n\nheaders = {\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer API_TOKEN\"}\n\npayload = {\n    \"zone\": \"ZONE_NAME\",\n    \"url\": \"https://www.google.com/search?q=ollama\u0026brd_json=1\",\n    \"format\": \"raw\",\n}\n\nresponse = requests.post(url, headers=headers, json=payload)\n\nwith open(\"serp_direct_api.json\", \"w\") as file:\n    json.dump(response.json(), file, indent=4)\n\nprint(\"Response saved to 'serp_direct_api.json'.\")\n```\n\n👉 See the [full JSON output](https://github.com/luminati-io/SERP-API/blob/main/serp_api_outputs/serp_direct_api.json)\n\n**Note**: Use `brd_json=1` for parsed JSON or `brd_json=html` for parsed JSON + full nested HTML.\n\nLearn more about parsing results: [SERP API Parsing Guide](https://docs.brightdata.com/scraping-automation/serp-api/parsing-search-results)\n\n### Native Proxy-Based Access\nAn alternative method using proxy routing.\n\n**cURL Example**\n```bash\ncurl -i \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003cCUSTOMER_ID\u003e-zone-\u003cZONE_NAME\u003e:\u003cZONE_PASSWORD\u003e \\\n  -k \\\n  \"https://www.google.com/search?q=ollama\"\n```\n\n**Python Example**\n```python\nimport requests\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\nhost = \"brd.superproxy.io\"\nport = 33335\nusername = \"brd-customer-\u003ccustomer_id\u003e-zone-\u003czone_name\u003e\"\npassword = \"\u003czone_password\u003e\"\nproxy_url = f\"http://{username}:{password}@{host}:{port}\"\n\nproxies = {\"http\": proxy_url, \"https\": proxy_url}\n\nurl = \"https://www.google.com/search?q=ollama\"\nresponse = requests.get(url, proxies=proxies, verify=False)\n\nwith open(\"serp_native_proxy.html\", \"w\", encoding=\"utf-8\") as file:\n    file.write(response.text)\n\nprint(\"Response saved to 'serp_native_proxy.html'.\")\n```\n\n👉 See the [full HTML output](https://github.com/luminati-io/SERP-API/blob/main/serp_api_outputs/serp_native_proxy.html)\n\n**SSL Certificate**: Load Bright Data’s SSL certificate for production. Learn more: [SSL Certificate Guide](https://docs.brightdata.com/general/account/ssl-certificate)\n\n## Query Parameters Overview\nBright Data SERP API lets you tailor requests for multiple search engines—including Google, Bing, Yandex, and DuckDuckGo—using query parameters for localization, pagination, device emulation, and more. This overview provides a high-level look at the API’s capabilities.\n\n\u003e For a complete list and detailed explanation of all query parameters, please refer to the [Detailed Query Parameters Documentation](https://docs.brightdata.com/scraping-automation/serp-api/query-parameters).\n\n### Google\nSERP API supports various Google services, including [**Search**](https://brightdata.com/products/serp-api/google-search), [**Maps**](https://brightdata.com/products/serp-api/google-search/maps), [**Trends**](https://brightdata.com/products/serp-api/google-search/trends), [**Reviews**](https://brightdata.com/products/serp-api/google-search/reviews), **Lens**, [**Hotels**](https://brightdata.com/products/serp-api/google-search/hotels), and [**Flights**](https://brightdata.com/products/web-scraper/google-flights). Below are key configuration parameters for each service:\n\n#### 1. Google Search\nCustomize your search results with options for localization, search type, pagination, geolocation, and device targeting.\n\n**Localization**\n- `gl`: Country code for the search location (e.g., `gl=us`).\n- `hl`: Language code for the results (e.g., `hl=en`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/search?q=pizza\u0026gl=us\u0026hl=en\"\n```\n\n**Search Type:**\nUse the **`tbm`** parameter to specify the search type:\n\n- Images: `tbm=isch`\n- Shopping: `tbm=shop`\n- News: `tbm=nws`\n- Videos: `tbm=vid`\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/search?q=pizza\u0026tbm=shop\"\n```\n\n**Pagination:**\n- `start`: Result offset (0 for the first page, 20 for the second, etc.).\n- `num`: Number of results per page (default is 20).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/search?q=pizza\u0026start=20\u0026num=50\"\n```\n\n**Geolocation:**\n- `uule`: Encoded location string for geo-specific results\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/search?q=pizza\u0026uule=w+CAIQICINVW5pdGVkK1N0YXRlcw\"\n```\n\n**Device Targeting:**\nUse the **`brd_mobile`** parameter:\n\n- `0`: Desktop (default)\n- `1`: Random mobile\n- Specific values: `ios` (or `iphone`), `ipad`, `android`, `android_tablet`\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/search?q=pizza\u0026brd_mobile=1\"\n```\n\n#### 2. Google Maps\nCustomize maps queries by specifying coordinates and filtering by accommodation type.\n\n**Coordinates:**\n- Format: `@latitude,longitude,zoom` (e.g., zoom from `3z` to `21z`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/maps/search/restaurants/@47.30227,1.67458,14.00z\"\n```\n\n**Accommodation Search:**\n\n- `brd_accomodation_type`:\n    - `hotels` (default)\n    - `vacation_rentals`\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/maps/search/hotels+new+york/?brd_accomodation_type=vacation_rentals\"\n```\n\n#### 3. Google Trends\nRetrieve trend data with customizable time ranges and widget options.\n\n**Required Parameters:**\n\n- `brd_json=1`: Return parsed JSON results.\n- `brd_trends`: Specify widgets (e.g., `timeseries,geo_map`).\n\n**Time Range:**\n\n- `date`: Defines the time range (e.g., `now 1-d` for the past day).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://trends.google.com/trends/explore?q=pizza\u0026date=now+1-d\u0026brd_trends=timeseries,geo_map\u0026brd_json=1\"\n```\n\n#### 4. Google Reviews\nFetch reviews using a feature ID and sort them as needed.\n\n**Key Parameters:**\n\n- `fid`: Feature ID from search results.\n- `sort`: Sorting order (e.g., `newestFirst`, `ratingHigh`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user \"brd-customer-\u003cid\u003e-zone-\u003cname\u003e:\u003cpass\u003e\" \\\n  \"https://www.google.com/reviews?fid=0x808fba02425dad8f\u0026sort=newestFirst\"\n```\n\n#### 5. Google Lens\nSearch by image using a URL or file upload.\n\n**Image Search:**\n\n- `url`: The image URL to search.\n- `brd_json=1`: Return results as JSON.\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://lens.google.com/uploadbyurl?url=https://example.com/image.jpg\u0026brd_json=1\"\n```\n\n#### 6. Google Hotels\nCustomize hotel searches with booking dates and currency options.\n\n**Booking Parameters:**\n\n- `brd_dates`: Check-in and check-out dates (`YYYY-MM-DD,YYYY-MM-DD`).\n- `brd_currency`: Currency code (e.g., `USD`, `EUR`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/travel/hotels?q=hotels+new+york\u0026brd_dates=2022-01-20,2022-02-05\"\n```\n\n#### 7. Google Flights\nSearch for flights using similar localization parameters.\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.google.com/travel/flights?q=flights+new+york\u0026gl=us\u0026hl=en\"\n```\n\n\n### Bing\nConfigure Bing queries with options for localization, geo-targeting, pagination, device and browser targeting, and output formats. Check out the [dedicated Bing API](https://brightdata.com/products/serp-api/bing-search).\n\n**Localization**\n\n- `setLang`: Language for the interface (e.g., `setLang=en-US`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026setLang=en-US\"\n```\n\n**Geo-Location**\n\n- `location`: Search origin (e.g., `location=New+York`).\n- `cc`: Country code (e.g., `cc=us`).\n- `mkt`: Market code (e.g., `mkt=en-US`).\n\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026location=New+York\u0026cc=us\u0026mkt=en-US\"\n```\n\n**Pagination**\n\n- `count`: Number of results (e.g., `count=50`).\n- `first`: Offset for pagination (e.g., `first=11` for the second page).\n\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026count=50\u0026first=11\"\n```\n\n**Filters**\n\n- `safesearch`: Adult content filter (e.g., `safesearch=off`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026safesearch=off\"\n```\n\n**Device Targeting**\n\n- `brd_mobile`: Specifies the device type (e.g., `brd_mobile=1` for mobile, or `brd_mobile=ios`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026brd_mobile=1\"\n```\n\n**Browser Targeting**\n\n- `brd_browser`: Specifies the browser (e.g., `brd_browser=chrome`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026brd_browser=chrome\"\n```\n\n**Parsing**\n\n- `brd_json`: Returns parsed JSON (e.g., `brd_json=1`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.bing.com/search?q=pizza\u0026brd_json=1\"\n```\n\n### Yandex\nBriefly configure Yandex queries with parameters for localization, pagination, time range, and device/browser targeting. Check out the [dedicated Yandex API](https://brightdata.com/products/serp-api/yandex-search).\n\n**Localization**\n- `lr`: Specifies the region (e.g., `lr=84` for the USA).\n- `lang`: Page language (e.g., `lang=en`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.yandex.com/search/?text=pizza\u0026lr=84\u0026lang=en\"\n```\n\n**Pagination**\n- `p`: Result page number (e.g., `p=2` for the second page).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.yandex.com/search/?text=pizza\u0026p=2\"\n```\n\n**Time Range**\n- `within`: Specifies the time range (e.g., `within=1`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.yandex.com/search/?text=pizza\u0026within=1\"\n```\n\n**Device Targeting**\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.yandex.com/search/?text=pizza\u0026brd_mobile=1\"\n```\n\n**Browser Targeting**\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://www.yandex.com/search/?text=pizza\u0026brd_browser=chrome\"\n```\n\n### DuckDuckGo\nA quick overview of DuckDuckGo search customization using localization, safe search, time range, and device/browser targeting. Check out the [dedicated DuckDuckGo API](https://brightdata.com/products/serp-api/duckduckgo-search).\n\n**Localization**\n\n- `kl`: Country and language (e.g., `kl=us-en`).\n- `kad`: Defines the language for interface elements.\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://duckduckgo.com/?q=pizza\u0026kl=us-en\"\n```\n\n**Safe Search**\n\n- `kp`: Enables safe search (e.g., `kp=1`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://duckduckgo.com/?q=pizza\u0026kp=1\"\n```\n\n**Time Range**\n\n- `df`: Specifies the time range (e.g., `df=d`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://duckduckgo.com/?q=pizza\u0026df=d\"\n```\n\n**Device Targeting**\n\n- `brd_mobile`: For mobile device emulation.\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://duckduckgo.com/?q=pizza\u0026brd_mobile=1\"\n```\n\n**Browser Targeting**\n\n- `brd_browser`: For specifying a browser (e.g., `chrome`).\n\n```bash\ncurl \\\n  --proxy brd.superproxy.io:33335 \\\n  --proxy-user brd-customer-\u003ccustomer-id\u003e-zone-\u003czone-name\u003e:\u003czone-password\u003e \\\n  \"https://duckduckgo.com/?q=pizza\u0026brd_browser=chrome\"\n```\n\n## Other Settings for SERP API\n\n### Asynchronous Requests\n- Sync (default): Get a real-time response immediately.\n- Async: Retrieve results later (ideal for high-volume requests).\n\nLearn more: [How Async Works](https://docs.brightdata.com/scraping-automation/serp-api/asynchronous-requests#how-it-works)\n\n\n### Multi-Query Requests\nSend **parallel queries** in one API call, sharing the same IP and session using the `multi` parameter.\n\n```python\nmulti:[\n  {\"keyword\":\"shoes\",\"num\":50},\n  {\"keyword\":\"shoes\",\"num\":200}\n]\n```\nLearn more: [Multiple Queries Guide](https://docs.brightdata.com/scraping-automation/serp-api/asynchronous-requests#multiple-queries-in-a-single-request)\n\n\n## Support \u0026 Resources\n- **Documentation:** [SERP API Docs](https://docs.brightdata.com/scraping-automation/serp-api/)\n- **Query Parameters Documentation:** [Detailed Query Parameters Docs](https://docs.brightdata.com/scraping-automation/serp-api/query-parameters)\n- **Other Guides:** [Web Unlocker API](https://github.com/luminati-io/web-unlocker-api), [Google Maps](https://github.com/luminati-io/Google-Maps-Scraper), [Google News](https://github.com/luminati-io/Google-News-Scraper)\n- **Interesting Read:** [Best SERP APIs](https://brightdata.com/blog/web-data/best-serp-apis), [Build a RAG Chatbot with SERP API](https://brightdata.com/blog/web-data/build-a-rag-chatbot), [Scrape Google Search with Python](https://brightdata.com/blog/web-data/scraping-google-with-python)\n- **Technical Support:** [Contact Us](mailto:support@brightdata.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluminati-io%2Fserp-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluminati-io%2Fserp-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluminati-io%2Fserp-api/lists"}