# Yandex Maps Reviews Scraper & API (`muhammadafzal/yandex-maps-reviews-scraper`) Actor

Extract public Yandex Maps business reviews, ratings, reviewer fields, business responses, photos, and company metadata from organization URLs.

- **URL**: https://apify.com/muhammadafzal/yandex-maps-reviews-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Automation, MCP servers, Developer tools
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 yandex maps review returneds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Yandex Maps Reviews Scraper & API | Парсер Отзывов Яндекс Карт

Extract public Yandex Maps business reviews into clean JSON through Apify Console, API, datasets, schedules, or Apify MCP. It is designed for reputation monitoring, local-market research, customer-experience analysis, and AI agents that need review text, ratings, dates, business responses, and the aggregate company rating in one predictable row shape.

### What it extracts

| Field | Meaning |
| --- | --- |
| `reviewId` | Yandex review identifier, or a stable generated ID when the page does not expose one |
| `reviewerName`, `reviewerLevel` | Public reviewer display fields |
| `rating` | Individual score from 1 to 5; score-only ratings are preserved |
| `reviewText` | Public comment, nullable when a user left only a score |
| `publishedAt` | ISO timestamp when exposed by Yandex |
| `ownerResponse` | Public business response when present |
| `reviewUrl`, `photoUrls` | Public links exposed on the review card |
| `companyName`, `companyRating`, `companyRatingCount` | Aggregate business metadata repeated on each row for easy joins |
| `warnings` | Non-fatal extraction or access diagnostics |

Yandex says a user may submit a score without a comment, so `reviewText` is intentionally nullable. The actor does not invent missing text or ratings.

### When to use it

Use this actor when you have one or more public Yandex Maps organization URLs, such as `https://yandex.com/maps/org/yandex/117684461999/reviews/`. Organization URLs without `/reviews/` are normalized automatically. The actor supports the public Yandex Maps domains `yandex.com`, `yandex.ru`, `yandex.kz`, `yandex.by`, `yandex.uz`, `yandex.co.il`, and `yandex.com.tr`.

This is a review actor, not a business-directory search actor. It does not discover organizations from keywords, log in to Yandex accounts, post reviews, or access private owner dashboards. For directory discovery, first supply organization URLs from an authorized source.

### Input

```json
{
  "startUrls": [
    { "url": "https://yandex.com/maps/org/yandex/117684461999/reviews/" }
  ],
  "maxReviews": 25,
  "maxScrolls": 8,
  "requestDelayMs": 800,
  "includeCompanyInfo": true
}
```

`maxReviews` is the maximum number of unique review rows, not a page count. `maxScrolls` bounds lazy-loaded review batches. Increase it for businesses with long review histories, but keep it bounded for predictable runtime and target traffic. `includeCompanyInfo` keeps company metadata in every row by default. If Yandex blocks a cloud IP, provide a residential Apify proxy configuration through `proxyConfiguration`; the actor uses a low-concurrency browser session and retries 403, 429, and upstream failures.

### Output

```json
{
  "recordType": "review",
  "reviewId": "generated-7c5f2b91",
  "reviewerName": "Валентин Дерах",
  "reviewerLevel": "Level 13 Local Expert",
  "rating": 5,
  "reviewText": "Побывал этом офисе на мероприятии...",
  "publishedAt": "2025-10-01T00:00:00.000Z",
  "ownerResponse": null,
  "companyName": "Yandex",
  "companyRating": 4,
  "companyRatingCount": 66,
  "companyUrl": "https://yandex.com/maps/org/yandex/117684461999/reviews/",
  "sourceUrl": "https://yandex.com/maps/org/yandex/117684461999/reviews/",
  "warnings": []
}
```

The `OUTPUT` key-value record contains the terminal status, row count, failed-request count, warnings, runtime, and simulated or actual result-event billing counters. An empty but valid page is reported as `EMPTY`; a page that could not be loaded after retries is reported as `FAILED` rather than a misleading empty dataset.

