Yandex Maps Reviews Scraper — Ratings, Replies & AI Summary avatar

Yandex Maps Reviews Scraper — Ratings, Replies & AI Summary

Pricing

from $0.18 / 1,000 reviews

Go to Apify Store
Yandex Maps Reviews Scraper — Ratings, Replies & AI Summary

Yandex Maps Reviews Scraper — Ratings, Replies & AI Summary

Scrape Yandex Maps reviews of any place, by URL, place ID or keyword + city: rating, full text, date, author, owner reply, photos, translations, plus the place's details and Yandex AI summary on every row. Well past the 600-review limit. Monitor new reviews. Export JSON, CSV, Excel.

Pricing

from $0.18 / 1,000 reviews

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

6

Monthly active users

8 hours ago

Last modified

Features

Limited permissions

Share

💬 What is Yandex Maps Reviews Scraper?

Yandex Maps Reviews Scraper extracts the reviews of any place on Yandex Maps — Russia, the CIS and Turkey: stars, full text, date, author and author level, likes, photos and videos, Yandex translations and the owner's reply — with the place's details on every row (name, address, city, category, rating, phone, website) and Yandex's AI summary of the place. Use it for reputation monitoring, competitor research, customer-feedback analysis or local SEO.

Paste place links or IDs, or type a keyword and a city (dentist in Moscow, кафе in Санкт-Петербург) to get the reviews of every place found. Click Start and download the reviews in JSON, CSV or Excel: one row per review, nothing to join. No login, nothing to set up. It goes well past the 600 reviews Yandex shows per sort order: 86 % of the 2,727 reviews of a busy restaurant, 7,844 reviews of Gorky Park.

📋 What data can you extract from Yandex Maps reviews?

One row per review, 90 fields:

CategoryWhat you get
⭐ Reviewstars and a positive / neutral / negative label, full text and its length, date, language, Yandex translations, likes, dislikes and net likes, pinned or not, link to the review, age in days, the keywords it matched, the topic it was read under
👤 Authorname, public ID and profile link, avatar, contributor level (Local Expert level 12) as a number, badge, anonymous or not
🖼️ Mediaphotos and videos of the review, with their date, size, moderation status and reactions
🏪 Owner's replythe business's answer, its date and how many days it took, and needsReply (a review of 3 stars or fewer nobody answered) — find the reviews to answer
🏷️ Place, on every rowname, category, address, city, postal code, country, GPS coordinates, phone, website, status, rating, number of ratings and reviews, street and house, chain and its size, average bill, photos, logo
🤖 AI summary and topicsthe sentence Yandex's AI picks to sum the place up, and the review topics (food, staff, parking…) with their positive, neutral and negative counts
🔎 Where it came fromthe keyword and location that found the place, its search page; in an author run, the author asked for and how many reviews they wrote

Every field, with an example, is listed in the Output section below.

✅ Why use Yandex Maps Reviews Scraper?

  • 📚 Far past 600 reviews: Yandex shows 600 reviews per sort order. The Actor merges the 4 orders, then reads the place's review topics one by one (Deep reviews): 2,338 of the 2,727 reviews of a busy restaurant instead of 1,283, and 7,844 reviews of Gorky Park instead of 1,703.
  • 🏷️ The place on every row: name, address, city, category, rating, phone and website repeat on each review — open the CSV and filter, nothing to look up.
  • 🔎 Search, then reviews: type a keyword and a city, and get the reviews of every place found (Max places per search), or paste your own list of places.
  • ✍️ Every review of one author: paste a reviewer's profile link or ID (Author profile URLs) and get all the reviews they wrote on Yandex Maps, each with the place it is about — check a suspicious reviewer or follow a local expert.
  • 🔔 Monitoring built in: Only new reviews returns only what earlier runs did not deliver; with the newest first, a daily run reads about one page per place.
  • 🎯 Filters: stars (maxRating: 2 = complaints only, or exact stars), dates (7 days), text only, photos or videos only, answered or not by the owner, likes, text length, language, author level, words to keep or to leave out, closed places.
  • 🤖 Yandex AI summary and review topics of each place, included.
  • 🔌 API, scheduling, integrations (Make, Zapier, n8n, Google Sheets…) and JSON / CSV / Excel export via the Apify platform.

