Yandexsearch Scraper | Search Results and Rankings avatar

Yandexsearch Scraper | Search Results and Rankings

Pricing

from $2.51 / 1,000 rankings

Go to Apify Store
Yandexsearch Scraper | Search Results and Rankings

Yandexsearch Scraper | Search Results and Rankings

Yandex Search scraper (Яндекс Поиск): organic Yandex SERP results by keyword or search URL, with rank, title, URL, snippet, domain, displayed URL and country, by city, language and date. 50 results in 8 seconds, 19 fields each. A Парсер выдачи Яндекса for SEO rank tracking in 2026. No account.

Pricing

from $2.51 / 1,000 rankings

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Yandexsearch Scraper (Яндекс Поиск) | Search Results and Rankings (2026)

Yandexsearch rankings, 19 fields each, from any search.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for “jd scraper” in Apify Store search), with 750,000+ combined lifetime runs.

Every organic Yandex result for your keywords, one ranked row per page, by country and by city. Our default test run typed купить кофемашину (buy a coffee machine), searched Yandex for Russia and saved the top 50 organic results in 6 seconds: rank, title, URL, snippet, the address Yandex displays, the domain, the words Yandex highlighted and its count of matches (186,000). No Yandex account, no API key. A Yandex SERP API and a Парсер выдачи Яндекса in one form.

Why choose this actor?

Checking your Yandex positions by hand, city by city? Copying the top 10 into a spreadsheet every Monday? Unpacking nested page objects before you can sort results by domain?

  • Type a keyword, or paste the Yandex search you already have open. Two ways in: keywords in any language, or search URLs from yandex.ru, yandex.com, yandex.com.tr, yandex.kz, yandex.by or ya.ru, whose keyword, city, results language and date filter are kept. In our test a pasted Saint Petersburg search for ремонт квартир and a typed keyword ran side by side and returned 19 dated rows in 4 seconds. The most used Yandex scraper on the Store takes a typed query only.
  • One flat row per result, 22 fields, 18 of them filled on every row. On our default run (50 results in Russia), every row carried its rank, page, title, URL, snippet, displayed address, domain, highlighted words, favicon, Yandex's match count, the country, region and Yandex site it was ranked for, and the keyword and page it came from; 66% also had Yandex's link to more results from the same site. No arrays of results to unpack: sort by domain, filter by position, done.
  • Nothing to fill in before the first run. No field is required. The form opens with a keyword and Russia already set: press Start and the first 50 results arrive in about 6 seconds. Change the keyword, the country or the city when you are ready.

Try Yandexsearch Scraper

Try your first 50 rankings

Paste this input in the JSON tab of the Input page and press Start. It reads the top 50 organic Yandex results for купить кофемашину in Russia.

{
"queries": ["купить кофемашину"],
"country": "ru",
"maxResultsPerQuery": 50
}