### Pricing

| Event | Price |
| --- | ---: |
| Actor start | $0.00005 |
| Unique review row | $0.005 |

The run prints its maximum result-event cost before browsing. The actor charges only after a schema-valid row has been stored and stops at `maxReviews` or Apify’s event-charge limit. A 25-review run costs at most about $0.125 in result events, plus the actor-start event and any platform/proxy usage shown by Apify.

### API and MCP

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('YOUR_USERNAME/yandex-maps-reviews-scraper').call({
  startUrls: [{ url: 'https://yandex.com/maps/org/yandex/117684461999/reviews/' }],
  maxReviews: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

For Apify MCP, expose the actor through `https://mcp.apify.com/?tools=YOUR_USERNAME/yandex-maps-reviews-scraper`. The input descriptions route agents toward organization URLs, and the dataset schema documents nullable score-only review text and response fields.

### Reliability, limits, and legal use

Yandex Maps is a JavaScript application and may change DOM classes, lazy-loading behavior, language labels, or access policies. The actor uses semantic attributes and several class fallbacks, preserves partial results, and records diagnostics. It does not promise access to all historical reviews: Yandex’s own business help says only the last 600 published reviews may be visible in the business account and Maps. Local runs are useful for parser tests; cloud runs with a suitable proxy are the meaningful access test.

Use only public pages and data for a lawful purpose. Respect Yandex Maps terms, robots/access controls, privacy rules, copyright, database rights, and any contractual restrictions that apply to your use case. Do not use this actor to collect private account data, bypass authentication, harass reviewers, or republish personal data without a lawful basis.

### Related actors

Use a dedicated Yandex Maps organization/business scraper if you need directory discovery or contact fields. Use this actor when the primary output is review-level data.

# Actor input Schema

## `startUrls` (type: `array`):

Use this when you have one or more public Yandex Maps organization or reviews URLs. Accepts https://yandex.com, yandex.ru, yandex.kz, yandex.by, yandex.uz, yandex.co.il, or yandex.com.tr URLs; example: https://yandex.com/maps/org/yandex/117684461999/reviews/.

## `maxReviews` (type: `integer`):

Use this when you need a bounded number of review rows. Use an integer from 1 to 1000; default is 25. This is a review-row cap, not a browser-scroll count.

## `maxScrolls` (type: `integer`):

Use this when you need more or fewer lazy-loaded review batches. Use 0 to 50; default is 8. Higher values increase runtime and target traffic.

## `requestDelayMs` (type: `integer`):

Use this when the target needs more time to load reviews. Use 250 to 5000 milliseconds; default is 800. This is a polite delay, not a page timeout.

## `includeCompanyInfo` (type: `boolean`):

Use this when each review row should repeat the public business name, aggregate rating, and rating count for easy downstream joins. Default is true.

## `proxyConfiguration` (type: `object`):

Use this when Yandex Maps blocks the default cloud IP. Supply an Apify residential proxy configuration or proxy URLs; leave empty for direct access.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://yandex.com/maps/org/yandex/117684461999/reviews/"
    }
  ],
  "maxReviews": 25,
  "maxScrolls": 8,
  "requestDelayMs": 800,
  "includeCompanyInfo": true,
  "proxyConfiguration": {}
}
```

# Actor output Schema

## `dataset` (type: `string`):

Normalized review rows returned by this run.

## `datasetCsv` (type: `string`):

Normalized review rows as CSV.

## `summary` (type: `string`):

Counts, billing, warnings, and request diagnostics.

## `consoleRun` (type: `string`):

Live run status, logs, and dataset preview.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/yandex-maps-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/yandex-maps-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call muhammadafzal/yandex-maps-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=muhammadafzal/yandex-maps-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8hRpwwOGecCLk14hJ/builds/Z2OUKO0QRndoJTtbc/openapi.json
