Keyword lists
Batch SERP API
Batching, done client-side.
Run a keyword list through Google SERP tasks: fan out task creation, poll in rounds, collect results. There is no server-side batch object, no queue priority tiers, and every task costs the same.
keywords = open("keywords.txt").read().split()
tasks = {kw: requests.post(f"{API}/v1/serp/google/organic/tasks", headers={**H,
"Idempotency-Key": f"batch7-{i}"}, json={"q": kw, "country": "GB"}).json()["job"]["id"]
for i, kw in enumerate(keywords)}
# collect: for each id → GET /v1/serp/tasks/{id}; keep job.result when status=="completed"Fan-out / collect pattern
- Split the keyword list into chunks.
- Create one task per keyword with an Idempotency-Key such as batch7-{i}, so a re-run of the same chunk does not create duplicates.
- Store keyword → task_id.
- Collect in rounds: GET each pending id, keep job.result for completed, note failed ones.
- Repeat rounds until every id has a final status.
No pricing tiers
There is no standard or priority queue. Every completed search costs 2 Credits (display rate), whether sync or task.
Launch status for this page
Check engine availability before choosing an endpoint. Google also supports News, Images and asynchronous tasks.
- GoogleGoogle is callable today with a Bearer API key.
SERP searches are charged per successful search at a display rate of 2 Credits per search; failed searches are not charged. Polling task status is free. The current rate is on Pricing.
What this is not
- No batch object or batch ID.
- No completion-time promise.
- No webhook.
- Non-Google engines are sync only.
Frequently asked questions
Is there a batch endpoint?
No. Create tasks one by one.
Priority queue?
No queue tiers.
Non-Google keywords?
Call the sync endpoint for each query.
Run your keyword list
Get an API key and fan it out as tasks.