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