Yandex Maps Reviews Scraper

Export public Yandex Maps reviews with ratings, exact dates, reactions, media, reviewer details, and owner replies using fast JSON pagination.

Data fields

FieldTypeDescription
placeIdstringStable Yandex Maps organization identifier.
placeNamestring | nullOrganization name shown by Yandex Maps.
placeUrlstringPublic Yandex Maps reviews URL.
reviewIdstringStable review identifier supplied by Yandex when the JSON route is available.
reviewerNamestring | nullPublic reviewer display name when present.
reviewerProfileUrlstring | nullPublic reviewer profile URL when present.
reviewerAvatarUrlstring | nullPublic reviewer avatar URL when present.
reviewerLevelstring | nullPublic Yandex contributor level when present.

Input preview

startUrlsYandex Maps organization/reviews URLs
placeIdsYandex business IDs
searchQueriesSearch queries
maxReviewsPerPlaceMaximum reviews per place
maxPlacesPerQueryMaximum places per search query
searchRegionIdYandex Maps search region ID

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

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.

Common questions

Questions and answers reused from the canonical actor README.

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 and schedule the Actor. Stable reviewId and ISO reviewDate fields support downstream new-review detection.