Yandex SERP Scraper

Yandex SERP Scraping Webhooks

Set callbackUrl in the submit request body to receive the result via webhook instead of polling. When parsing completes, the server sends a POST request to that URL with the result payload.

Submit with Callback

curl https://app.scrapering.com/api/parsing/v1/serp-yandex \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "q": "buy pizza",
  "count": 10,
  "callbackUrl": "https://my-server.com/webhook/parsing"
}'

Webhook Payload

Make sure your webhook endpoint responds with a 2xx status code to acknowledge receipt.

Your endpoint will receive a POST request with the same body as the polling result, plus a scope field:

{
  "status": "ready",
  "scope": "serp:yandex",
  "requestId": "c1d2e3f4-a1b2-4c3d-8e9f-000111222333",
  "data": {
    "organic": [
      {
        "link": "https://pizza.ru/",
        "rank": 1,
        "title": "Pizza - Order Online",
        "description": "Fast pizza delivery across the city."
      }
    ]
  },
  "respondedAt": "2026-05-08T10:00:06.000Z"
}
FieldTypeDescription
statusstringAlways "ready"
scopestringScraper of the task: "serp:yandex"
requestIdstringTask ID returned from the submit endpoint
dataobjectTask result — the same as data in the polling result
respondedAtstringISO 8601 timestamp of completion

A webhook is sent for successful and failed tasks alike — check data to see whether the task succeeded, see API Status Codes. If your endpoint does not answer with 2xx, the request is retried up to two more times, after 1 and 2 seconds. Cancelled tasks and tasks that time out do not trigger a webhook — use the result endpoint for them.

Important! Screenshot is stored for 1 hour after the scrape.
Save the results on your side so you don't lose them.

Next steps