🚀 How to scrape Yandex Maps reviews

  1. Create a free Apify account.
  2. Open Yandex Maps Reviews Scraper and paste Yandex Maps place links into Place URLs (e.g. https://yandex.com/maps/org/1036014863/reviews/), or place IDs into Place IDs.
  3. Or leave them empty and type a Search keyword (e.g. стоматология) and a Location (e.g. Москва): the reviews of the first 20 places found are read (Max places per search).
  4. Set Max reviews per place (100 by default, 0 = as many as possible) and the Review order, then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape Yandex Maps reviews?

This Actor uses pay per event pricing: you pay for the reviews you get.

WhatPrice
Review (one row)$0.23 per 1,000 reviews ($0.21 Bronze, $0.19 Silver, $0.18 Gold)
Filter check: a place dropped by a place filter of this Actor (minPlaceRating, minReviewCount, requirePhone, requireWebsite, excludeKeywords, excludeBusinessIds, minAverageBill, maxAverageBill, excludeClosedPlaces)$0.18 per 1,000 places dropped ($0.17 Bronze, $0.16 Silver, $0.15 Gold)
Run start$0.01 per run

Platform usage (compute, proxy) is included in the price. The place details, the AI summary and the review topics come free with the reviews. A review the review filters drop (stars, dates, text, photos, reply, likes, language, author level, words) is neither saved nor charged. With a maximum cost per run set, the run saves the reviews it can pay for and stops there — the last place may be cut short: never a review charged and not saved.

⚙️ Input

The reviews of one place, newest first:

{
"startUrls": [{ "url": "https://yandex.com/maps/org/1036014863/reviews/" }],
"maxReviewsPerPlace": 200,
"reviewSort": "newest"
}

The complaints of the last 30 days of every dentist found in Moscow:

{
"query": "стоматология",
"location": "Москва",
"maxItemsPerQuery": 50,
"maxReviewsPerPlace": 0,
"maxRating": 2,
"postedAfter": "30 days"
}

A daily run that returns only the new reviews of your places:

{
"businessIds": ["1036014863", "19464848293"],
"reviewSort": "newest",
"maxReviewsPerPlace": 0,
"onlyNew": true,
"stateKey": "my-restaurants"
}
FieldNotes
startUrlsYandex Maps place pages (also their /reviews/ tab, e.g. https://yandex.com/maps/org/1036014863/reviews/), short links or search pages (yandex.ru, .com, .com.tr, .kz, .by, .uz); given, they replace the search fields.
businessIdsPlace IDs (e.g. 1036014863, the placeId column of a previous run); given, they replace the search fields too.
authorUrlsReviewer profiles: links (e.g. https://yandex.com/maps/user/d40th2ke7tvjekwbejcjxvm2w8/, or the authorProfileUrl column of a previous run) or author IDs (the authorId column). Every review the author wrote on Yandex Maps, one row per review with its place; given, they replace the search fields too. See Reviews by author below.
query, searchQueriesWhat to look for, in any language (e.g. dentist, кафе); searchQueries adds more keywords (one search each).
location, locationsCity, district, street or country (e.g. Moscow, Istanbul); every keyword is searched in every location (max 500 searches per run).
coordinates, viewportSpan, radiusKmA map area instead of a named location: its center longitude,latitude (e.g. 37.6173,55.7558), with a span or a radius in km.
boundingBoxA map rectangle west,south,east,north (e.g. 37.35,55.57,37.85,55.92).
splitArea, tileGridFor more than ~600 places per search: cut a full search into map tiles automatically; tileGrid cuts every area into N × N tiles from the start.
maxItemsPerQuery, maxPlacesPlaces of each keyword search (20 by default, 0 = all found) and of the whole run (0 = no cap). Pasted places are not counted per search: maxPlaces caps them like the others.
languageLanguage of the place details and of the translations: en, ru, tr, uk or kk. The review text stays in its own language.
maxReviewsPerPlaceReviews per place (100 by default, 0 = as many as possible).
maxReviewsPerAuthorReviews per author of authorUrls, newest first (0 = all of them, the default; the newest 5,000 of an author who wrote more).
reviewSortThe order they are read in: newest, relevance, highest or lowest.
deepReviewsPast what the 4 sort orders give (1,283 and 1,703 reviews on two big places, never more than 2,400), read the place's review topics one by one (default on).
maxItemsReviews of the whole run (0 = no cap): the run stops there.
minRating, maxRatingStars of the review, 1 to 5 (maxRating 2 = complaints only).
postedAfter, postedBeforeDates of the reviews: 2026-09-01, or 7 days, 2 weeks, 1 month before now.
onlyWithText, onlyWithBusinessReply, reviewKeywordsReviews with text only, answered by the owner only, containing one of these words.
postedWithinDaysReviews of the last N days (e.g. 30), counted from the start of the run; 0 = no limit. With postedAfter, the more recent date applies.
onlyWithPhotos, onlyWithVideosReviews with at least one photo / one video only.
onlyWithoutBusinessReplyReviews the business has not answered yet (cannot be combined with onlyWithBusinessReply).
ratingsExact stars to keep, from 1 to 5 (e.g. 1, 2); empty = all. Combined with minRating / maxRating.
minLikes, minTextLengthReviews that readers found useful at least this many times, whose text has at least this many characters. 0 = no minimum.
minAuthorLevelReviews by an author who reached at least this Yandex level (Local Expert level 6 = 6); an author without a level is dropped. 0 = no minimum.
reviewLanguagesOnly reviews written in these languages: two-letter codes (e.g. ru, en); a review whose language Yandex does not give is dropped. Empty = all.
excludeReviewKeywordsDrop the reviews that contain one of these words (case and accents ignored, like reviewKeywords).
reviewTopicsRead only the reviews about these topics, the tags Yandex shows on a place (e.g. Service, Prices): names as Yandex shows them in the language of the run, or topic IDs; a name matches when it contains your word. Empty = all reviews. See Reviews by topic below.
topicOrderOrder of the reviews inside each topic: negativeFirst (default), positiveFirst, newest or highest. No effect without reviewTopics.
anonymizeAuthorsLeave the reviewers' name, ID, profile link and avatar empty in the results; the other columns stay.
minPlaceRating, openNow, open24h, goodPlaceOnly, hasPhotos, categoryIds, chainIdsWhich places of a keyword search are read — Yandex's own filters: minimum place rating (4.5), open now, open 24 h, "Good place" award, with photos, category and chain IDs.
customFiltersAny other filter Yandex offers for the search, as filterId:value (e.g. car_park:1); debugLog lists them for each search.
requirePhone, requireWebsite, minReviewCount, excludeKeywords, excludeBusinessIdsSkip places without a phone or website, with few reviews, with a word in their name or category, or already known.
excludeClosedPlacesSkip the places Yandex shows as closed, for good or for a while; a place whose status Yandex does not give is kept.
minAverageBill, maxAverageBillOnly places whose average bill (the one Yandex shows on restaurants, cafés and similar places, in the place's currency) falls between these amounts; a place without an average bill is skipped. 0 = no bound.
onlyNew, stateKey, resetStateMonitoring: only the reviews never delivered under this memory key (e.g. my-restaurants); resetState forgets it.
reportNewOwnerRepliesWith onlyNew: a review delivered earlier without an owner reply that has one now is delivered again and flagged in the output as a new owner reply (no extra request; billed like any review).
AdvancedproxyConfiguration (Apify proxy by default, included in the price; the residential proxy is not available), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

📦 Output

A real row of a run (the first review saved for Tanuki, Moscow), shortened: lists keep their first entry, texts are cut.

{
"reviewId": "zzSW19y4gvxOSevw0uSWTblrVjxfwy",
"reviewUrl": "https://yandex.com/maps/org/1036014863/reviews/?reviews%5BbusinessId%5D=1036014863&reviews%5BreviewId%5D=zzSW19y4gvxOSevw0uSWTblrVjxfwy",
"rating": 5,
"text": "Очень вкусно и быстро готовят, все отлично вернемся еще!",
"hasText": true,
"textLanguage": "unknown",
"textTranslations": null,
"publishedAt": "2026-09-26T12:40:10.895Z",
"likes": 0,
"dislikes": 0,
"photos": [],
"photoDetails": [],
"photoCount": 0,
"videos": [],
"videoDetails": [],
"videoCount": 0,
"isPinned": false,
"businessReply": null,
"businessReplyAt": null,
"hasBusinessReply": false,
"needsReply": false,
"ownerReplyIsNew": false,
"textLength": 56,
"hasPhotos": false,
"hasVideos": false,
"netLikes": 0,
"ratingLabel": "positive",
"publishedDate": "2026-09-26",
"reviewAgeDays": 0,
"replyDelayDays": null,
"matchedKeywords": [],
"isAiSummarySource": false,
"topics": [],
"topicQuote": null,
"topicHighlight": null,
"authorName": "Семёнова Кристина",
"authorId": "q4y1qedhajyq1r2k9upwtxg2wm",
"authorProfileUrl": "https://reviews.yandex.ru/user/q4y1qedhajyq1r2k9upwtxg2wm",
"authorAvatarUrl": "https://avatars.mds.yandex.net/get-yapic/25817/0l-9/islands-200",
"authorLevel": "Level 4 Local Expert",
"authorLevelNumber": 4,
"authorBadgeType": "profession",
"authorIsAnonymous": false,
"position": 1,
"placeId": "1036014863",
"placeName": "Тануки",
"placeUrl": "https://yandex.com/maps/org/tanuki/1036014863/",
"placeReviewsUrl": "https://yandex.com/maps/org/tanuki/1036014863/reviews/",
"placeCategory": "Restaurant",
"placeCategories": [
"Restaurant",
"sushi bar"
],
"placeAddress": "Moscow, Bolshoy Zlatoustinsky Lane, 1с1",
"placeCity": "Moscow",
"placeCountry": "Russian Federation",
"placePostalCode": "101000",
"placeLatitude": 55.759743,
"placeLongitude": 37.631658,
"placePhone": "+7 (499) 649-22-23",
"placeWebsite": "https://tanukifamily.ru/tanuki/",
"placeRating": 5,
"placeRatingCount": 15801,
"placeReviewCount": 11416,
"placeStatus": "open",
"placeNeurosummary": "Замечательно место, красивое оформление , еда и напитки на высоте",
"placeReviewAspects": [
{
"id": "3502043738",
"name": "Meal",
"count": 7923,
"positive": 6969,
"neutral": 146,
"negative": 808,
"isTrusted": true
}
],
"placeFirstRow": true,
"placeShortName": "Тануки",
"placeCategoryIds": [
"184106394",
"1387788996"
],
"placeStreet": "Bolshoy Zlatoustinsky Lane",
"placeHouse": "1с1",
"placeAdditionalAddress": null,
"placeRegionId": 213,
"placeTimezoneOffset": 10800,
"placeChainId": "6003051",
"placeChainName": "Tanuki",
"placeChainSize": 55,
"placePriceRange": "1000–1500 ₽",
"placeIsVerifiedOwner": true,
"placeGoodPlaceYear": "2026",
"placeImageUrl": "https://avatars.mds.yandex.net/get-altay/10637174/2a0000018ba8a2794852c36f81738f2a9598/XXXL",
"placeLogoUrl": "https://avatars.mds.yandex.net/get-altay/20274901/2a000001a0a89276c239e66d1f3f5c52552a/XXXL",
"placePhotoCount": 499,
"placeSearchRank": null,
"placeNeurosummaryReviewId": "BYHF_KwvJpRlqNU5IPCuHLmwlcvle4",
"searchQuery": null,
"searchLocation": null,
"searchUrl": null,
"language": "en",
"scrapedAt": "2026-09-26T14:57:15.059Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. The Owner replies view puts each review next to the answer of the business; the Places view shows the context of each place.

All 90 fields

FieldsWhat you get
reviewId, reviewUrl, positionReview: Yandex ID (stable: the key for monitoring), link, rank among the reviews saved for its place
rating, text, hasText, textLanguage, textTranslations, publishedAtstars 1-5, full text, text or star-only, language, Yandex translations, date written or edited
likes, dislikes, netLikes, isPinnedreaders' reactions (netLikes = likes minus dislikes), pinned on top by the place
textLength, ratingLabel, publishedDate, reviewAgeDaysReview analysis: characters of the text, positive (4-5 stars) / neutral (3) / negative (1-2), day written (YYYY-MM-DD, UTC), whole days between the review and the run
matchedKeywords, isAiSummarySourcewhich of your reviewKeywords the review contains; true for the review Yandex's AI summary is drawn from
topics, topicQuote, topicHighlightTopic the review was read under (with reviewTopics; empty otherwise), the passage of the text Yandex ties to it, and the first word or phrase it highlights (empty when Yandex gives none)
photos, photoDetails, photoCount, hasPhotos, videos, videoDetails, videoCount, hasVideosMedia: photo and video links, with date, size, status and reactions; hasPhotos / hasVideos for a quick filter
businessReply, businessReplyAt, hasBusinessReply, needsReply, replyDelayDays, ownerReplyIsNewOwner's reply and its date, days (1 decimal) between the review and the answer; needsReply is true for a review of 3 stars or fewer without an answer; ownerReplyIsNew is true on a review delivered again because the owner answered since (reportNewOwnerReplies)
authorName, authorId, authorProfileUrl, authorAvatarUrl, authorLevel, authorLevelNumber, authorBadgeType, authorIsAnonymousAuthor: name, public ID, profile, avatar, contributor level and its number, badge (profession, achievement), true when Yandex gives no public profile; the four first are empty with anonymizeAuthors
placeId, placeName, placeShortName, placeUrl, placeReviewsUrl, placeCategory, placeCategories, placeCategoryIdsPlace: Yandex ID, name, short name, page, Reviews tab, categories and their Yandex IDs
placeAddress, placeStreet, placeHouse, placeAdditionalAddress, placeCity, placeRegionId, placeCountry, placePostalCode, placeLatitude, placeLongitude, placeTimezoneOffsetaddress and its parts (street, house, extra line such as an entrance), city, Yandex region ID, country, postal code, GPS coordinates, time zone offset from UTC in seconds
placeChainId, placeChainName, placeChainSize, placePriceRange, placeIsVerifiedOwner, placeGoodPlaceYearthe chain the place belongs to and its places in the city, average bill, owner verified on Yandex, year of the "Good Place" award
placeImageUrl, placeLogoUrl, placePhotoCount, placeSearchRankmain image, logo, photos Yandex shows for the place, rank in the search that found it (empty for a place given by URL or ID)
placePhone, placeWebsite, placeStatusfirst phone number, website (tracking removed), open or closed
placeRating, placeRatingCount, placeReviewCountrating of the place, number of ratings and of reviews on Yandex
placeNeurosummary, placeNeurosummaryReviewId, placeReviewAspects, placeFirstRowAI summary of the place and the ID of the review it is drawn from, review topics with positive / neutral / negative counts (on the first row of each place, placeFirstRow)
searchQuery, searchLocation, searchUrl, language, scrapedAtthe search that found the place, the run's language, ISO timestamp of the extraction
inputAuthorId, authorReviewsTotalAuthor runs (authorUrls): the author ID asked for and the number of reviews Yandex shows on their profile; empty on the rows of a place

💡 Tips

How to get more results

Set Max reviews per place to 0 and keep Deep reviews on: the Actor merges the 4 sort orders, then reads each review topic of the place, the smallest first. For a keyword search, raise Max places per search (0 = every place found) and tick Split big areas automatically above 600 places.

How to reduce costs

You pay per review: cap them with Max reviews per place and Max reviews, and use the review filters — a review they drop is not charged. Turn Deep reviews off when what the 4 sort orders give is enough (1,283 and 1,703 reviews on two big places, never more than 2,400). For recurring runs, Only new reviews never charges twice for the same review. A date bound (Reviews posted after) stops reading a place at its first older review newest first, and Maximum review rating / Minimum review rating at the first review past the bound in the lowest / highest order — once the Review order asked is read: with Newest first (the default), a "last 7 days" run reads one page per place, not all of them.

Several searches in one run

Fill searchQueries and / or locations: the Actor runs one search per keyword × location (3 keywords × 4 cities = 12 searches, up to 500 per run), and Max places per search applies to each. A place found by several searches is read once.

Monitoring: only the new reviews

Tick Only new reviews (onlyNew) and schedule the Actor: each run returns, and charges, only the reviews no previous run delivered under the same stateKey — with Newest first, reading a place stops at its first known review, so a daily run reads about one page per place. The memory lives in a named key-value store of your account (yandex-maps-reviews-scraper-seen-reviews, up to 150,000 ids per key), updated only with what really reached the dataset. Give each schedule its own stateKey, and tick resetState once to start over.

Filter reviews by date

postedAfter and postedBefore apply to the reviews: 2026-09-01 (the whole day is included, Moscow time) or a period before now (7 days, 2 weeks, 1 month; via the API also 24 hours or a full ISO date-time). A review without a date is dropped as soon as a bound is set.

Reviews by topic

Yandex tags the reviews of a place with topics (food, staff, parking…). Put some of them in Review topics (reviewTopics) to read only the reviews that talk about them: the most negative first by default (Topic review order, topicOrder), each with the passage of the text and the word Yandex ties to the topic (topicQuote, topicHighlight). Topic names are the ones Yandex shows in the language of the run (Language), or their IDs; a name matches when it contains your word. A place without that topic gives no review and nothing is charged for it. Max reviews per place caps the whole place, and a review already delivered under one topic is not written again under another.

Reviews by author

Paste reviewer profiles or IDs into Author profile URLs (authorUrls) to get every review an author wrote on Yandex Maps, newest first: one row per review, charged like any review, with the place it is about (name, category, address, city, coordinates, link) and, on each row, the author asked for (inputAuthorId) and the number of reviews on their profile (authorReviewsTotal). The review filters (stars, dates, words, photos, owner's reply…), Max reviews, Max reviews per author and Only new reviews apply; a dated run (postedAfter) or a monitoring run stops reading an author at the first older or known review. The place comes from the author's own list, shorter than a place page: its rating, phone, website and AI summary, and the reviewer's level, are empty on these rows — run their placeId through Place IDs to get them. Place filters, Max places, Review topics and Minimum author level cannot be combined with Author profile URLs; Review order, Deep reviews and Max reviews per place do not apply to an author. Places and authors can be mixed in one run: a review found both ways is saved once. An author Yandex does not know gives no row; an author with more than 5,000 reviews gives the newest 5,000. Yandex sometimes lists a few reviews fewer than the profile counts (25 listed for a count of 28 on one profile): you get the reviews listed, and the run log says when the two differ.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool, one row per review.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one row per Yandex Maps review, with its place on every row. Actor id: nice_dev/yandex-maps-reviews-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/yandex-maps-reviews-scraper.

Smallest input, for a cheap first call:

{
"businessIds": ["1036014863"],
"maxReviewsPerPlace": 20
}

Key output fields: rating, text, publishedAt, authorName, businessReply, placeName, placeRating and placeNeurosummary.

Cost: $0.23 per 1,000 reviews (Gold: $0.18), plus $0.01 per run start. Cap each call with maxItems (reviews of the run) and, through the API, with the run option maxTotalChargeUsd.

❓ FAQ

The Actor only reads what Yandex Maps shows publicly to any anonymous visitor. It logs in to nothing and solves no captcha. Reviews carry the names and photos of their authors, which are personal data protected by GDPR: do not store them without a legitimate reason. You are responsible for using the data in compliance with Yandex's Terms of Use and applicable law. This Actor is not affiliated with Yandex.

Does it need a login or a proxy?

No login. The proxy is included in the price: leave the default setting (the residential proxy is not available). A request the site turns away is retried at once on a new proxy session, up to 10 times on top of the retries (without a proxy, after a pause of 5 seconds, doubled at each retry up to 150 seconds).

Why does a place give fewer reviews than Yandex shows?

Yandex shows 600 reviews per sort order and per topic. Deep reviews reach most of them — 86 % on a restaurant of 2,727 reviews — but the reviews tied to no topic and past the 600 of every order cannot be reached. Star ratings without text count in the place's rating, not in its reviews.

Is the data safe to open in Excel or to show on a web page?

Reviews are their authors' own words, copied as they are. A text can begin with -, +, = or @ (a review such as +1 for the staff): Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. Every URL field holds an http(s) URL or null. On a web page, escape every field like any text written by a stranger.

Known limitations

  • Reviews beyond 600 come from Yandex's 4 sort orders merged, then from the place's review topics: a very popular place gives thousands, never necessarily all of them.
  • A place with thousands of reviews takes minutes: Deep reviews reads 5 to 13 reviews per request instead of 50. Its reviews are saved page by page as they are read, not once the place is done.
  • onlyNew remembers review ids, not their content: a review edited since is not returned again.
  • Two runs sharing the same stateKey at the same time may both return the same new review.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". A place still reading its reviews then keeps the pages it read; resurrect the run and it reads the rest, no review saved or charged twice. Resurrect it to go on from there, or give the next run a longer timeout (Run options).

A run the platform stops without warning (out of memory)

  • Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the reviews already saved are skipped (a place saved half-way goes on with the rest): no review is delivered or charged twice, and Max reviews still counts them. Only the reviews read in the last 2 seconds before the stop may be missing: never charged, and read again only if their place was still being read.
  • With onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the reviews it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the reviews of its last 2 seconds once more.

Something doesn't work?

The last line of the log counts the reviews saved, the places read, filtered out and no longer on Yandex Maps, and the requests that failed after every retry. Those requests are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A page of reviews lost for good leaves its place with the reviews of the other pages, counted in the log. A run that saved nothing and had failed requests fails, and its last message gives the cause (a location Yandex does not know, a filter it ignored for the search).

If Yandex changes its data, you are told instead of paying for blank rows: if the first 20 reviews read all lack their stars, date or text, or the places announce reviews and give none, or the first places read (5 to 20) all lack their name, category, address or coordinates, the run saves nothing more, stops and fails, and its last message names the missing field. A shorter run (a single pasted place, a few new reviews) is checked at its end the same way, from 5 reviews or places: it then fails instead of ending green.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which requests failed and why.