Yandex SERP Scraper - Organic Results & Ads avatar

Yandex SERP Scraper - Organic Results & Ads

Pricing

Pay per event

Go to Apify Store
Yandex SERP Scraper - Organic Results & Ads

Yandex SERP Scraper - Organic Results & Ads

Scrape Yandex search results by keyword. Extract organic positions, titles, URLs, domains and snippets with region targeting. Export JSON/CSV.

Pricing

Pay per event

Rating

5.0

(4)

Developer

Santhej Kallada

Santhej Kallada

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

6 days ago

Last modified

Categories

Share

Yandex SERP Scraper — Organic Results, Ads & Snippets

Scrape Yandex search results at scale without an API key or captcha handling. Give this Yandex SERP scraper a keyword and it returns every result as a clean row: organic position, title, URL, display domain and snippet — with paid results separated out.

Built for SEO rank tracking, competitor monitoring and market research in Russia, Turkey, Kazakhstan and the wider CIS, where Yandex holds a share Google does not.

$4.00 per 1,000 results — a full page of 10 organic results costs about $0.04.

Features

  • Scrape Yandex organic search results — position, title, URL, domain, snippet
  • Track Yandex keyword rankings — positions numbered in page order for rank monitoring
  • Scrape Yandex ads separately — paid placements parsed and flagged, returned only if you ask
  • Target a Yandex region — Moscow, St Petersburg, Istanbul, Almaty and every other lr region ID
  • Set the Yandex interface language — Russian, English, Turkish and more
  • Scrape Yandex results for one domainsite: filtering built in
  • Filter Yandex results by recency — only results from the last N days
  • Scrape multiple keywords in one run — up to 50 per run, processed concurrently
  • Export Yandex SERP data to JSON, CSV or Excel — or pull it from the API

What you get

Every row includes:

FieldDescription
positionRank within the results, numbered from 1
titleResult title, reassembled from Yandex's highlighted fragments
urlDestination URL
displayUrlDomain as Yandex displays it
snippetDescription text shown under the result
isAdWhether the result is a paid placement
searchQueryThe keyword that produced it
sourcePageWhich SERP page it came from
scrapedAtTimestamp

Use cases

Yandex rank tracking. Monitor where your domain sits for a keyword set in a specific Yandex region, on whatever schedule you choose. position and displayUrl are all a rank tracker needs.

Competitor visibility. See which domains hold the top positions for your commercial keywords, and how that changes over time.

Keyword and content research. Snippets show what Yandex considers relevant for a query — useful input for content briefs targeting the RU/TR/KZ market.

Ad intelligence. Turn on includeAds to see who is bidding on your keywords and what their ad copy says.

Market entry research. Yandex is the dominant engine in several markets where Google data tells you very little. This is the equivalent dataset for those markets.

Input

{
"queries": ["running shoes", "купить кроссовки"],
"maxResults": 30,
"includeAds": false,
"region": 213,
"language": "ru",
"site": "example.com",
"withinDays": 7
}
OptionDescription
queriesSearch keywords, one or more (up to 50 per run)
maxResultsOrganic results per keyword. Yandex serves ~10 per page, so 30 fetches about 3 pages
includeAdsAlso return paid results. Ads are billed like organic results
regionYandex region ID (lr), e.g. 213 Moscow, 2 St Petersburg, 84 USA, 983 Istanbul
languageInterface language: ru, en, tr, …
siteRestrict to one domain — applied as a site: operator
withinDaysOnly results published in the last N days
pageConcurrencyPages fetched in parallel per keyword
countryExit country. Leave this empty unless you have a specific reason — see below

Output example

{
"position": 1,
"title": "1,000+ shoes reviewed and cut in half",
"url": "https://runrepeat.com/",
"displayUrl": "runrepeat.com",
"snippet": "Independent running shoe reviews with lab testing…",
"isAd": false,
"searchQuery": "running shoes",
"sourcePage": 1
}

Notes worth reading

  • Yandex returns about 10 organic results per page. maxResults: 30 therefore fetches roughly three pages. Setting it very high returns everything available rather than erroring.
  • Ads are not billed unless you want them. A typical Yandex page carries around as many paid placements as organic results. They are parsed either way but only returned — and charged — when includeAds is on.
  • Blocked and captcha pages are never billed. If Yandex challenges a request it is retried, and if it still fails the page is skipped and reported in blocked_pages.
  • Leave country empty. This is counter-intuitive but measured: pinning an exit country makes Yandex less reliable, not more, and returns fewer results. The default is deliberately unset.
  • Region targeting is done with region, not country. Yandex's own lr parameter is what controls which market's results you get.

Pricing

EventPrice
Result returned$0.004 ($4.00 per 1,000)
Zero-result keyword$0.002
Actor start$0.0005

A full page of 10 organic results costs about $0.04. Flat across every Apify plan — no tier gating and no subscription.

FAQ

Do I need a Yandex API key or XML quota? No. Yandex's official XML API requires registration and imposes quotas; this needs neither.

Can I track rankings for a specific city? Yes — set region to the Yandex lr ID for that city. Moscow is 213, St Petersburg is 2, Istanbul is 983.

Does it handle Yandex captchas? Yes. Challenged requests are retried automatically, and any page that still fails is skipped without charge.

Can I scrape Yandex in Russian? Yes — pass Cyrillic keywords directly and set language to ru.

How do I separate ads from organic results? They are separated for you. Organic results come back with isAd: false; ads only appear when includeAds is enabled.

Can I run this on a schedule? Yes — use Apify's scheduler for daily or weekly rank tracking, or trigger it from your own pipeline via API.

Why is country empty by default? Because testing across domains and exit countries showed unpinned requests succeed more often and return more results. Pinning us in particular halved the result count.

Support

Open an issue on the Actor's Issues tab and I'll take a look.