2GIS Reviews Scraper - Ratings, Text & Owner Replies
Pricing
from $0.49 / 1,000 reviews
2GIS Reviews Scraper - Ratings, Text & Owner Replies
2GIS reviews scraper for any place, from place links or a search and a city. Each row has the star rating, full text, author, dates, photos and the owner's reply, plus the place's name, address, coordinates and overall rating. $0.50 per 1,000 reviews.
Pricing
from $0.49 / 1,000 reviews
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
63
Total users
24
Monthly active users
6 hours ago
Last modified
Categories
Share
2GIS reviews scraper for any place, one row per review: the star rating, the full text as the author wrote it, who wrote it, when, any photos they attached and the business owner's reply. Every row also carries the place it belongs to, down to the address and coordinates.
The one thing to know before you set a big number: 2GIS serves every review a place has ever collected, so a busy chain branch can run to thousands. Set the per-place cap first and the total cap second.
| Input | 2GIS place URLs, place ids, or a search term plus a city |
| Output | One row per review: rating, text, author, dates, likes, photos, owner's reply, plus the place's name, address, coordinates and rating |
| Ceiling | 20,000 reviews per place, around 5,000 in a single run |
| Speed | Small jobs take seconds: 5 places at 5 reviews each finished in 7 to 9 seconds |
| Account needed | None |
| Price | $0.50 per 1,000 reviews on the free plan, down to $0.485 on Business. The free plan's $5 a month covers about 10,000 |
| Using an AI agent? | |
|---|---|
| Actor | dami_studio/2gis-reviews-scraper |
| Set one field | startUrls, labelled "2GIS place URLs" in the Console |
| Cap the bill | maxTotalChargeUsd on the run, for example 0.10: it never charges past that |
| MCP, one link | https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/2gis-reviews-scraper |
| How often | Weekly, or daily for a place you watch |
🔍 What 2GIS Reviews Scraper does
Two ways to name the places, and they work together in one run.
URLs and ids. Paste a place page, the reviews tab of a place, or just the bare numeric place id. A 2GIS search page works too, and every place that search finds gets scraped.
Search terms. Give it a term and a city instead, and it finds the places first, then reads the
reviews on each one. maxPlaces is what stops that from running away.
Reviews come back newest first by default. 2GIS has no rating sort of its own, so if you only want
the angry ones, pull them in date order and filter on rating afterwards, or use Minimum rating
to keep only the stars you care about.
📋 What data you get from each 2GIS review
| What you get | Field |
|---|---|
| The stars, the text exactly as written, and its length | rating, text, textLength |
| Who wrote it and how many reviews they have written | authorName, authorId, authorPublicId, authorReviewCount, authorIsVerified |
| When it was written and last edited | dateCreated, dateEdited |
| Likes, comments and photos on the review | likesCount, commentsCount, photoCount, photoUrls |
| The owner's reply, its date and who signed it | officialAnswerText, officialAnswerDate, officialAnswerBy |
| The place: name, category, address, city, country | placeId, placeName, placeCategory, placeAddress, placeCity, placeCountry |
| Where the place is | placeLatitude, placeLongitude |
| The place's own score and review total | placeRating, placeReviewCount |
| Links, position, the search that found it, and when it was read | placeUrl, reviewUrl, position, searchQuery, scrapedAt |
▶️ How to scrape 2GIS reviews
- Open 2GIS Reviews Scraper and click Try for free.
- Paste your place links into 2GIS place URLs, one per line.
- Set Maximum reviews per place, then Maximum reviews in total as your spend cap.
- Click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Run it with everything empty and you get one labelled sample row, which is not charged.
💰 How much does it cost to scrape 2GIS reviews?
$0.50 per 1,000 reviews. That is the free plan's price; paid plans pay a little less: $0.495 on Starter, $0.49 on Scale and $0.485 on Business. On the free plan, the $5 Apify gives you each month covers about 10,000 reviews.
One row is one review. The sample row, every diagnostic row and every review that Minimum rating or Only reviews with text dropped are not charged. A place with no reviews produces no rows to charge for.
Only reviews with photos is the exception, because it is a paid option. 2GIS has no photo filter, so every review the run reads has to be looked at: each one without a photo is left out and billed as a checked review, at the rate on the Pricing tab, and each one you keep is billed as a review. Photo reviews are rare, so a run with it on reads far more than it returns.
📥 What you give it
{"startUrls": ["https://2gis.ru/moscow/firm/70000001044357973"],"maxReviewsPerPlace": 200,"maxItems": 500,"onlyWithText": true}
| Field | Default | What it is |
|---|---|---|
startUrls | box holds one Moscow place | Place pages, reviews tabs, bare place ids, or 2GIS search pages. |
searchQueries | empty | Find places by term instead of pasting URLs. Needs city. Local-language terms return more. |
city | empty | Moscow, Москва, Almaty, Dubai, or a numeric 2GIS city id. Only used by the search terms. |
maxReviewsPerPlace | 100 | How deep to go on one place. This is what keeps a 5,000-review chain branch from eating the run. |
maxItems | 500 | Hard cap across every place. You are charged per review returned, so this is your spend cap. |
maxPlaces | 10 | How many places to take in total. Pasted URLs count towards it. |
sortBy | date_created | date_created, date_edited, trust or friends. 2GIS offers no rating order. friends needs someone signed in to 2GIS, so here it comes back in exactly the date_edited order. |
minRating | 0 | Keep reviews of this many stars or more. 1 drops the ones with text but no stars. |
onlyWithText | false | Skip star-only reviews with nothing written. |
onlyWithPhotos | false | Paid option. Keep only reviews with at least one photo. 2GIS cannot filter on photos itself, so the run reads the reviews and leaves out the ones without a photo, and each review it checks and leaves out is billed as a checked review (see the Pricing tab). With it on, maxReviewsPerPlace is how many reviews are read on each place and maxItems how many photo reviews come back. |
locale | Automatic | Language for place names and categories, where 2GIS has it: Kazakh changes an Almaty place, English leaves Moscow and Almaty places in Russian. Review text is never translated. |
proxyConfiguration | leave it alone | Optional. Only fill this in if you want the run to go out through your own servers. |
📤 What you get back

