Skip to content
SpideyData

Porting guide

SERP Async API

From callbacks to polling, step by step.

Google: live · not GA

Coming from a callback-based async SERP API? Map each callback step to a polling loop: create a task, store task_id, poll with backoff. No callback URL is accepted.

Python · backoff poller
import time, requests
job = requests.post(f"{API}/v1/serp/google/organic/tasks", headers=H,
                    json={"q": "vpn review"}).json()["job"]
delay = 2
while True:
    j = requests.get(f"{API}/v1/serp/tasks/{job['id']}", headers=H).json()["job"]
    if j["status"] in ("completed", "failed"): break
    time.sleep(delay); delay = min(delay * 2, 60)

Callback → poll mapping

Register a callback URL

Polling flow here: Nothing to register

Submit a job with the callback URL

Polling flow here: POST /v1/serp/google/{vertical}/tasks; store job.id

Wait for the push

Polling flow here: GET /v1/serp/tasks/{task_id} on a timer

Verify the push signature

Polling flow here: Not needed; you pull with your Bearer key

Parse the pushed body

Polling flow here: Read job.result when status is completed

Backoff poller

  1. Start with a short delay and double it each round, with a cap.
  2. Stop when status is completed or failed.
  3. On failed, read error.retryable: if true, create a new task; if false, log error.code and error.message.
  4. On 429 from GET, back off further; no poll-rate number is published.

Launch status for this page

Check engine availability before choosing an endpoint. Google also supports News, Images and asynchronous tasks.

  • GoogleLiveGoogle 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 callback URL or HMAC signing.
  • No webhook.
  • Google only.

Frequently asked questions

Can I pass a callback URL?

No. There is no callback or HMAC signing.

Is GET poll rate-limited?

The platform-wide 429 applies; no number is published.

What does create return?

202 with a SerpJobResponse.

Port your async flow

Get an API key and swap callbacks for a poller.