Skip to main content
Use the Batch API to submit multiple search queries in a single request. Each query runs independently and returns structured results just like the standard SERP API. This is useful when you need to check multiple keywords at once — for rank tracking, content monitoring, or search comparison tools.

Submit a Batch API Job

Each object in queries uses the same parameters as the single-query SERP API.
curl --request POST \
  --url 'https://api.hasdata.com/scrape/batch/google/serp' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <your-api-key>' \
  --data '{
    "requests": [
      { "q": "best vpn 2025", "gl": "us", "hl": "en" },
      { "q": "cheap flights to berlin", "gl": "de", "hl": "de" },
      { "q": "ai content detection tools", "gl": "us", "hl": "en" }
    ]
  }'

Response

{
  "jobId": "9a35f32e-4f9c-4d49-9c6e-7c4de4a091e0",
  "status": "ok"
}
This means the batch job was accepted and is being processed asynchronously.

Get Job Status & Results

To check the status of your batch job:
curl --request GET \
  --url 'https://api.hasdata.com/scrape/batch/google/serp/9a35f32e-4f9c-4d49-9c6e-7c4de4a091e0' \
  --header 'x-api-key: <your-api-key>'
To retrieve results once ready (supports pagination):
curl --request GET \
  --url 'https://api.hasdata.com/scrape/batch/google/serp/9a35f32e-4f9c-4d49-9c6e-7c4de4a091e0/results?page=1&limit=100' \
  --header 'x-api-key: <your-api-key>'
{
  "page": 0,
  "limit": 100,
  "total": 3,
  "results": [
    {
      "query": {
        "q": "ai content detection tools",
        "gl": "us",
        "hl": "en"
      },
      "result": {
        "id": "5c3c1eef-eca5-4427-820b-24da63e594e6",
        "status": "ok",
        "html": "https://files.hasdata.com/5c3c1eef-eca5-4427-820b-24da63e594e6.html",
        "json": "https://files.hasdata.com/5c3c1eef-eca5-4427-820b-24da63e594e6.json",
        "url": "https://www.google.com/search?q=ai+content+detection+tools&hl=en&gl=us&sourceid=chrome&ie=UTF-8"
      }
    },
    {
      "query": {
        "q": "cheap flights to berlin",
        "gl": "de",
        "hl": "de"
      },
      "result": {
        "id": "57090249-780b-4a53-add6-aec16c700e7c",
        "status": "ok",
        "html": "https://files.hasdata.com/57090249-780b-4a53-add6-aec16c700e7c.html",
        "json": "https://files.hasdata.com/57090249-780b-4a53-add6-aec16c700e7c.json",
        "url": "https://www.google.com/search?q=cheap+flights+to+berlin&hl=de&gl=de&sourceid=chrome&ie=UTF-8"
      }
    },
    {
      "query": {
        "q": "best vpn 2025",
        "gl": "us",
        "hl": "en"
      },
      "result": {
        "id": "b434d79b-cdff-42f5-87c1-a38b883e9a38",
        "status": "ok",
        "html": "https://files.hasdata.com/b434d79b-cdff-42f5-87c1-a38b883e9a38.html",
        "json": "https://files.hasdata.com/b434d79b-cdff-42f5-87c1-a38b883e9a38.json",
        "url": "https://www.google.com/search?q=best+vpn+2025&hl=en&gl=us&sourceid=chrome&ie=UTF-8"
      }
    }
  ]
}
Each result matches the format of a regular Google SERP API response, except it’s returned as part of an array.

Notes

  • Maximum batch size: 10,000 queries
  • Failed queries do not consume credits