It runs on the Apify Free plan. Each result becomes one row of your dataset: open the Output tab to see the ranking table (keyword, rank, title, domain, snippet, Yandex's match count, URL), or switch to the full view for all 22 fields. Export the rows as JSON, CSV, Excel or HTML, or read them from the API.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:

You have access to the Yandex Search Scraper on Apify: silentflow/yandexsearch-scraper
It reads Yandex organic web search results (yandex.ru, yandex.com.tr, yandex.kz, yandex.by,
yandex.uz, yandex.az, yandex.com.ge, yandex.com) without an account and returns one row per result,
in Yandex's order. Organic results only: no ads, no Yandex widgets. At most 250 results per search.
Input schema (no field is required):
- queries (array of strings): keywords in any language, Yandex operators allowed ("site:apify.com").
- startUrls (array of {url}): Yandex search URLs (yandex.ru/search/?text=...&lr=213, yandex.com.tr,
yandex.kz, ya.ru...). text, lr (city), lang and within (date filter) are read from the URL.
- country (string, default "ru"): two-letter code, three-letter code or English name. ru, tr, kz, by,
uz, az, ge, am, kg, tj, md, ua, lv, lt, ee, il, de, fr, pl, gb, us. Sets the Yandex site and region.
Another country gets Yandex's worldwide ranking.
- region (string): a city ("Moscow", "Москва", "Kazan", "Istanbul", "Almaty"...) or any Yandex
region code (lr), such as "213" for Moscow or "2" for Saint Petersburg. Overrides the country region.
- language (string, default "any"): any | ru | en | tr | uk | kk | be | uz | az | de | fr | id | tt.
Keeps only pages written in that language.
- timeRange (string, default "any"): any | day | threeDays | week | twoWeeks | month | threeMonths |
sixMonths | year. With a period set, rows carry publishedAt.
- maxResultsPerQuery (integer, default 50, max 250): results per keyword or URL.
- maxItems (integer, default 1000): rows saved in total, across all keywords.
Output per result (22 fields, null when Yandex gives no value):
- id (string, stable for the same keyword, market, filters and page), url (string), title (string)
- snippet (string), displayedUrl (string), domain (string, without www.),
highlightedWords (array of strings, the words Yandex bolded, lower case),
fileType (string: pdf, doc... or null for a web page)
- position (integer, organic rank from 1 across pages), page (integer, from 1),
totalResults (integer, Yandex's estimate of matches, null when the page does not say)
- publishedAt (RFC 3339, on every row with a timeRange, on some rows without), country (string), regionId (integer),
regionName (string), language (string or null), yandexDomain (string)
- faviconUrl (string), moreFromSiteUrl (string, Yandex search of more results from that site)
- searchQuery (string), searchUrl (string, the Yandex page the row was read from),
scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript: client.actor("silentflow/yandexsearch-scraper").call(run_input=...).

How to scrape Yandex search results

Three inputs, from the simplest to a full regional setup. Each one runs as is.

Get the top 50 Yandex results for a keyword

One keyword, the default market (Russia). The run returns 50 rows in Yandex's order, ranks 1 to 50.

{
"queries": ["купить кофемашину"]
}

Track your rankings in one city

Yandex ranks by region: the same keyword ranks differently in Moscow and in Saint Petersburg. Pick the city, give your keywords and take the top 100 of each. Filter the rows on domain to find your site's position.

{
"queries": ["ремонт квартир", "натяжные потолки", "дизайн интерьера"],
"region": "Saint Petersburg",
"maxResultsPerQuery": 100
}

Search Turkey in Turkish, ranked for Istanbul

The country sets the Yandex site (yandex.com.tr for Turkey), the city sets the ranking, the language keeps Turkish pages only. Our test run of this input returned 60 rows (30 per keyword) in 6 seconds.

{
"queries": ["istanbul otelleri", "kadıköy kahvaltı"],
"country": "tr",
"region": "Istanbul",
"language": "tr",
"maxResultsPerQuery": 30
}

Input parameters

FieldTypeDefaultWhat it does
querieslist of texts["купить кофемашину"] in the formKeywords to search, one per line, in any language. Yandex operators such as site: and quotes work.
startUrlslist of URLsnoneYandex search pages to read. Keyword, city, results language and date filter come from the URL.
countrytextruThe Yandex site and region to search from: a two-letter code, a three-letter code or an English name.
regiontextnoneA city from the list or typed in English or Russian, or any Yandex region code (lr). Ranks for that city instead of the whole country.
languagechoiceanyKeep only pages written in Russian, English, Turkish, Ukrainian, Kazakh, Belarusian, Uzbek, Azerbaijani, German, French, Indonesian or Tatar.
timeRangechoiceanyKeep only pages Yandex dated within the past day, 3 days, week, 2 weeks, month, 3 months, 6 months or year. Adds publishedAt to every row.
maxResultsPerQuerynumber50Results per keyword or URL, at most 250 (Yandex shows 25 pages of 10).
maxItemsnumber1000Rows saved in total across all keywords and URLs. The run stops there.
debugModetrue or falsefalseWrites detailed progress to the run log.

Accepted formats.

  • Keywords: any text Yandex accepts, Cyrillic, Latin or Turkish characters, with operators (site:apify.com scraper, "точная фраза"). A Yandex search URL typed in the keyword list is read as a URL.
  • Yandex URLs: https://yandex.ru/search/?text=...&lr=213, https://ya.ru/search/?text=..., https://yandex.com.tr/search/touch/?text=..., https://yandex.kz/search/site/?text=..., and the other Yandex country sites. A URL without text= is skipped with a message in the log.
  • Country: ru, rus, Russia; tr, tur, Turkey; kz, kaz, Kazakhstan, and so on for the 21 countries of the list. Any other country runs on yandex.com with Yandex's worldwide ranking, and the log says so.
  • City: the 25 cities of the list (Moscow, Saint Petersburg, Novosibirsk, Yekaterinburg, Kazan, Nizhny Novgorod, Chelyabinsk, Samara, Rostov-on-Don, Ufa, Krasnodar, Omsk, Krasnoyarsk, Voronezh, Perm, Volgograd, Vladivostok, Irkutsk, Izhevsk, Minsk, Almaty, Astana, Istanbul, Tbilisi, Yerevan) in English or Russian (Москва, Санкт-Петербург, spb), or any Yandex region code as a number.

What data can you extract from Yandex?

Each row is one organic result of one search. A page that ranks for two of your keywords appears once per keyword, each time with its own rank and its own id.

GroupFields
Identityid, url, title
Contentsnippet, displayedUrl, domain, highlightedWords, fileType
Rankposition, page, totalResults
Place and timepublishedAt, country, regionId, regionName, language, yandexDomain
LinksfaviconUrl, moreFromSiteUrl
SearchsearchQuery, searchUrl, scrapedAt

What the fields tell you:

  • position is the organic rank, counted from 1 across pages, after Yandex's own widgets are left out. page is the Yandex results page (10 results each).
  • highlightedWords are the words Yandex bolded in the title and snippet. They show how Yandex reads the keyword: for купить кофемашину it also highlighted приобрести and кофемашины, the synonyms and word forms it matched.
  • totalResults is Yandex's own estimate of matching pages (186,000 for купить кофемашину in Russia on our run). It moves from one run to the next, and it is null when the Yandex site does not print it, which happens on yandex.com and yandex.com.tr.
  • fileType is set when the result is a document (pdf, doc, xls...), null for a web page.
  • publishedAt is the date Yandex shows for the page, in RFC 3339 UTC. With a time range set, every row has it; without one, Yandex dates only some results (14 of 215 on our Almaty test) and the others are null.
  • id stays the same for the same page found by the same keyword in the same market and filters, run after run: join two runs on id to follow a page's rank over time.
  • url is the page's own address and does not expire. searchUrl and moreFromSiteUrl open live Yandex searches: they show today's results when you open them later.

Output example

One row of our default run, as it lands in the dataset:

{
"id": "ab6f065009571af4",
"url": "https://www.klenmarket.ru/shop/equipment/kofeinoe-oborudovanie/kofemashiny/",
"title": "Купить кофемашины для кафе и ресторана, кофемашины по...",
"snippet": "Вы можете приобрести Кофемашины и аксессуары в интернет-магазине Клёнмаркет по доступным ценам с доставкой по всем регионам России.",
"displayedUrl": "klenmarket.ru/shop/equipment/kofeinoe-…",
"domain": "klenmarket.ru",
"highlightedWords": ["купить", "кофемашины", "приобрести"],
"fileType": null,
"position": 2,
"page": 1,
"totalResults": 186000,
"publishedAt": null,
"country": "ru",
"regionId": 225,
"regionName": "Russia",
"language": null,
"yandexDomain": "yandex.ru",
"faviconUrl": "https://favicon.yandex.net/favicon/www.klenmarket.ru",
"moreFromSiteUrl": "https://yandex.ru/search/site/?lr=225&p=0&searchid=1&text=%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C+%D0%BA%D0%BE%D1%84%D0%B5%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%83&web=1&noreask=1&pag=u&surl=www.klenmarket.ru",
"searchQuery": "купить кофемашину",
"searchUrl": "https://yandex.ru/search/site/?l10n=ru&lr=225&p=0&searchid=1&text=%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C+%D0%BA%D0%BE%D1%84%D0%B5%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%83&web=1",
"scrapedAt": "2026-10-28T07:54:39Z"
}

Advanced usage

Five recipes for what the examples above do not show. Each JSON runs as is.

Compare one keyword across several cities in one run

The form takes one city per run, a URL carries its own. Paste one Yandex URL per city with its lr code (here доставка цветов, flower delivery, in Moscow, Saint Petersburg and Yekaterinburg): each search is ranked for its city, and regionId on every row tells them apart in the same dataset.

{
"startUrls": [
{ "url": "https://yandex.ru/search/?text=%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0+%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2&lr=213" },
{ "url": "https://yandex.ru/search/?text=%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0+%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2&lr=2" },
{ "url": "https://yandex.ru/search/?text=%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0+%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2&lr=54" }
],
"maxResultsPerQuery": 30
}

Watch fresh pages about a brand every morning

A time range keeps only recently dated pages and adds publishedAt to every row. Save this input as a task and schedule it daily: each run lists what Yandex dated in the past 24 hours. In our test, the past week of биткоин returned 10 results, all dated within the 7 days. Recent periods return fewer results than Yandex's match count suggests.

{
"queries": ["биткоин"],
"timeRange": "day",
"maxResultsPerQuery": 50
}

Pull the full top 250 for a keyword

Yandex shows 25 pages of 10 results per search, and this input reads them all. Use it to map the whole competitive field of a keyword, then count rows per domain to see who owns the most places. Our test of this input returned 215 results in 26 seconds: Yandex repeats some pages across its 25 pages, and each page is kept once, at its best rank.

{
"queries": ["crm для малого бизнеса"],
"country": "kz",
"region": "Almaty",
"maxResultsPerQuery": 250
}

Keep only English pages for an English keyword in Russia

Yandex mixes Russian pages into English searches. The results language keeps the pages written in English, ranked for the market you set.

{
"queries": ["best crm software", "project management tool"],
"country": "ru",
"language": "en",
"maxResultsPerQuery": 50
}

Check which pages of a site Yandex shows for a topic

Yandex operators work in keywords. site: limits a search to one website: Yandex returns the few pages of that site it ranks best for the topic, a quick check of what it surfaces first.

{
"queries": ["site:apify.com scraper", "site:apify.com tiktok"],
"maxResultsPerQuery": 10
}

FAQ

What is Yandex? Yandex (Яндекс) is Russia's main search engine. It also runs country sites for Turkey (yandex.com.tr), Kazakhstan, Belarus, Uzbekistan, Azerbaijan and Georgia. Its results differ from Google's, which is why SEO teams working on these markets track both.

Do I need a Yandex account or an API key? No. The actor reads the results Yandex shows publicly. No account, no Yandex Cloud project, no API key.

What does one row contain? One organic result of one search: its rank, page, title, URL, snippet, the address Yandex displays, the domain, the words Yandex highlighted, the favicon, Yandex's link to more results from that site, Yandex's count of matches, and the country, city, Yandex site, language and keyword it was found for. 22 fields; values Yandex does not give are null.

How many results can I get per keyword? Up to 250, the 25 pages of 10 that Yandex shows for any search. Set maxResultsPerQuery to 10 for the first page, 100 for a top 100. When Yandex has fewer results, the run returns what it has and moves on.

Does it return ads, Yandex widgets or AI answers? No. Rows are organic results only. Yandex's own entries (currency converter, answer widgets) are left out, and position counts organic results only, so position 1 is the first web page Yandex ranks.

Why can positions differ from what I see on yandex.ru? Your browser's Yandex page is personalized: your history, your login, your exact location and your device change the order, and ads and Yandex services push organic results down. This actor returns Yandex's ranking for the region, language and period you set, without personalization. Each row's searchUrl opens the exact results page it was read from.

How do I rank results for a city? Pick it in the City field (25 cities in Russia, Belarus, Kazakhstan, Turkey, Georgia and Armenia), type its name in English or Russian, or type any Yandex region code (lr), the number Yandex puts in its own search URLs (213 Moscow, 2 Saint Petersburg). Leave it empty to rank for the whole country.

Can I combine the filters? Yes, they stack. country: tr + region: Istanbul + language: tr + timeRange: month returns Turkish pages dated in the past month, as yandex.com.tr ranks them for Istanbul. Every keyword of the run uses the same filters; a pasted URL keeps its own.

Can I scrape many keywords in one run? Yes. Add as many keywords and URLs as you need: each one gets its own ranking, from position 1. Set maxItems to cap the total. A page that ranks for several of your keywords appears once per keyword, with a different id each time.

How fresh is the data? Live. Every run reads Yandex at the moment it runs, nothing is cached. Schedule the actor daily or weekly to build a ranking history, and join runs on id.

Why is totalResults sometimes null? Yandex prints its count of matches on yandex.ru, yandex.kz, yandex.by and the other country sites, but yandex.com and yandex.com.tr often leave it out of the page. The rows are complete; only that estimate is missing.

Why does a time range return fewer results? With a period set, Yandex lists only the pages it dated in that period, and fewer of them than its match count suggests: in our test, the past week of ремонт квартир in Saint Petersburg returned 9 results while Yandex counted 11,000 matches. Use timeRange to watch what is new, and leave it on any to measure rankings.

Are the links permanent? url is the page's own address and stays valid as long as the site keeps the page. faviconUrl is a stable Yandex image link. searchUrl and moreFromSiteUrl are live Yandex searches: they show the current results whenever they are opened.

Is it legal to scrape Yandex search results? The actor reads public search result pages: titles, links and snippets that Yandex shows to anyone. It does not log in or read anything behind an account. You are responsible for how you use the data; see the Legal compliance section below.

More SilentFlow scrapers

🛒 E-commerce

💼 Jobs

🏠 Real estate

📣 Social media

🏢 Business data

✈️ Travel

🎯 Lead generation

🔎 SEO

📈 Marketing

🎬 Video

📰 News

🧰 More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This actor extracts publicly available data from Yandex search results: page titles, URLs, snippets and the ranking Yandex shows to any visitor. It does not bypass any login or paywall and reads nothing behind an account. Users are responsible for complying with Yandex's terms of service and with the data protection laws that apply to them (GDPR in the EU, CCPA in California, PIPL in China, and Russia's personal data law 152-FZ where relevant). Search results can contain personal data when a person's name or page ranks for a keyword: handle such rows accordingly. The data is informational; verify it before any regulated use.

Built by SilentFlow for SEO teams, analysts and agents who work on the Yandex markets.