🧪 Yandex Maps Reviews Scraper — Full Review Export avatar

🧪 Yandex Maps Reviews Scraper — Full Review Export

Pricing

from $0.21 / 1,000 reviews

Go to Apify Store
🧪 Yandex Maps Reviews Scraper — Full Review Export

🧪 Yandex Maps Reviews Scraper — Full Review Export

Export a Yandex Maps organisation's reviews with the stars, full text and its language, the reviewer's name and contributor level, likes and dislikes, attached photographs, and Yandex's own per-aspect summary of what reviewers praise and complain about.

Pricing

from $0.21 / 1,000 reviews

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Yandex Maps Reviews Scraper

Every written review of a Yandex Maps organisation, as a spreadsheet. Each row carries the stars, the full text and the language it was written in, when it was last edited, whether Yandex has pinned it, the reviewer's name, public id and contributor level, likes and dislikes, the photographs attached to it — and Yandex's own per-aspect summary of what reviewers praise and complain about, on every row.

The walk reaches the end. Yandex's review counts agree with themselves across page sizes — 6,001 reviews is 301 pages of 20 and 121 pages of 50 — so maxItems: 0 genuinely means every review rather than as many as the pager happens to hand over.

Accepted input

placeUrls is required and takes one organisation per line, as either the numeric id (1018907821) or the page address (https://yandex.com/maps/org/pushkin/1018907821/). Both are accepted in the same list. Every Yandex Maps Scraper row publishes both, as id and as url, which is how the two Actors compose.

reviewSort chooses the ordering: newest first (the default), highest rated first, or lowest rated first. Yandex's own relevance ordering is deliberately not offered. It answers with a perfectly healthy response carrying no reviews at all, which would read as an organisation with none — the worst possible failure on a reviews export, because it is indistinguishable from a real answer.

language picks the language the response comes back in: English, Russian, Turkish or Ukrainian. It does not translate the reviews themselves — each carries the language it was written in, under text_language.

maxItems defaults to 100 and caps each organisation separately, so twenty organisations with a cap of 100 returns up to 2,000 rows rather than 100 shared between them. 0 means no limit.

There is no page-size input. It is always fifty, which is the largest that works: asking for a hundred returns a body with neither reviews nor totals in it — not an error, just nothing.

{
"placeUrls": ["1018907821"],
"reviewSort": "newest",
"language": "en_US",
"maxItems": 500
}

Response fields

{
"place_id": "1018907821",
"sort": "newest",
"language": "en_US",
"review_id": "aXaLK0yGz9E1MsCLBc8sMg",
"business_id": "1018907821",
"review_rating": 5,
"review_text": "Прекрасное место, обязательно вернусь.",
"text_language": "ru",
"updated_at": "2026-08-01T10:12:00Z",
"pinned": false,
"author_name": "Мария",
"author_public_id": "b5702370dd1141b080fb8693fe2991fc",
"author_level": "Знаток города 7 уровня",
"author_avatar_url_template": "https://avatars.mds.yandex.net/get-yapic/…/{size}",
"likes": 12,
"dislikes": 1,
"photos": [],
"total_reviews": 6001,
"total_pages": 121,
"page": 1,
"page_size": 50,
"reviews_remaining": 5951,
"aspects": { "food": 4.8, "service": 4.5 }
}

Fields absent from a review are returned as null rather than omitted, so every row has the same shape.

The review's own fields are namespaced away from the organisation's: review_rating is the stars this review gave, and place_id is the organisation it belongs to. A dataset that used rating for both would be unsortable.

author_level is Yandex's own contributor level for the reviewer, which is the cheapest signal available for weighting an opinion. author_reviews-style totals are not published, because Yandex does not state one here.

author_avatar_url_template contains a literal {size} and is not a fetchable address. It is published as the template it is rather than filled in with a size this Actor picked, because a picked size is a decision you did not make.

aspects is Yandex's own per-aspect summary for the organisation — the things reviewers praise and complain about, scored. It describes the organisation rather than the review, so it repeats on every row of one organisation.

total_reviews and total_pages are Yandex's own and they are consistent: 6,001 reviews is 301 pages of 20 and 121 pages of 50. That is why the walk trusts them, unlike the estimate on the Maps search, which grows as you page.

Behaviour on partial results

The walk goes to total_pages and stops there — never on "did this page come back full", which is unreliable on any paged surface and would ask for a page past the end of every organisation with a round number of reviews.

An organisation that no longer resolves is skipped with a line in the run log and the rest of the list still runs. An entry that is not an organisation is skipped before any request is made.

An organisation with no written reviews is a successful run with no rows, and the run log says so explicitly. Coverage is deepest in Russia and the CIS: a Moscow restaurant carried 6,001 written reviews while Manhattan coffee shops carried none. That is real sparsity in Yandex's data rather than a failed read, and the log line exists so an empty dataset is not mistaken for one.

Frequently asked questions

How many reviews can I actually get? All of them. Yandex's review totals agree with themselves across page sizes, so a walk to total_pages is a complete walk. That is unusual — the Maps search on the same site publishes an estimate that grows as you page — and it is why maxItems: 0 is a safe thing to set here.

Why is the relevance ordering missing? Because it does not work. Yandex answers it with a healthy response carrying no reviews at all, and an Actor that offered it would produce empty datasets that look exactly like organisations with no reviews. Only measured orderings are offered.

Does the ordering change which reviews I get? Only their order, on a complete walk. If you cap the run with maxItems, the ordering decides which slice you keep — which is exactly when highest-rated or lowest-rated matters.

The organisation's page says thousands of reviews and I got far fewer. Check which number you read. Yandex counts people who rated separately from people who wrote, and only the second has text to export. Yandex Maps Place Scraper publishes both as rating_count and review_count, and review_count is the one this Actor reaches.

Does language translate the reviews? No. It sets the language of the response around them; each review carries the language it was actually written in, under text_language. Nothing here translates a review, because a translated review attributed to its author is a quote they did not write.

Where do I get organisation ids? From Yandex Maps Scraper — every row publishes both an id and a url, and either works here.

Is a Yandex account or API key required? No. No account, session cookie or key of any kind is supplied to the Actor or needed by it.

Yandex Maps Scraper is where the ids come from: organisations by name, category or address, centred anywhere in the world, with phone numbers and opening hours already on each search row.

Yandex Maps Place Scraper reads one organisation in full, and is where to check review_count before planning a large harvest.

Yandex Search Scraper is the other half of this site: web results with paid placements flagged on every row.