Export public Yandex Maps reviews through fast paginated JSON requests. Collect stable review IDs, exact dates, ratings, text, reactions, photos, videos, reviewer details, and owner replies without starting a browser.
What does it do?
Yandex Maps Reviews Scraper turns public organization reviews into analysis-ready JSON, CSV, Excel, or API data. Give it organization URLs, numeric Yandex business IDs, or search queries. It follows Yandex's review pagination up to your limit and saves one review per dataset row.
The Actor is designed for:
- Multi-location operators tracking branch ratings, complaints, and unanswered reviews.
- Local SEO and reputation agencies producing recurring client reports.
- Market researchers comparing customer feedback across venues and categories.
- Data teams feeding review rows into alerts, warehouses, BI, CRM, or AI analysis.
Who is it for and common use cases?
Reputation teams can monitor new low-rating reviews and response coverage. Local SEO agencies can compare locations or competitors. Operations teams can route complaints by branch. Researchers and data teams can archive exact review records for analysis, dashboards, or authorized AI workflows.
Key features
- Up to 1,000 matching reviews per place.
- Native Yandex sorting by relevance, newest, highest rating, or lowest rating.
- Inclusive rating and ISO date filters.
- Exact source review IDs and update timestamps for monitoring workflows.
- Reviewer name, public profile, avatar, and contributor level.
- Likes, dislikes, photos, videos, text language, and pinned state.
- Business owner replies with exact reply timestamps.
- Direct organization URLs, numeric business IDs, and query discovery.
- Lightweight HTTP collection with no browser startup.
- Checkpointed progress, duplicate protection, bounded retries, and per-place failure diagnostics.
- Agent-readable input, output, dataset, and key-value-store schemas.
Input example
At least one of startUrls, placeIds, or searchQueries is required.
{
"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"]
}
}
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. |
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. The full value is available for collection; the Actor separately respects the platform timeout reserve for checkpoints and diagnostics. |
language |
string, en-US,en;q=0.9 |
HTTP language preference and API locale context. |
proxyConfiguration |
object, residential proxy by default | The existing residential default is retained because Yandex commonly challenges cloud datacenter traffic. Disable it in authorized environments where direct requests work. |
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 example
Each dataset item is one review:
{
"placeId": "238919133832",
"placeName": "Surf Coffee",
"placeUrl": "https://yandex.com/maps/org/surf_coffee/238919133832/reviews/",
"reviewId": "ozOWw-4cUE8Yp-DzdhGseAdC8qAH6B",
"reviewerName": "Ксения Плетнева",
"reviewerProfileUrl": "https://yandex.com/maps/user/cj5g11g0d6awj8vren68yugvac/reviews/",
"reviewerAvatarUrl": "https://avatars.mds.yandex.net/get-yapic/example/orig",
"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"
}
Reliability and run records
The Actor checks source response shape instead of treating malformed or challenge pages as empty reviews. It bounds transient retries, shares one run deadline across all requests, detects repeated pagination pages, and continues healthy places when one place fails.
RUN_SUMMARY in the default key-value store includes saved and charged counts, completed and failed places, API/widget route counts, warnings, and resume status. PENDING_WORK is maintained during active work and removed after a complete run. If the configured work deadline arrives after valid rows were saved, the run completes with PARTIAL in RUN_SUMMARY and retains PENDING_WORK instead of discarding the rows or reporting a total failure.
Dataset writes use the Actor's item PPE event in the same SDK operation. On Apify, a successfully saved row therefore corresponds to one item event.
Performance and proxy guidance
The primary route is lightweight and fetches up to 50 reviews per source request. Yandex commonly challenges Apify cloud datacenter traffic, so the Actor retains its existing residential proxy default. In an authorized environment where direct requests work, set useApifyProxy to false to avoid proxy transfer cost.
The Actor does not log in, accept account cookies, or solve CAPTCHAs.
API usage
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 ApifyClient
import os
client = 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().items
print(items)
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}'
Integrations
- Schedule the Actor into Google Sheets for a branch-level review-response tracker.
- Send datasets to BigQuery, Snowflake, Looker Studio, Power BI, or another warehouse/dashboard.
- Route low ratings or missing owner replies into HubSpot, Salesforce, Zendesk, Slack, or an internal queue.
- Feed exact review rows into sentiment analysis, issue clustering, alerts, and competitor reports.
Use with AI agents through MCP
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/yandex-maps-reviews-scraper"
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/yandex-maps-reviews-scraper"
}
}
}
Example prompt: “Export the newest one-star to three-star reviews for these Yandex business IDs, then group complaints by location.”
Limits and data quality
Yandex can change or challenge its public site. Optional fields remain null or empty when Yandex does not expose them; the Actor does not invent values. Sorting is source-native, while rating/date filters are applied deterministically to returned review objects.
A run fails clearly if all requested places fail or no review matches the requested filters. If at least one place succeeds, other place failures are preserved in RUN_SUMMARY. Public organization reviews only are supported; private account pages and login-only data are outside the Actor's scope.
Inputs and outputs remain in the Apify storage configured for the run. FetchCat does not send them to advertising networks, data brokers, or model-training services. Requests go only to the target source and, when explicitly enabled, Apify Proxy.
Support
Report blocked runs, schema changes, incorrect fields, or missing reviews from the Actor page. Include the Apify run ID or run URL, sanitized input JSON, expected output, actual output returned by the dataset, and one reproducible public URL.