A real review row from a run in September 2026, with the reviewer's name and ids replaced by dots. The owner's reply ended with an emoji, cut short here:
{"reviewId": "294305879","rating": 5,"text": "Отличная пиццерия, посидела с парнем все понравилось, было очень вкусно, приятная атмосфера, самая вкусная пицца в городе, вежливый персонал, буду приходить еще","textLength": 160,"authorName": "...","authorId": "...","authorPublicId": "...","authorReviewCount": 1,"authorIsVerified": false,"dateCreated": "2026-09-05T09:58:14.612353+07:00","dateEdited": null,"likesCount": 0,"commentsCount": 1,"photoCount": 0,"photoUrls": [],"officialAnswerText": "Спасибо! Круто знать, что вы довольны. Постараемся и дальше только радовать ...","officialAnswerDate": "2026-09-05T11:20:32.795509+07:00","officialAnswerBy": "Додо Пицца, сеть пиццерий","source": "2gis","placeId": "70000001044357973","placeName": "Додо Пицца, сеть пиццерий","placeCategory": "Пиццерии","placeAddress": "Москва, Театральный проезд, 5","placeCity": "Москва","placeCountry": "Россия","placeLatitude": 55.759891,"placeLongitude": 37.625011,"placeRating": 4.9,"placeReviewCount": 296,"placeUrl": "https://2gis.ru/moscow/firm/70000001044357973","reviewUrl": "https://2gis.ru/moscow/firm/70000001044357973/tab/reviews","position": 1,"scrapedAt": "2026-09-14T05:41:47.687Z"}
| Field | How to read it |
|---|---|
text, textLength | Exactly what the author typed, in their own language. Nothing is translated. |
rating | Stars, 1 to 5. A review can carry text and no stars, in which case this is 0. |
authorName, authorReviewCount | The display name 2GIS shows, and how many reviews that person has written. |
officialAnswerText, officialAnswerBy | The business owner's public reply, and who signed it. null when they never answered. |
photoUrls, photoCount | Links to the photos on the review. The files themselves stay on 2GIS. |
placeRating, placeReviewCount | The place's own score and total, repeated on every row so one row tells the whole story. |
reviewUrl | The place's reviews tab. 2GIS publishes no per-review permalink. |
position | Where the review sat in the order you asked for. |
searchQuery | Only on rows from a search: the term that found the place. |
🧾 Reading the output
Three kinds of row can land in your dataset.
| Row | How to spot it | Charged |
|---|---|---|
| A review | It has a reviewId and a rating | yes |
| The sample row | _sample: true, written only when the input was empty | no |
| A diagnostic | It carries an errorCode | no |
Rows with a reviewId and no _sample flag are your reviews.
| Code | What it means |
|---|---|
NO_REVIEWS | That place has no reviews, or none of them passed your filters. With Only reviews with photos on, checked says how many were read without finding a photo. |
OPTION_NOT_LIVE | Only reviews with photos wasn't available on that run, so nothing was read and no rows were charged. Run it again, or run it without that option. |
CITY_NOT_FOUND | 2GIS could not place that city, and the run stops there. |
BAD_URL | That entry is not a 2GIS address or a place id. |
NO_PLACES | The search found nothing to read reviews from. |
NOT_FOUND | That place id does not exist on 2GIS any more. |
API_ERROR, BAD_REQUEST, BAD_RESPONSE | 2GIS answered, but not with the reviews it normally carries. |
NETWORK | That place could not be read on this run. Worth one re-run. |
NOT_SERVED | This review was not served this run. Re-run it later. Runs before 13 October 2026 wrote BLOCKED or KEY_REJECTED here. |
TIME_LIMIT | The run got close to its time limit and stopped on its own. The reviews delivered before that are complete and charged. Give the run more time, or ask for fewer reviews, to get the rest. |
UNEXPECTED_ERROR | The run stopped early on an unexpected error. The results before this row are kept. |
A diagnostic never fails the run, TIME_LIMIT included: a run the time limit stopped before any review came back still ends as succeeded, with an amber status message.
💡 What people use it for
- Reading what customers say about a competing branch before opening nearby.
- Tracking a chain's rating across every branch in a city week by week, deduping on
reviewIdso each run only adds what is new. - Pulling one-star and two-star reviews to find the complaint that keeps repeating.
- Checking which branches answer their reviews and which ignore them, through
officialAnswerText.
Which delivery places in a city leave their reviews unanswered, in three steps:
- Run 2GIS Places Scraper with your
searchQueries, acityanddeliveryticked, and copy theurlcolumn. - Paste those links into 2GIS place URLs here, raise
maxPlacesto the length of the list and switch ononlyWithText. - Keep the rows where
officialAnswerTextisnull, and count them byplaceName.
🚧 What it does not do
- No rating sort. 2GIS orders by date or by its own trust score, nothing else. Minimum rating filters after the fact, it does not reorder.
- The per-place cap counts what it reads, not what it keeps. With Minimum rating, Only
reviews with text or Only reviews with photos switched on, a place can return fewer rows than
you asked for even though more matching reviews exist further down. Raise
maxReviewsPerPlacewhen you filter hard. - Around 5,000 reviews in one run. The box will accept 100,000, but rows pile up in memory and a long run slows down badly. Split a big job across several runs.
- Paste more places than
maxPlacesand the extras are dropped quietly, with no row to tell you. Raise the cap to match your list. - A bad
citystops everything, including any place URLs you pasted in the same run, whenever search terms are in the input too. - A page that fails ends that place. The reviews already read stay in your dataset and are charged, the rest of that place is skipped, and a diagnostic row says so. Re-run just that one.
- Photo links, not photo files.
photoUrlspoints at 2GIS; nothing is downloaded. - Display names only. No reviewer emails, no phone numbers. 2GIS does not publish them.
- It is not an official 2GIS tool. Dami's Studio is independent and is not affiliated with or endorsed by 2GIS, or by any other company named on this page.
🧭 Which 2GIS or maps scraper do you need?
| If you want | Use |
|---|---|
| Reviews written about a 2GIS place | This one |
| The 2GIS business listings themselves, with phone, email and opening hours | 2GIS Places Scraper |
| Businesses from Yandex Maps, with phones, hours and coordinates | Yandex Maps Scraper |
| The same job on Yandex Maps | Yandex Maps Reviews Scraper |
| The same job on Google Maps | Google Maps Reviews Scraper |
❓ Questions people ask
Do I need a 2GIS account?
No. There is nothing to sign up for: these are the public reviews anyone can read on 2GIS without signing in.
Which countries does 2GIS have reviews for?
The ones 2GIS maps: Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, Azerbaijan, Belarus, Georgia, Armenia, Tajikistan, Cyprus and the UAE.
Can I get only the bad reviews from 2GIS?
Not directly from 2GIS. Pull them in date order and filter on rating in your own tool, which also
lets you keep the text you already paid for.
Is the review text translated?
Never. It comes back in whatever language the author used, and locale only affects place names and
categories.
Can I call it from code or connect it to an AI assistant?
The API tab has code for Python, JavaScript and the
CLI. MCP clients like Claude and ChatGPT use
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/2gis-reviews-scraper; coding assistants can load our
skill file.
All three bill your Apify account at the same price.
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("dami_studio/2gis-reviews-scraper").call(run_input={"startUrls": ["https://2gis.ru/moscow/firm/70000001044357973"],"maxItems": 50,},max_total_charge_usd=0.10, # the most this run may spend)for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("ok") is False: # free note rows, not resultscontinueprint(row.get("rating"), (row.get("text") or "")[:80])
Is it legal to scrape 2GIS reviews?
These are public reviews on public business pages. Each row carries the author's display name and 2GIS ids, which is personal data under GDPR and similar laws, so have a reason for collecting it. 2GIS's own terms still apply to what you do with it. Apify's write-up on the legality of web scraping is a good place to start, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the place URL and the run ID. The errorCode on the
diagnostic row usually names the problem on its own.