# 2GIS Reviews Scraper API | Парсер отзывов 2ГИС (`themineworks/2gis-reviews-scraper-api`) Actor

Scrape 2GIS reviews (отзывы 2ГИС) for any place in Russia, Kazakhstan, Uzbekistan, the UAE and more: star rating, full text, date, official business reply, photos and the author's display name, with place name, address, city and rating on every row. Date filter, search. No login.

- **URL**: https://apify.com/themineworks/2gis-reviews-scraper-api.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Lead generation, Marketing, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 2GIS Reviews Scraper API | Парсер отзывов 2ГИС

[![630 2GIS reviews in 134 seconds: a recorded run read 500 Moscow Zoo reviews and all 130 of a Moscow restaurant in 134 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/2gis-reviews-scraper-api-hero.png)](https://console.apify.com/actors/IdjIVG4aTFUhLhKvU/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

Export the reviews of any 2GIS place (отзывы 2ГИС) to JSON, CSV or Excel: the star rating, the full text, the date written and edited, the business's official reply, the photos and the reviewer's display name, with the place's name, address, city, district, rating and coordinates on every row. It works with place links from 2gis.ru, 2gis.kz, 2gis.ae and the other 2GIS sites, or with a search in any city 2GIS knows.

### Why choose this actor?

- **630 reviews from 2 places in 134 seconds.** On 1 Oct 2026 a run read 500 reviews of the Moscow Zoo and all 130 reviews of a Moscow restaurant. It uses the same public reviews service the 2GIS site calls, 50 reviews per call, with no 2GIS account and no browser.
- **Stalled calls are retried, not lost.** From datacenter IPs some 2GIS calls hang. In that run 4 of 17 review calls hit the 20 second timeout; each was retried on a new session and every page arrived. The wait is included in the 134 seconds above.
- **From $0.50 per 1,000 reviews, plus a flat $0.005 per run.** Hidden reviews, reviews older than your date filter, places 2GIS does not know, chain or building links, duplicates, refused calls and the information rows are never charged.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/IdjIVG4aTFUhLhKvU/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Marketing, SEO and reviews family:** [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the JSON tab of the input page and press Start. It returns the 10 newest reviews of the Moscow Zoo in a few seconds.

```json
{
  "startUrls": ["https://2gis.ru/moscow/firm/4504127908731515"],
  "maxReviewsPerPlace": 10,
  "sort": "newest"
}
```

Give places in `startUrls`, one per line: a place link copied from the address bar on any 2GIS site (it contains `/firm/` and a long number, such as `2gis.ru/moscow/firm/4504127908731515` or `2gis.kz/almaty/firm/70000001088189910`, with or without `/tab/reviews`), or just the place id. The `business_id` and `maps_url` values from our [2GIS Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) work as they are. Or leave `startUrls` empty and type a `searchQuery` such as `кофейня` with a `city`, and the actor finds the places first. You can use both in one run.

Apify's free plan includes $5 of credit every month, which covers about 4,990 reviews at this actor's price.

#### Copy to your AI assistant

```
themineworks/2gis-reviews-scraper-api on Apify. It exports the public reviews of 2GIS places in Russia, Kazakhstan, the UAE and other 2GIS countries (rating, full text, date written and edited, official business reply, photo links, reviewer display name, review source) with the place's name, address, city, district, rating and coordinates on every row. Call ApifyClient("TOKEN").actor("themineworks/2gis-reviews-scraper-api").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: startUrls (array of 2GIS place links containing /firm/<id>, or numeric place ids) or searchQuery (string). Optional: city (default "Москва", a city name in English or the local language, or a 2GIS region id; used only with searchQuery), maxPlaces (default 10, 1 to 200), maxReviewsPerPlace (default 100, 0 means every review up to 10000), sort ("relevance" default or "newest"), reviewsStartDate (a date such as "2026-01-01" or a window such as "30 days"). Rows with a _type field are information rows, not reviews. Full spec: GET https://api.apify.com/v2/acts/themineworks~2gis-reviews-scraper-api/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **29 fields on a review row**: 12 about the place (name, address, city, district, country, categories, rating, review count, coordinates, link) and 17 about the review (id, stars, full text, date written, date edited, display name, likes, comments, photos, business reply and its date, review source, sort order, position, input and collection time).
- **2 sort orders**: relevance, the order the 2GIS review tab uses, or newest first.
- **A date filter that stops early.** With `reviewsStartDate` set, reviews are read newest first and reading stops at the first older review, so older reviews are neither fetched nor charged.
- **Up to 500 places per run**, read 3 at a time, and up to 10,000 reviews per place, 50 per call. The same place given twice is read once.
- **Optional search in any city 2GIS knows**, by name in English or the local language (for example `Москва`, `Алматы` or `Dubai`) or by 2GIS region id. It adds up to 200 places in 2GIS's own order.
- **A run summary for every place** in the key-value record `OUTPUT`: `ok`, `not_found`, `no_reviews`, `none_in_date_window`, `robots_disallowed`, `blocked`, `duplicate` or `skipped`, with the review count 2GIS shows, hidden reviews skipped and calls made.

### How to use it

#### Basic: one place

```json
{
  "startUrls": ["https://2gis.ru/moscow/firm/4504127908731515"],
  "maxReviewsPerPlace": 100
}
```

#### Several places, in several countries, at once

```json
{
  "startUrls": [
    "https://2gis.ru/moscow/firm/4504127908731515",
    "70000001057394703",
    "https://2gis.kz/almaty/firm/70000001088189910"
  ],
  "maxReviewsPerPlace": 200
}
```

`maxReviewsPerPlace` applies to each place on its own. A place with fewer reviews than that is read completely: the Moscow restaurant above has 130.

#### Weekly new reviews of your own branches

```json
{
  "startUrls": ["4504127908731515", "70000001057394703"],
  "reviewsStartDate": "7 days",
  "maxReviewsPerPlace": 0
}
```

Save this as a task and schedule it every Monday morning, for example with the cron `0 8 * * 1`. Each run reads newest first and stops at the first review older than a week, so you pay only for that week's reviews, plus the $0.005 run fee. On 29 Sep 2026 a 30 day window over three places in Moscow and Almaty returned 253 reviews in 33 seconds.

#### Compare the coffee shops of a city

```json
{
  "searchQuery": "кофейня",
  "city": "Алматы",
  "maxPlaces": 10,
  "maxReviewsPerPlace": 50,
  "sort": "newest"
}
```

On 29 Sep 2026 this search found 1,328 coffee shops in Almaty on 2GIS; the actor took the first ones in 2GIS's order. `input` on each row reads `search: кофейня (<place name>)`, so you can group rows by shop.

#### Places in the UAE

```json
{
  "searchQuery": "coffee",
  "city": "Dubai",
  "maxPlaces": 10,
  "maxReviewsPerPlace": 20
}
```

2GIS treats the whole UAE as one region, so `Dubai` searches the country. Pasting 2gis.ae place links works too.

#### Every review of one place

```json
{
  "startUrls": ["4504127908731515"],
  "maxReviewsPerPlace": 0
}
```

`0` means every review 2GIS shows, up to 10,000. The Moscow Zoo showed about 5,750 reviews on 1 Oct 2026; at 50 per call that is about 116 calls, so expect a run of several minutes, more if some calls stall.

#### Start from businesses you already have

Run our [2GIS Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for a category and city, then paste its `business_id` (for example `70000001057394703_s8g4h3J0J0fH43b2G6yH2A0Cxe7g3G59`) or `maps_url` values into `startUrls` as they are. A list of every car service in a district becomes a review export in one more run.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `startUrls` | array of strings | none | Places, one per line: a place link from any 2GIS site (`/firm/<id>`, with or without `/tab/reviews`) or the place id. Up to 500 per run; the same place twice is read once. Short links (go.2gis.com) are not opened (see the FAQ). Leave it empty if you use `searchQuery`. |
| `searchQuery` | string | none | Optional. A search such as `кофейня`, `автосервис` or `dentist`. The actor finds places in `city` first, then reads their reviews. Works together with `startUrls`. |
| `city` | string | `Москва` | City for the search, in English or the local language, or a 2GIS region id. Only used with `searchQuery`. |
| `maxPlaces` | integer, 1 to 200 | `10` | How many places the search may add, in 2GIS's own order. |
| `maxReviewsPerPlace` | integer, 0 to 10,000 | `100` | Most reviews per place. `0` means every review 2GIS shows, up to 10,000. |
| `sort` | string | `relevance` | `relevance` (the order the 2GIS review tab uses) or `newest`. |
| `reviewsStartDate` | string | none | Only reviews since a date (`2026-01-01`) or within a window (`30 days`, `6 months`, `1 year`). Reviews are then read newest first, whatever `sort` says, and reading stops at the first older review. |

The input form in Apify Console starts with the Moscow Zoo link and 50 reviews per place filled in. Runs started through the API or an AI assistant get only what you send, plus the defaults above. A run with neither `startUrls` nor `searchQuery` stops at once with an information row that says so.

### What data do you get?

One row per review. Fields 2GIS leaves empty for a review are left out of that row rather than sent as `null`; `photo_urls` is an empty list when the review has no photos.

**The place** (repeated on each of its reviews): `place_id`, `place_name`, `place_url`, `place_address`, `place_city`, `place_district`, `place_country`, `place_latitude`, `place_longitude`, `place_categories`, and `place_rating` with `place_review_count` as 2GIS counts them.

**The review**: `review_id`, `rating` (1 to 5 stars), `text` in full, `date` when it was written and `date_edited` when it was last edited (ISO 8601, UTC).

**The reviewer**: `author_name`, the display name exactly as 2GIS shows it. Nothing else about the reviewer is collected.

**Reactions and media**: `likes`, `comments_count`, `photos_count` and `photo_urls`.

**The business's answer**: `business_reply` and `business_reply_date`, when the business has posted an official reply.

**Where the row came from**: `source` (where the review was written: `2gis` for most, `tbank` for reviews collected by a payment app, and other 2GIS partners may appear), `sort_order`, `position` in that order, `input` (the line or search the place came from) and `scraped_at`.

**Information rows**: every run that delivers reviews ends with one `_type: "info"` row, and a run that delivers none adds one that says why. They are never charged. Filter on `_type` to keep only reviews.

What we saw in the 630 rows of our 1 Oct 2026 run, so you can plan for it:

- `source` was `2gis` on 576 rows and `tbank` on 54.
- `date_edited` was present on 290 rows. Use `date` for when a review was first written.
- `business_reply` was present on only 5 rows: the Moscow Zoo rarely answers. In our 29 Sep search of Almaty coffee shops, 32 of 90 rows had one.
- `photo_urls` had at least one link on 176 rows and was empty on 454.
- `place_review_count` comes from the 2GIS catalog and can differ slightly from the count on the review tab (5,771 against 5,753 for the zoo).

#### Stable fields for automations

These 15 fields were present in every one of the 630 rows we sampled on 1 Oct 2026, and in our 29 Sep runs in Moscow, Almaty and Dubai. Their names will not change, so a Sheet, Zap, Make scenario or n8n flow can map to them safely.

| Field | What it is |
|---|---|
| `review_id` | 2GIS review id. Use it as the unique key. |
| `place_id` | 2GIS place id |
| `place_name` | Name of the place |
| `place_address` | Street address as 2GIS shows it |
| `place_city` | City of the place |
| `place_country` | Country of the place |
| `place_rating` | Average rating of the place |
| `place_url` | Link to the place on 2GIS |
| `rating` | Stars given in this review, 1 to 5 |
| `text` | Full review text |
| `date` | When the review was written, ISO 8601 in UTC |
| `author_name` | Reviewer's display name as 2GIS shows it |
| `source` | Where the review was written, such as `2gis` or `tbank` |
| `input` | The input line or search the place came from |
| `scraped_at` | When the row was collected, ISO 8601 in UTC |

#### Output examples

Real rows from our test runs. Long texts are shortened and marked with "...".

**An edited review with photos** (1 Oct 2026, relevance order, photo list trimmed from 4 links)

```json
{
  "place_id": "4504127908731515",
  "place_name": "Московский зоопарк",
  "place_address": "Большая Грузинская улица, 1 ст1",
  "place_city": "Москва",
  "place_district": "Пресненский",
  "place_country": "Россия",
  "place_categories": ["Зоопарк"],
  "place_rating": 4.8,
  "place_review_count": 5771,
  "place_latitude": 55.761132,
  "place_longitude": 37.578438,
  "place_url": "https://2gis.ru/firm/4504127908731515",
  "review_id": "270936241",
  "rating": 5,
  "text": "Шикарное место! Был здесь 4 раза и в каждый раз открываю что то новенькое! Особо нравится павильон ластоногие, это не забываемо!",
  "date": "2026-08-21T12:01:32.414Z",
  "date_edited": "2026-08-21T12:04:05.558Z",
  "author_name": "Евгений Павлов",
  "likes": 5,
  "comments_count": 0,
  "photos_count": 4,
  "photo_urls": [
    "https://cachizer2.2gis.com/reviews-photos/92addbee-c175-46ec-b8e2-700620dde769.jpg",
    "https://cachizer2.2gis.com/reviews-photos/76196e41-58a7-4af6-82f4-8df27fc879f0.jpg"
  ],
  "source": "2gis",
  "sort_order": "relevance",
  "position": 1,
  "input": "https://2gis.ru/moscow/firm/4504127908731515",
  "scraped_at": "2026-10-01T13:35:58.981Z"
}
```

**A one star review with the official reply** (1 Oct 2026, place fields trimmed)

```json
{
  "place_id": "70000001057394703",
  "place_name": "Restaurant by Deep Fried Friends",
  "place_district": "Таганский",
  "place_rating": 4.9,
  "place_review_count": 130,
  "review_id": "253396992",
  "rating": 1,
  "text": "Не пустили в клуб без объяснения причины. Шли на мероприятие по розыгрышу кольца...",
  "date": "2026-06-26T21:19:12.742Z",
  "likes": 0,
  "comments_count": 1,
  "photos_count": 0,
  "photo_urls": [],
  "business_reply": "Добрый день! Прохождение фейс-контроля...",
  "business_reply_date": "2026-08-19T13:38:42.882Z",
  "source": "2gis",
  "sort_order": "relevance",
  "position": 51
}
```

**A review collected through a payment app** (1 Oct 2026, place fields trimmed)

```json
{
  "place_id": "70000001057394703",
  "place_name": "Restaurant by Deep Fried Friends",
  "review_id": "274777202",
  "rating": 5,
  "text": "Очень люблю кухню ребят! Всегда отличный сервис...",
  "date": "2025-01-05T18:12:51.522Z",
  "author_name": "Данила С.",
  "photos_count": 0,
  "source": "tbank",
  "sort_order": "relevance",
  "position": 7
}
```

**A place in Dubai found by a search** (29 Sep 2026, `coffee` in `Dubai`)

```json
{
  "place_id": "70000001078558500",
  "place_name": "Namelaka",
  "place_address": "Dubai Hills Mall, 999, Umm Suqeim street",
  "place_city": "Dubai",
  "place_district": "Hadaeq Sheikh Mohammed Bin Rashid",
  "place_country": "UAE",
  "place_categories": ["Coffee shop", "Pastry shops"],
  "place_rating": 4.5,
  "place_review_count": 8,
  "place_latitude": 25.100264,
  "place_longitude": 55.24174,
  "place_url": "https://2gis.ru/firm/70000001078558500",
  "review_id": "288977935",
  "rating": 4,
  "text": "Мы очень любим Namelaka: здесь действительно вкусная кухня и прекрасные десерты...",
  "date": "2026-09-02T12:46:41.080Z",
  "likes": 0,
  "comments_count": 0,
  "photos_count": 0,
  "photo_urls": [],
  "source": "2gis",
  "sort_order": "relevance",
  "position": 1,
  "input": "search: coffee (Namelaka)",
  "scraped_at": "2026-09-29T18:20:49.538Z"
}
```

Reviewer names are left out of the trimmed samples where they were not needed; the actor returns `author_name` on every row where 2GIS shows one.

**The information row at the end of a run** (1 Oct 2026, never charged)

```json
{
  "_type": "info",
  "delivered": 630,
  "message": "630 2GIS reviews delivered. This row is informational: it is never billed.",
  "schedule_tip": "Want this refreshed automatically? Apify Console -> this Actor -> Schedules -> Add schedule -> pick how often (e.g. daily) -> Save. It reruns with the same input on autopilot, no code required.",
  "review_tip": "Found this useful? A quick Store review helps other buyers find it: https://apify.com/themineworks/2gis-reviews-scraper-api?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral#reviews",
  "scraped_at": "2026-10-01T13:38:00.271Z"
}
```

**One place's entry in the `OUTPUT` summary** (1 Oct 2026; the key-value record, not a dataset row)

```json
{
  "input": "https://2gis.ru/moscow/firm/4504127908731515",
  "place_id": "4504127908731515",
  "status": "ok",
  "stop_reason": "reached maxReviewsPerPlace (500)",
  "place_name": "Московский зоопарк",
  "reviews_on_site": 5753,
  "place_details": "catalog",
  "pages_fetched": 10,
  "pages_failed": 1,
  "call_attempts": 15,
  "delivered": 500,
  "duplicates_skipped": 0,
  "hidden_skipped": 0,
  "outside_date_window": 0,
  "last_error": "connection error: Timeout awaiting 'request' for 20000ms"
}
```

`pages_failed: 1` is the page at offset 450, which stalled on its first tries and arrived when the actor asked again on a new session.

### Pricing

Pay per event: you are charged for each review saved to your dataset, plus a flat fee once per run. The review price drops as your Apify plan goes up.

| Event | Free plan | Bronze (Starter) | Silver (Scale) | Gold and above (Business) |
|---|---|---|---|---|
| `review-scraped`, per review | $0.001 | $0.00085 | $0.0007 | $0.0005 |
| Per 1,000 reviews | $1.00 | $0.85 | $0.70 | $0.50 |
| `run-start`, per run | $0.005 | $0.005 | $0.005 | $0.005 |

- **Start fee: a flat $0.005 per run**, charged once when the run starts, whatever memory you choose. It is our own `run-start` event, not Apify's per GB start charge, so a bigger memory setting does not raise it.
- **Never charged**: places 2GIS does not know, chain, building or search links that are not one place, short links the actor may not open, reviews 2GIS marks as hidden, reviews older than your date filter, the same review found twice, calls 2GIS refused, and the information rows.
- **Included at no extra cost**: the place details on every row, the search, the date filter and the datacenter proxies. There is no residential proxy surcharge, and you pay nothing for platform compute on top of these prices.
- **Spending cap**: if you set a maximum cost per run in Apify, the actor stops adding reviews once that budget is used, so you never receive rows past your cap.
- **No price change is scheduled.** These prices have applied since 30 Sep 2026. The Pricing tab always shows the rate for your own plan; if this table and the Pricing tab ever disagree, the Pricing tab is right.

Worked examples on the Free plan: 1,000 reviews cost $1.00 plus $0.005, so $1.005. On Gold, the same 1,000 reviews cost $0.505.

### FAQ

**What is 2GIS?**
2GIS (2ГИС) is a map and business directory used widely in Russia, Kazakhstan and other countries of the region, and in the UAE. Its place pages carry star ratings and written reviews, often with photos and an official answer from the business.

**How many reviews can I get?**
Up to 10,000 per place and 500 places per run, 50 reviews per call. A place with fewer reviews than your `maxReviewsPerPlace` is read completely.

**How fresh is the data?**
Each run reads 2GIS live when it starts. There is no cache. `date` is when the review was written and `date_edited` when it was last changed.

**Do I need a 2GIS account, cookies or an API key?**
No. The 2GIS review tab loads its reviews from 2GIS's public reviews service using a public key the site gives every visitor's browser. The actor makes those same calls and reads the place details from 2GIS's public catalog service. If 2GIS changes the public key, the actor reads the new one from 2gis.ru once and carries on.

**Do I need a proxy?**
No setting is needed. The actor goes through Apify datacenter proxies on its own, and that cost is included in the price. Some calls stall from datacenter IPs, so each call has a 20 second timeout and up to 3 tries on new sessions.

**Which links work?**
Place links with `/firm/` and a number, from any 2GIS site, and bare place ids. A link to a chain (`/branches/`), a building (`/inside/`, `/geo/`) or a search page is skipped with a note in the log, because it is not one place; use `searchQuery`, or paste the links of the branches you want. Short links on go.2gis.com are not opened, because that host's robots.txt disallows all crawling; open the short link in a browser and paste the full place link instead.

**Can I read the complaints first?**
2GIS offers only relevance and newest first. Export the reviews and sort by `rating`, or filter for ratings of 1 and 2 in your sheet.

**What happens with a wrong link, a hidden review or a place without reviews?**
The run carries on with the other places. Each place gets a status in the `OUTPUT` summary, and nothing is charged for places that return no reviews. Reviews 2GIS marks as hidden are skipped and counted in `hidden_skipped`.

**What if I give no places and no search?**
The run stops at once with an information row saying what to add. No review is charged, but the flat $0.005 start fee still applies, so check the input before scheduling it.

**What if 2GIS refuses calls?**
A call that fails 3 times is asked for once more; a place stops after 2 pages in a row fail, and the run stops if 2GIS keeps refusing across places. Nothing is charged for refused calls, and reviews already delivered stay in your dataset. A run also stops cleanly before its timeout (one hour by default) and keeps everything delivered so far.

**Can I run it on a schedule?**
Yes. Save your input as a task, then add a schedule in Apify Console under Schedules, for example every Monday at 08:00. With `reviewsStartDate` set to `7 days`, a weekly schedule gives you each week's new reviews. Each scheduled run is billed like a manual one; the schedule itself costs nothing.

**Which formats can I export?**
JSON, CSV, Excel, XML, RSS or HTML from the run's Storage tab, or through the Apify API. In CSV and Excel, list fields such as `photo_urls` are split into numbered columns (`photo_urls/0`, `photo_urls/1` and so on).

**Can I use it from Claude, ChatGPT or another AI assistant?**
Yes. Connect Apify's MCP server at `https://mcp.apify.com/?tools=themineworks/2gis-reviews-scraper-api`, or paste the block in "Copy to your AI assistant" above into your assistant.

**Is it legal to scrape 2GIS reviews?**
The actor reads only public reviews that anyone can see without an account, keeps to what robots.txt allows (read fresh at the start of every run, and checked on every redirect), and collects nothing about reviewers beyond the display name shown next to the review. Review text can still contain personal data. You are responsible for how you store and use it, including 2GIS's terms and data protection law such as GDPR, CCPA, Russia's 152-FZ or Kazakhstan's personal data law. This is general information, not legal advice.

### Integrations

- **Google Sheets**: send each run's reviews to a sheet with Apify's Google Sheets integration.
- **Make, Zapier and n8n**: start a run and read the reviews with the official Apify modules and nodes, for example to post every new one star review to a team chat.
- **Webhooks**: have Apify call your URL when a run finishes, then fetch the dataset.
- **API**: start runs and read results over HTTP, or with the Python and JavaScript clients.
- **MCP clients**: Claude, ChatGPT, Cursor and other MCP clients can call the actor through `https://mcp.apify.com`.

### More from The Mine Works

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Semrush Scraper](https://apify.com/themineworks/semrush-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [App Review Monitor](https://apify.com/themineworks/app-reviews-monitor?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Business Search](https://apify.com/themineworks/trustpilot-business-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [TripAdvisor Reviews Scraper](https://apify.com/themineworks/tripadvisor-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Username Checker](https://apify.com/themineworks/username-checker?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Backlink Building Agent](https://apify.com/themineworks/backlink-building-agent?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [JustDial Scraper](https://apify.com/themineworks/justdial-business?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [data.gov.in Scraper](https://apify.com/themineworks/india-data-gov-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [World Bank Trade Scraper](https://apify.com/themineworks/global-trade-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [Tennis Match & Player Data Scraper](https://apify.com/themineworks/tennis-match-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Hotels Prices Scraper](https://apify.com/themineworks/google-hotels-prices-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a bug or need a field we do not return? Open an issue in the Issues tab. Want a review site or map we do not cover yet? Email dmineworks@gmail.com.

*2GIS Reviews Scraper turns any 2GIS place, or a search in any 2GIS city, into review rows with the place details attached, from $0.50 per 1,000 reviews.*

# Actor input Schema

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

One 2GIS place per line: a place link from any 2GIS site (https://2gis.ru/moscow/firm/4504127908731515, 2gis.kz, 2gis.ae, with or without /tab/reviews) or the place id (4504127908731515). Up to 500 per run; the same place twice is read once. Short links (go.2gis.com) cannot be used because that host's robots.txt disallows them; open one in a browser and paste the full link. Leave empty if you use the search below.

## `searchQuery` (type: `string`):

Optional. A search such as кофейня, автосервис or dentist. The actor finds places in the city below first, then reads their reviews. Works together with the list above.

## `city` (type: `string`):

Only used with a search. The city in English or the local language: Moscow or Москва, Almaty, Astana, Tashkent, Dubai and about 200 more. A 2GIS region id works too.

## `maxPlaces` (type: `integer`):

How many places the search may add, in 2GIS's own order.

## `maxReviewsPerPlace` (type: `integer`):

Most reviews to return for each place. 0 means every review 2GIS shows (up to 10,000).

## `sort` (type: `string`):

The order 2GIS returns reviews in.

## `reviewsStartDate` (type: `string`):

Optional. A date (2026-01-01) or a window (30 days, 6 months, 1 year). Reviews are then read newest first and reading stops at the first older review, so older reviews are neither returned nor charged.

## Actor input object example

```json
{
  "startUrls": [
    "https://2gis.ru/moscow/firm/4504127908731515"
  ],
  "city": "Москва",
  "maxPlaces": 10,
  "maxReviewsPerPlace": 50,
  "sort": "relevance"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

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

No description

# 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 = {
    "startUrls": [
        "https://2gis.ru/moscow/firm/4504127908731515"
    ],
    "maxReviewsPerPlace": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/2gis-reviews-scraper-api").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 = {
    "startUrls": ["https://2gis.ru/moscow/firm/4504127908731515"],
    "maxReviewsPerPlace": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/2gis-reviews-scraper-api").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://2gis.ru/moscow/firm/4504127908731515"
  ],
  "maxReviewsPerPlace": 50
}' |
apify call themineworks/2gis-reviews-scraper-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/2gis-reviews-scraper-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/IdjIVG4aTFUhLhKvU/builds/VAUUcO5qu879BIEnP/openapi.json
