Yandex Maps Reviews Scraper
Pricing
from $0.28 / 1,000 item extracteds
Yandex Maps Reviews Scraper
Export public Yandex Maps reviews with ratings, exact dates, reactions, media, reviewer details, and owner replies using fast JSON pagination.
Pricing
from $0.28 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
68
Total users
24
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Yandex Maps Reviews Scraper exports public reviews from organization URLs, business IDs or a small set of search queries. Collect ratings, review text, update times, public reviewer details, reactions, media and owner replies for location research and reputation reporting. Source-linked review identifiers help your own workflow compare exports over time.
Quick start
Use a known organization or ID with a small review cap before relying on discovery. The existing Surf Coffee example filters low ratings and dates:
{"startUrls": [{ "url": "https://yandex.com/maps/org/surf_coffee/238919133832/reviews/" }],"maxReviewsPerPlace": 100,"sort": "date","minRating": 1,"maxRating": 3,"dateFrom": "2026-01-01","language": "en-US,en;q=0.9","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
- Yandex Maps Known Organization Reviews — Start with five recent reviews from a specific organization URL.
- Yandex Maps Restaurant Review Comparison — Discover restaurant reviews using a city search and relevance ordering.
- Yandex Maps Moscow Coffee Reviews — Try query discovery with newest-first coffee-shop reviews.
View all ready-to-run examples
What you get
Each row contains one matching review with organization context, its source identifier and available text, rating and update time. Public author details, reactions, owner replies and media are included when exposed. Limited fallback results carry a warning and may lack these details.
Public review visibility
Yandex documents a 600-review public visibility limit. The Actor retains the requested native ranking and filters; it does not substitute relevance results for newest-first results. When the full supported window is reached, RUN_SUMMARY reports source_visibility_limit, a warning, the reported sourceTotal (or null when unavailable), and the actual saved count separately. Filters can reduce saved rows below 600. This is a source-limited export, not a claim to every review in the organization's advertised total. Earlier blocked, missing or malformed pages remain extraction failures, not successful source-limit stops.
Who is it for?
- Multi-location operations teams reviewing source-linked branch feedback.
- Reputation analysts inspecting review and owner-reply observations.
- Local-market researchers comparing defined venue samples rather than complete customer sentiment.
- Data developers retaining review identity, updates and outcomes for their own reporting tools.
How you can use the data
- Review a known coffee location's low-rating sample. Use the existing Surf Coffee URL or numeric ID with rating bounds, dates and a small cap. Keep reviewId, reviewDate and placeId, remembering that source update time can reflect edited feedback rather than only a new publication.
- Inspect exposed owner-response coverage. Retain ownerReplyText and ownerReplyDate beside the review and location. Missing reply values or fallback enrichment are unknown rather than proof that a branch never responded, and this Actor does not post replies.
- Discover a bounded Moscow sample. Use the existing coffee in Moscow query and a small places-per-query limit. Include city text because the legacy region ID is only a compatibility hint, and discovery ranking can vary or be challenged separately from review collection.
- Build your own branch review queue. Keep review IDs, update times and source links before grouping complaints or comparing snapshots. Sentiment analysis, alerts and response decisions remain downstream work.
Input settings
| Setting | Type / default | Description |
|---|---|---|
startUrls | array | Public Yandex Maps organization or Reviews URLs. Existing overview URLs are normalized to the Reviews tab. |
placeIds | string array | Numeric Yandex business IDs, useful when another place scraper supplies identifiers. |
searchQueries | string array | Optional discovery terms such as coffee in Moscow. Specific queries give more repeatable matches. |
maxReviewsPerPlace | integer, 20 | Maximum matching rows per organization, from 1 to 1,000. Yandex exposes a public window of at most 600 reviews; a higher maximum cannot retrieve unavailable reviews. |
maxPlacesPerQuery | integer, 1 | Organizations to collect per search query, from 1 to 10. |
searchRegionId | integer, 213 | Legacy region hint retained for input compatibility. The current Yandex search route derives location from query text, so include the city or region in each query. |
sort | string, relevance | relevance, date, highest, or lowest. These map to Yandex's native review rankings. |
minRating / maxRating | integer, optional | Inclusive star bounds from 1 to 5. |
dateFrom / dateTo | string, optional | Inclusive date bounds in YYYY-MM-DD format. |
maxRunSeconds | integer, optional | Work budget from 65 to 540 seconds, retained across resurrection of the same run. Extending its platform timeout or changing its input does not renew this budget. |
language | string, en-US,en;q=0.9 | HTTP language preference and API locale context. |
connectionMode | automatic by default | Automatic retains residential proxy access. Direct uses no proxy or paid fallback. See field help for costs and precedence. |
proxyConfiguration | optional object | Existing managed settings, customer proxy pools and explicit opt-outs take precedence over Connection. |
Use numeric business IDs
{"placeIds": ["238919133832"],"maxReviewsPerPlace": 50,"sort": "highest"}
Discover places by query
{"searchQueries": ["coffee in Moscow"],"searchRegionId": 213,"maxPlacesPerQuery": 3,"maxReviewsPerPlace": 25}
Direct URLs or IDs are preferable for repeatable scheduled monitoring. Query discovery depends on current search ranking and may be challenged separately from review collection.
Output data
This synthetic example illustrates the record shape. It is not a fresh review lookup or a result of the filtered input above:
Each dataset item is one review:
{"placeId": "238919133832","placeName": "Surf Coffee","placeUrl": "https://yandex.com/maps/org/surf_coffee/238919133832/reviews/","reviewId": "example-review-1","reviewerName": "Example reviewer","reviewerProfileUrl": null,"reviewerAvatarUrl": null,"reviewerLevel": "Level 5 Local Expert","rating": 5,"reviewText": "Great coffee and friendly staff.","reviewDate": "2026-07-19T19:54:17.948Z","reviewTextLanguage": "en","likes": 1,"dislikes": 0,"ownerReplyText": "Thank you for your review!","ownerReplyDate": "2026-07-20T09:00:00.000Z","photoUrls": [],"videoUrls": [],"isPinned": false,"language": "en-US,en;q=0.9","scrapedAt": "2026-07-20T12:00:00.000Z"}
| Field | Description |
|---|---|
placeId, placeName, placeUrl | Yandex organization identity and public Reviews URL. |
reviewId | Stable source identifier on the primary JSON route. Suitable for monitoring deduplication. |
reviewerName, reviewerProfileUrl | Public author identity when Yandex exposes it. |
reviewerAvatarUrl, reviewerLevel | Public avatar and contributor level when present. |
rating, reviewText, reviewDate | Stars, public review text, and exact ISO update time. |
reviewTextLanguage | Text language reported by Yandex. |
likes, dislikes | Current public reaction counts. |
ownerReplyText, ownerReplyDate | Business response and exact update time when present. |
photoUrls, videoUrls, isPinned | Review media and pinned state. |
language, scrapedAt | Run language context and collection time. |
When the signed JSON route is unavailable before any row is emitted, the Actor can use Yandex's bounded public reviews widget. Fallback rows keep the same keys, use null or empty arrays for unavailable enrichment, and include a warnings entry.
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
The start event is charged when the first review is ready to save. Validation failures, source failures and completed empty results that produce no review do not create that event.
Each saved review uses one item event. Collection stops when the available item budget is exhausted, preserving accepted rows. If your max cost cannot cover startup plus one review, no collection or custom startup charge begins. A short platform timeout stops collection before shutdown, with a warning and limitStop details in RUN_SUMMARY; allow at least 25 seconds for useful work. These deliberate limit stops do not mean every requested review was collected.
Platform compute, storage, proxy or transfer usage can apply separately. See the live Pricing tab for current rates and discounts.
Tips for best results
- Use known organization IDs for repeat comparisons. Query discovery is a separate ranked source step.
- Keep city text in discovery queries. The legacy region hint does not replace it on the current search route.
- Read update times with IDs. A changed review can retain the same source identity.
- Inspect route warnings. Limited widget fallback can have less enrichment than primary JSON output.
- Preserve partial outcomes and budgets. The item cap, date/rating filters and shared work budget bound collected rows.
- Keep reply absence uncertain. An unavailable optional value is not an exhaustive response-history audit.
Limits and caveats
- Public reviews only. The Actor does not log in, accept account cookies or solve CAPTCHAs.
- Coverage varies. Yandex can challenge access or change its pages. Optional fields can be
nullor empty. Fallback results are limited and may have less enrichment. - Dates can reflect edits. The main review date is the source update time, not necessarily the original publication date. Fallback dates may be display text rather than ISO timestamps.
- Empty is not blocked. Completed extraction with no matching reviews succeeds empty. Unavailable organization pages are identified without assuming deletion or privacy. Challenges and broken extraction are not verified empty results.
- Inspect incomplete exports. Saved rows survive isolated place failures or a work deadline. Check
RUN_SUMMARYforPARTIAL, failed places and per-place reasons. Unfinished work can be retained for recovery within the original run's remaining budget. A completed traversal is not extracted or charged again on resurrection. A platform success does not guarantee every requested place completed. - Keep batches bounded. Use at most 100 combined URLs, IDs and queries (URLs up to 4,096 characters and queries up to 500). Safeguards allow at most 10,000 saved reviews per run, 100 review pages per organization and 512 HTTP attempts across the original run, including retries and fallbacks. Each attempt may follow up to 10 redirects. Request permits are reserved in blocks of 16. Unused permits can be lost after interruption, never renewed.
- Oversized responses stop truthfully. Responses are streamed up to 4 MiB after decompression, with a separate 256 KiB DOM parsing ceiling and bounded HTML/JSON structure. A safety-limit failure preserves saved reviews but does not claim complete or empty extraction. Split a large workload or narrow its filters. These are resource safeguards, not a guarantee of source availability or profitability.
- Fatal failures still fail. Zero-output extraction failures, invalid inputs and essential storage or billing failures remain failures.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
Your own destinations can include Google Sheets, BigQuery, Snowflake, Looker Studio, Power BI, HubSpot, Salesforce, Zendesk, Slack or an internal queue. Retain exact rows and source citations behind generated themes, reports or notifications.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~yandex-maps-reviews-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"placeIds":["238919133832"],"maxReviewsPerPlace":100,"sort":"date","minRating":1,"maxRating":3}'
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/yandex-maps-reviews-scraper').call({placeIds: ['238919133832'],maxReviewsPerPlace: 100,sort: 'date',minRating: 1,maxRating: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("fetch_cat/yandex-maps-reviews-scraper").call(run_input={"placeIds": ["238919133832"],"maxReviewsPerPlace": 100,"sort": "date","minRating": 1,"maxRating": 3,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
MCP and AI agents
You can ask your AI assistant to collect data with Yandex Maps Reviews Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Yandex Maps Reviews Scraper. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/yandex-maps-reviews-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Yandex Maps Reviews Scraper by Fetch Cat, or give it the identifier fetch_cat/yandex-maps-reviews-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
- “Get five recent low-rated reviews for Yandex business 238919133832 and summarize recurring complaints, keeping a link back to the organization.”
- “Collect five highest-rated reviews for Surf Coffee at https://yandex.com/maps/org/surf_coffee/238919133832/reviews/ and show any available owner replies beside them.”
- “Find a coffee shop in Moscow and retrieve three recent reviews. Put the ratings, text and available review dates into a table.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
Does it require a Yandex account?
No. It works with public organization reviews and does not accept login cookies.
Can it collect more than the first visible reviews?
Yes. It follows Yandex's review pages up to maxReviewsPerPlace, with a current maximum of 1,000 matching reviews per place.
Does it include owner replies and media?
Yes, when Yandex exposes them. Owner replies, reply dates, photo URLs, and video URLs are included on the primary route.
Can I monitor many locations?
Yes. Supply multiple URLs or business IDs. Use source review IDs and update times to compare exports in your own workflow. Fallback records have more limited identifiers and dates.
Can I use the API or an AI assistant?
Yes. Use the API examples or connect through Apify's MCP server above. The assistant can analyze the returned reviews, but this scraper does not perform sentiment analysis itself.
What happens if no reviews match?
Completed extraction with no matching reviews returns an empty dataset. Check the run summary to distinguish this from incomplete or blocked extraction. See Pricing for charge conditions.
Which alternative should I choose?
Use Yandex Maps Scraper below for business listings rather than reviews. Use Google Maps Reviews Scraper when the reviews you need are on Google Maps.
Related Actors
- Yandex Maps Scraper — Collect public Yandex Maps business listings and available place metadata.
- Apple Maps Places Scraper — Collect public Apple Maps place listings and available business details.
- Google Maps Places Scraper — Find public Google Maps businesses with available addresses, ratings, phone numbers and websites.
- 2GIS Places Scraper — Find public 2GIS businesses with available addresses, categories, ratings and review counts.
- Google Maps Reviews Scraper — Collect public Google Maps review text, ratings and available reviewer fields.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