Yandex Maps Reviews Scraper - Stars, Text & Owner Replies
Pricing
from $0.29 / 1,000 reviews
Yandex Maps Reviews Scraper - Stars, Text & Owner Replies
Yandex Maps reviews scraper: the reviews of a Yandex Maps place with star rating, full text, author, date, likes, photos and the owner's reply. Every row also carries the place's name, address, category, rating and review count. Paste organisation links or search a city. $0.30 per 1,000 reviews.
Pricing
from $0.29 / 1,000 reviews
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
93
Total users
57
Monthly active users
6 hours ago
Last modified
Categories
Share
Yandex Maps reviews scraper for organisation links, one row per review: star rating, the full text, who wrote it and their Yandex level, the date, likes, photos, and the owner's reply where there is one. The place itself rides on every row too, so name, address, categories, city, overall rating, review count and the phone numbers and website the business published are included.
The ceiling first. Yandex Maps lists up to 600 reviews of a place in each of its four orders: its default, newest first, highest rated first and lowest rated first. You pick one. Ask for more than 600 and the run reads all four, keeping only reviews it has not seen yet: more of a big place, not all of it. A Moscow restaurant with 1,006 gave 862.
| Input | Yandex Maps organisation links, ids, or search terms plus a city |
| Output | One row per review, with the place's name, address, rating, phones and website on every row |
| Ceiling | 600 a place in the order you pick; up to 2,400 different ones from Yandex's four orders together |
| Account needed | None, and no Yandex API key |
| Price | $0.30 per 1,000 reviews on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 16,000 |
| Using an AI agent? | |
|---|---|
| Actor | dami_studio/yandex-maps-reviews-scraper |
| Set one field | startUrls, labelled "Organisation links or ids" in the Console |
| Cap the bill | maxTotalChargeUsd on the run, for example 0.10: it never charges past that |
| MCP, one link | https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/yandex-maps-reviews-scraper |
| How often | Weekly, or daily for a place you watch |
🔍 What Yandex Maps Reviews Scraper does
There are two ways to name the places. Paste links, which can be the organisation page
(https://yandex.ru/maps/org/niki_dent/55558183898/), its reviews tab, the bare numeric id
55558183898, or a Yandex Maps search link, which is expanded into the organisations it lists. Or
skip links and search: put a name or a category into Search terms, add a City, and each term
contributes a few organisations whose reviews are then read.
The filters run on the reviews after they arrive. Anything a filter removes is dropped before it reaches your dataset and is not billed, so setting Maximum star rating to 2 to pull complaints only costs you the complaints, not the praise you threw away.
📋 What data you get from each Yandex Maps review
| What you get | Field |
|---|---|
| Yandex's own stable id for the review | reviewId |
| Stars, the text verbatim, its language, and whether there is any text | rating, text, textLanguage, hasText |
| Yandex's own translations of the text, where it has them | textTranslations |
| When it was published or last edited | publishedAt, publishedAtTimestamp |
| Who wrote it, their Yandex level, avatar and profile | authorName, authorId, authorLevel, authorAvatarUrl, authorProfileUrl |
| How other users voted on it | likes, dislikes |
| The owner's reply and when it went up | businessReplyText, businessReplyAt, hasBusinessReply |
| Photos and videos attached | photoUrls, photoCount, videoCount, videoUrls |
| Whether Yandex pinned it, and its place in the list | isPinned, position |
| The place card, repeated on every row | organizationId, organizationName, organizationAddress, organizationCity, organizationCategory, organizationCategories, organizationRating, organizationRatingCount, organizationReviewCount, organizationUrl, organizationReviewsUrl |
| The phone numbers and websites the business published on its card | organizationPhones, organizationWebsites |
| The search term that found the place, when you searched | searchQuery |
▶️ How to scrape Yandex Maps reviews
- Open Yandex Maps Reviews Scraper and click Try for free.
- Paste organisation links into Organisation links or ids, one per line. Or leave that empty, open Find organisations by search, and type a term plus a city.
- Set Maximum reviews per organisation and Review order. Start at 20 to see what the rows look like.
- Open Filters if you only want a star range, written reviews, replied-to reviews, reviews mentioning a word, or a date range.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost to scrape Yandex Maps reviews?
$0.30 per 1,000 reviews on the Free plan. Paid plans pay a little less: $0.295 on Starter, $0.29 on Scale and $0.285 on Business. On the free plan, the $5 Apify gives you each month covers about 16,000 reviews.
One billed row per review delivered. The sample row is not billed, diagnostic rows are not billed, an organisation with no reviews produces no billed rows, and anything your filters remove is dropped before the dataset and never billed.
📥 What you give it
{"startUrls": ["https://yandex.ru/maps/org/niki_dent/55558183898/"],"maxReviewsPerOrganization": 100,"order": "newest","maxItems": 500,"maxRating": 3,"onlyWithText": true,"newerThan": "2026-01-01"}
| Field | Default | What it is |
|---|---|---|
startUrls | none, the box starts at one example clinic | Organisation page links, reviews-tab links, bare numeric ids, or a Yandex Maps search link. |
maxReviewsPerOrganization | 100 | Reviews per organisation, 1 to 2,400. Past 600 the run reads Yandex's other orders too, so those reviews do not follow order. |
order | relevance | relevance (Yandex's default order), newest, highest or lowest rated first. Anything else is refused before anything is read. |
maxItems | 500 | Hard cap across every organisation in the run, up to 50,000. Use it as the budget stop. |
searchQueries | none | Optional. Find organisations by name or category instead of pasting links, like стоматология or Osteria Mario. |
city | none | City for those search terms. English, Russian or the local spelling all work: Moscow, Москва, Almaty, Istanbul. So does its geo id, the number in a Yandex Maps link of the city (213 is Moscow). |
maxOrganizationsPerQuery | 3 | How many organisations each search term contributes, 1 to 50. |
minRating, maxRating | none | Under Filters. Keep only reviews in a star range. Set maxRating to 2 or 3 for complaints only. |
onlyWithText | off | Skip star-only ratings that carry no written review. |
onlyWithBusinessReply | off | Keep only reviews the organisation replied to. |
newerThan | none | An ISO date like 2026-01-01. Only reviews at or after it. Something that is not a date, like 2 weeks, is refused before anything is read. |
olderThan | none | An ISO date like 2026-06-30. Only reviews before it. With newerThan it makes a date range; a range with no room in it is refused before anything is read. |
textContains | none | Words or phrases. Only reviews whose text holds at least one of them, capital letters ignored, like парковка or очередь. |
language | automatic | Under Advanced. The language for the place name, address and category. Review text always stays in the language it was written in. |
proxyConfiguration | leave it alone | Optional. Only if you want the run to go out through a particular network of your own. |
📤 What you get back

A real row from a run on 17 October 2026, with the review, the reply and the translation cut short:
{"reviewId": "Do3qkCnDnsomk9XhYPTBpIvACtyWNTrH","organizationId": "55558183898","organizationName": "Стоматология на Никитской","organizationAddress": "Москва, Малая Никитская улица, 33","organizationCategory": "Стоматологическая клиника","organizationRating": 5,"organizationReviewCount": 83,"organizationUrl": "https://yandex.com/maps/org/stomatologiya_na_nikitskoy/55558183898/","organizationReviewsUrl": "https://yandex.com/maps/org/stomatologiya_na_nikitskoy/55558183898/reviews/","rating": 5,"text": "Невероятная клиника, стоматология!! Супер! Врачи настоящие профессионалы!! Очень повезло!...","textLanguage": "ru","hasText": true,"publishedAt": "2026-05-14T11:42:41.208Z","publishedAtTimestamp": 1778758961208,"authorName": "Анна М.","authorId": "0000000000000000000000000","authorLevel": "Знаток города 7 уровня","authorAvatarUrl": "https://avatars.mds.yandex.net/get-yapic/…","authorProfileUrl": "https://yandex.com/maps/user/0000000000000000000000000","likes": 0,"dislikes": 0,"businessReplyText": "Благодарим вас за такой подробный и эмоциональный отзыв...","businessReplyAt": "2026-05-15T17:39:02.331Z","hasBusinessReply": true,"photoUrls": ["https://avatars.mds.yandex.net/get-altay/20218502/2a0000019e26c1d1820a..."],"photoCount": 1,"videoCount": 0,"isPinned": false,"position": 1,"scrapedAt": "2026-10-17T17:48:12.784Z","textTranslations": { "tr": "İnanılmaz klinik, diş hekimliği!! Süper! Doktorlar gerçek pr..." },"videoUrls": [],"organizationRatingCount": 96,"organizationCategories": ["Стоматологическая клиника"],"organizationCity": "Москва","organizationPhones": ["+79150582127", "+74951577878"],"organizationWebsites": ["https://nikdental.ru/"],"searchQuery": null}
| Field | How to read it |
|---|---|
reviewId | Yandex's own stable id. The right key for deduping across runs. |
text, hasText | The review verbatim, in whatever language it was written. hasText is false on star-only ratings. |
publishedAt | Yandex's timestamp for the review. It moves when the reviewer edits, so an edited old review reads as recent. |
authorLevel | Yandex's own badge text, like Знаток города 7 уровня. |
businessReplyText, businessReplyAt | The owner's reply and when it was posted. When there is no reply, hasBusinessReply is false. |
isPinned | Whether Yandex pinned this review to the top of the place's list. |
textTranslations | Language code to text, exactly as Yandex has it, or null. Which languages you get depends on the place, not on language. |
videoUrls | Links to Yandex's player for each video. Nothing is downloaded. |
organizationPhones, organizationWebsites | What the business itself put on its Yandex card. Empty when it published none. |
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| A review | It has a reviewId | yes |
| The sample row | _sample: true | no |
| A diagnostic | It carries an errorCode | no |
There is no charged field on these rows. Filter on reviewId being present.
| Code | What it means |
|---|---|
NO_REVIEWS | That organisation has none. |
BAD_URL | Not a Yandex Maps organisation link or a usable id. A bare id needs at least six digits. |
CITY_NOT_FOUND | The city could not be placed: Yandex did not know it, matched only businesses with that name, or has no such geo id. Nothing was searched. |
BAD_INPUT | newerThan or olderThan is not a date, the two leave no room between them, or order is not one of the four. Nothing was read. |
FEWER_REVIEWS | A place came back with fewer reviews than you asked for. reviewsAsked and reviewsRead give the numbers. Past 600 it can also mean Yandex's four orders held no more different reviews of that place. |
FILTER_STOP | Few reviews matched the words filter or the end date, so that place, or the rest of the run, was not read further. Whether this happens depends on how many match and how quickly the pages load, so a place with no match can also be read to the end and simply give no rows. |
NO_ORGANIZATIONS | A search term matched no organisations in that city. |
SEARCH_FAILED | That search could not be run. |
NOT_FOUND | Yandex has no such organisation. |
NOT_SERVED | This review was not served this run. Re-run it later. Until 12 October 2026 this code was called CAPTCHA. With a reviewsRead count, the reviews of that place before it arrived and were billed, and the run read no further place. |
NO_REVIEW_BLOCK, NO_STATE | The page loaded but the reviews were not in it. |
FETCH_FAILED, HTTP_ERROR | Yandex was unreachable or answered badly. |
UNEXPECTED_ERROR | The run stopped early on an unexpected error. The results before this row are kept. |
If your filters remove every review for an organisation, you get zero rows for it. That is a filter doing its job, not a failure.
💡 What people use it for
- Reputation monitoring for your own locations, on a schedule, with
newerThanset to the last run andreviewIdfor deduping. - Checking how responsive a business is, using
hasBusinessReplyand the gap betweenpublishedAtandbusinessReplyAt. - Surveying a category across a city, by searching
стоматологияin Moscow and reading every organisation's reviews in one run. - Feeding review text into a translation or sentiment step of your own, with
textLanguagealready filled in.
From a category to its complaints, in three steps:
- Run Yandex Maps Scraper on
стоматологияinMoscowand copy theurlcolumn. - Paste those links into
startUrlshere, withmaxRatingat 2 andonlyWithTexton. - Group the rows by
organizationNameand read the complaint that keeps coming back.
🚧 What it does not do
- Not every review of a big place. Yandex lists up to 600 in each of its four orders. Past the first 600 the reviews come from the other orders, not yours, and reading that deep takes minutes.
- No reviewer contact details. Name, level, avatar and profile link are what Yandex publishes.
- No business e-mail. Yandex's place cards carry phone numbers and websites, not e-mail addresses.
- No topic counts and no summary of the place. The page this reads does not carry them.
publishedAtfollows Yandex's own timestamp, which moves when a review is edited. An edited old review can look recent and will passnewerThan.- We translate nothing.
textTranslationsis whatever Yandex has: Turkish only on the Moscow places we tried, English too on an Almaty one. - A city name has to be a place to Yandex. One it only matches to businesses is refused rather
than searched somewhere else:
Springfieldcame back as shops in Belgrade. A geo id always works. - A place can come back short. When part of a place's reviews does not load, you get what loaded
plus a free
FEWER_REVIEWSrow with the numbers. Only delivered reviews are billed. - Rows are a snapshot. Ratings, reply text and review counts all move.
- It is not an official Yandex tool. Dami's Studio is independent and is not affiliated with or endorsed by Yandex, or by any other company named on this page.
🧭 Which Yandex scraper do you need?
| If you want | Use |
|---|---|
| Businesses on Yandex Maps, with phones, hours and coordinates | Yandex Maps Scraper |
| Reviews for a place on Yandex Maps | This one |
| Yandex search results by keyword and region | Yandex Search Engine Scraper |
| Products and prices on Yandex Market | Yandex Market Scraper |
| Reviews of a place on 2GIS | 2GIS Reviews Scraper |
| Reviews of a place on Google Maps | Google Maps Reviews Scraper |
❓ Questions people ask
Do I need a Yandex API key to scrape Yandex Maps reviews?
No. Nothing to apply for and no quota to watch.
Can I get more than 600 reviews for one place?
Up to 2,400 different ones: set Maximum reviews per organisation above 600. How many a place gives depends on how much Yandex's four orders overlap.
Can I get the newest reviews only?
Yes: Review order newest first, plus Published after for a cut-off. Each place stops at the first older review, so you pay for the new ones only.
Which countries does this cover?
Wherever Yandex Maps has an organisation directory, which includes Russia, Kazakhstan, Turkey and the wider CIS.
Can I call it from code or connect it to an AI assistant?
The API tab has code for Python, JavaScript
and the CLI. MCP clients like Claude and ChatGPT use
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/yandex-maps-reviews-scraper; coding assistants can load
our skill
file. All
three bill your Apify account at the same price.
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("dami_studio/yandex-maps-reviews-scraper").call(run_input={"startUrls": ["https://yandex.ru/maps/org/niki_dent/55558183898/"],"maxItems": 50,},max_total_charge_usd=0.10, # the most this run may spend)for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("ok") is False: # free note rows, not resultscontinueprint(row.get("rating"), (row.get("text") or "")[:80])
Is scraping Yandex Maps reviews legal?
These are public reviews and the phone numbers and websites businesses published on Yandex, read the way a signed-out visitor sees them. They carry personal data, and a sole trader's phone number can be personal data too: GDPR, Canada's PIPEDA and similar laws cover it, so keep only what you need. Anti-spam laws such as CASL, the EU's e-privacy rules and CAN-SPAM decide how you may contact anyone, and Yandex's own terms still apply to what you do with the data. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the organisation link or the search term and city
you used, plus the run ID. The errorCode on the diagnostic row usually names the problem on its
own.