2GIS Reviews Scraper: Ratings, Replies, New-Review Monitoring
Pricing
from $0.64 / 1,000 reviews
2GIS Reviews Scraper: Ratings, Replies, New-Review Monitoring
Scrape 2GIS reviews by place URL, id or a search in a city: rating, text, date, likes, photo URLs, business reply, source, place rating and review count. Newest first, only-new mode for scheduled monitoring, star and date filters, free per-place summary. No proxy setup needed. Pay per review.
Pricing
from $0.64 / 1,000 reviews
Rating
0.0
(0)
Developer
Amit Aviv
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Reviews of 2GIS places, newest first: star rating, text, date, likes, photos, the business's reply and the place's overall rating, for places you give as 2GIS links or ids, or that a 2GIS search finds in a city. It reads the same public reviews feed the 2GIS website uses, over plain HTTP (no browser): a 20-review run takes about 5 seconds, you pay only for reviews delivered, and a run that delivers nothing because of an error or a block ends as Failed, never as a green empty run.
What you get
- Per review: star rating (1-5), text, date written, date edited, likes, number of comments, number and URLs of photos attached, number of videos, and whether 2GIS marks the review as confirmed (and why, e.g. "3 посещения")
- The business's reply: whether there is one, its text and its date
- Where the review came from (
source: 2GIS itself, or a partner such as Т-Банк or Flamp that 2GIS shows), and 2GIS's own verified flag - The place: 2GIS id, name, address, city, main category, 2GIS URL, overall rating and review count, on every record
- Only new reviews for scheduled monitoring: each run delivers and charges only reviews it has not delivered before
- Filters that save money: star range (e.g. only 1-2 star reviews) and only reviews newer than a date (reading stops at the first older review)
- Free summary record per place (optional): rating, review count, count of each star rating, average, share of reviews the business answered, newest review date
- One record per review, as JSON, CSV or Excel, or through the API. A review is delivered and charged once per run.
- A run summary (
OUTPUT_SUMMARYin the run's key-value store): what was requested, delivered and charged, which inputs failed or were ignored, and why the run stopped.
What it does not return by default: reviewer names, avatars and profile data (personal data; see "Personal data"). Never: the comments under a review (only their number), the photos themselves (only their URLs), anything behind a login.
How to use
- Open a place on 2gis.ru (or 2gis.kz, 2gis.ae, …) and copy its address from the browser, e.g.
https://2gis.ru/moscow/firm/70000001032069222. Any tab works, and so does the bare id. - Paste it into 2GIS place URLs or ids. Several places are fine. Or type a search such as
стоматологияinto Search queries and set City. - Set Max reviews per place and press Start.
- Download the results from the Output tab, or read them from the API.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | list of text | none | 2GIS place addresses (…/firm/<id>, any tab, any 2GIS country site) or bare place ids (give ids as text: a JSON number of 17 digits is rounded and the actor ignores it with a message). A 2GIS search address (https://2gis.ru/moscow/search/кофейня) works too. Short go.2gis.com links are not resolved: open them and copy the full address. |
searchQueries | list of text | none | What you would type into 2GIS. Each search takes the first maxPlaces places 2GIS lists in city. |
city | text | moscow | City for the searches: its Russian name (Москва, Санкт-Петербург, Нижний Новгород, Алматы, …), a common English spelling (Moscow, Saint Petersburg, Yekaterinburg) or its slug from a 2GIS address (novosibirsk, ufa, …). A city 2GIS does not know fails the search with a message instead of returning nothing. Not used for place URLs. |
maxPlaces | number | 10 | Places per search, in 2GIS's order (12 per 2GIS page, advertisers included). |
maxReviewsPerPlace | number | 100 | Stop after this many reviews of each place, newest first. |
reviewsNewerThan | text | empty | Only reviews written after this date: 2026-09-01, 01.09.2026 (day first), or 30 days, 2 weeks, 3 months. |
minRating, maxRating | number | 1, 5 | Deliver only reviews in this star range. |
onlyNew | yes/no | no | Monitoring: deliver and charge only reviews earlier runs have not delivered. See "Monitoring". |
monitorKey | text | empty | Name of the monitor memory, to keep two schedules apart. |
includePlaceSummary | yes/no | no | Add one free summary record per place. |
includeReviewerNames | yes/no | no | Fill reviewer name, avatar and review count. Only with a lawful basis: see "Personal data". |
proxyConfiguration | proxy | off | Leave off. The actor goes direct and switches to Apify Proxy by itself when 2GIS drops its requests. |
Input of run zg7mpq6brz9VfaBei (negative reviews of dental clinics in Saint Petersburg over the last 180 days):
{"searchQueries": ["стоматология"],"city": "Санкт-Петербург","maxPlaces": 8,"maxRating": 2,"reviewsNewerThan": "180 days","maxReviewsPerPlace": 200,"includePlaceSummary": true}
It delivered 16 reviews of 1 or 2 stars from 8 clinics, and 8 free summary records, in 29 seconds.
Example result
A review, from run LqXNyaG7DzgbQee1C (build 0.1.12) on 2026-10-24, unedited ([name] is where the reply named the reviewer: see "Personal data"):
{"recordType": "review","reviewId": "272657662","placeId": "70000001113359188","placeName": "Здрасте, кофейня","placeAddress": "Крымская набережная, 10 ст2","placeCity": "Москва","placeCategory": "Кофейни","placeUrl": "https://2gis.ru/moscow/firm/70000001113359188","placeRating": 4.8,"placeReviewCount": 107,"rating": 5,"text": "Отличная кухня, милый интерьер, официанты вежливые, исполнение быстрое!","dateCreated": "2026-08-26T19:07:55.456573+07:00","dateEdited": null,"likesCount": 0,"commentsCount": 1,"photosCount": 1,"photoUrls": ["https://cachizer3.2gis.com/reviews-photos/f93e32a6-74cd-411d-acf5-fd7edb8e1d2f.jpg"],"videosCount": 0,"hasBusinessReply": true,"businessReplyText": "Добрый день, [name]!\nСпасибо вам за такие тёплые слова! Нам невероятно приятно читать ваши отзывы. Вся команда ежедневно старается для того, чтобы радовать вас.\nБудем счастливы видеть вас снова — за кофе, десертами и хорошим настроением.\nС любовью, команда Здрасте ☕🤍\nВажнее кофе только люди!","businessReplyDate": "2026-08-27T13:32:01.423441+07:00","source": "2gis","sourceName": "2GIS","submittedVia": null,"isVerified": false,"verifiedReason": null,"isHidden": false,"reviewerName": null,"reviewerAvatarUrl": null,"reviewerReviewsCount": null,"scrapedAt": "2026-10-24T11:26:31.357Z","searchQuery": null}
A place summary, from monitoring run PJxgJMVq36Oc7Vd5i on 2026-10-24 (it read one page of 50 reviews to find the 21 written since the previous run, so coversAllReviews is false):
{"recordType": "placeSummary","reviewId": "summary-70000001088189910","placeId": "70000001088189910","placeName": "BAL, кофейня","placeAddress": "микрорайон Коктем-1, 16","placeCity": "Алматы","placeCategory": "Кофейни","placeUrl": "https://2gis.kz/almaty/firm/70000001088189910","placeRating": 4.8,"placeReviewCount": 2449,"listedReviewCount": 2292,"reviewsRead": 50,"coversAllReviews": false,"reviewsDelivered": 21,"ratingDistribution": { "1": 2, "2": 0, "3": 1, "4": 6, "5": 41 },"unratedCount": 0,"averageRatingOfReviewsRead": 4.68,"replyRate": 0,"newestReviewDate": "2026-10-24T15:39:46.58936+07:00","oldestReviewReadDate": "2026-10-14T01:56:34.020962+07:00","scrapedAt": "2026-10-24T10:29:25.026Z","searchQuery": null}
| Field | Meaning |
|---|---|
recordType | review, or placeSummary for the free summary records. Filter on it if you turn summaries on. |
reviewId | 2GIS's own review id; stable between runs. |
placeId | 2GIS's place (branch) id, the number in …/firm/<id>. |
placeRating, placeReviewCount | The place's rating and review count as 2GIS states them, at the time of the run. |
rating | Stars, 1 to 5; null for a review without stars (2GIS shows Foursquare reviews on some places, e.g. in Dubai: source 4sq). |
dateCreated, dateEdited | When the review was written and last edited (ISO 8601 with the city's UTC offset). |
source, sourceName | Where the review was written: 2gis, or a partner whose reviews 2GIS shows (tbank = Т-Банк, flamp, booking, …). |
submittedVia | The channel 2GIS records for a 2GIS review, e.g. sbol (the Sber Online app), else null. |
likesCount | How many people liked the review (only the count, never who). |
photosCount, photoUrls, videosCount | Photos attached to the review and their full-size URLs on 2GIS's image server; videos are counted, not linked. |
isVerified, verifiedReason | 2GIS's "review confirmed" mark, and its reason as 2GIS words it (e.g. Сбер, 3 посещения). |
isHidden | 2GIS marks the review as hidden. |
searchQuery | The search that found the place, or null for a place given by URL or id. |
listedReviewCount (summary) | How many reviews 2GIS's feed lists for the place. It can be a little below placeReviewCount (e.g. 138 of 142), which also counts reviews the feed does not list. |
reviewsRead, coversAllReviews (summary) | How many reviews of the place the run read (inside the date window, before the star filter), and whether that was all of them. Distribution, average and reply rate are over those reviews; unratedCount counts the ones without stars (in the reply rate, not in the distribution). |
Fields 2GIS does not provide for a given review are null (or 0 / empty list for counts and photos), never missing.
Pricing
Pay per event. You pay for what is delivered, not for time or memory.
| Event | Free plan | Bronze | Silver | Gold and above |
|---|---|---|---|---|
| Actor start (once per run at the default 256 MB memory) | $0.003 | $0.003 | $0.003 | $0.003 |
| Review delivered | $0.00096 | $0.0008 | $0.00072 | $0.00064 |
| Place summary record | free | free | free | free |
Worked examples (Bronze): 1,000 reviews in one run = 1,000 × $0.0008 + $0.003 = $0.803. A daily monitoring run over 10 places that finds 3 new reviews = 3 × $0.0008 + $0.003 = $0.0054; a run that finds nothing new costs $0.003.
- Reviews that could not be delivered are not charged, and a review is charged once per run.
- The start event is charged by Apify on every run, also one that fails or delivers nothing.
- The maximum total charge you set for a run is respected: the actor stops before it would go over, keeps what was delivered, and says so (run
Wbd3BcgJtmFnTTVoZ: limit $0.01 = start + 8.75 reviews, delivered exactly 8, Succeeded).
Reliability and failure behaviour
| What happened | Run status | Status message |
|---|---|---|
| Reviews delivered | Succeeded | Scraped 600 reviews from 15 places |
| A search found no places / a place has no reviews | Succeeded | 0 results: 2GIS has no reviews for this input — search "qwzxqwzxqwzx" in moscow found no places |
A city 2GIS does not know (e.g. moskow) | Failed | No reviews delivered: "moskow" is not a 2GIS city: use the city's name in Russian (e.g. Москва) or its slug from a 2GIS address … (run hA0P7Dvg1nRxnQFq5) |
| A place id that does not exist (typo) | Failed | No reviews delivered: place 70000001032069224 does not exist on 2GIS (its page answers HTTP 410): check the id. … |
| Some places worked, some failed | Succeeded | Scraped … reviews from … places — 1 of 8 places failed ("…": …) |
| Some input entries unusable | Succeeded | Scraped 5 reviews from 1 place — 1 input entry ignored (see OUTPUT_SUMMARY) |
| Nothing delivered because of errors or blocking | Failed | No reviews delivered: 2GIS blocked every attempt; try again later. No reviews were charged (the start fee applies). (offline simulation; not met live) |
| Input the actor cannot use | Failed, in about 2 s | Nothing to do: none of the 1 entries is usable (…: not a 2GIS URL or firm id). Add a 2GIS place URL to "startUrls" … |
| Maximum charge reached | Succeeded | Scraped 8 reviews from 1 place — stopped at the maximum charge set for this run |
| Run timeout close | Succeeded | Scraped 100 reviews from 1 place — stopped just before the run timeout; raise the timeout to get the rest (run KuEmcCpHvJeE6NDqH, 25-second timeout) |
| Maximum charge below the price of one review | Failed | The maximum charge set for this run ($0.0035) is below the price of one review, so nothing can be delivered: … |
- 2GIS's reviews feed sometimes stops answering in the middle of a request. The actor gives each request 10 seconds, retries up to 5 times with increasing pauses, and after the first such failure continues through Apify Proxy (datacenter, then residential if requests keep failing). No proxy setting is needed.
- Results are saved page by page (50 reviews). A run that is aborted, times out or is resurrected keeps what was delivered and never delivers or charges the same review twice (run
C9Zqm1uxBq02ksUIK, resurrected mid-run: 600 reviews, 600 unique, 600 charged; Apify charges the start event again on a resurrect). - Measured over all 69 test runs (2026-10-20 to 2026-10-24): in every run the reviews charged equalled the reviews delivered. The 11 runs on the current code (builds 0.1.12 and 0.1.13) all ended with the expected status. Stalled requests are common (about half of the runs on builds 0.1.8 to 0.1.12 met at least one) and runs finish anyway: some retry direct, others switch to the proxy (e.g.
56DyJ6K3NZn8qcHpN, 232 reviews over 5 pages, 3 stalls, Succeeded).
Limits
- Speed: 1,500 reviews of one place in 61 seconds direct (
K3BEJjT95BEvaTO0D), 170 seconds in a run that had switched to the proxy (Kk2EjT2Lj5ZOHxfr7); 600 reviews of 15 places found by a search in 69 seconds (lAl52RayDVvI49zkB). - Search takes the places 2GIS lists, in its order, advertisers included; it reads 12 places per 2GIS page. For a complete list of businesses use a places scraper (see "Related actors") and give their ids here.
- 2GIS's own review count can be higher than what its feed lists (see
listedReviewCount). - Review and reply texts are in the language they were written in (mostly Russian).
- Place name, address and category come from the place's 2GIS page; if that page cannot be read, the reviews are still delivered with those fields empty (
placeDetailsFound: falsein the run summary). - Tested on 2gis.ru (Moscow, Saint Petersburg), 2gis.kz (Almaty) and 2gis.ae (Dubai). Other 2GIS country sites use the same addresses and the same feed but were not tested. The request locale is Russian; texts are not translated.
Monitoring: only new reviews
- Turn on Only new reviews and save the input as a task.
- Schedule the task (daily or hourly).
- The first run delivers the newest reviews of each place, up to Max reviews per place. Every later run reads each place from the newest review down to the first one it already delivered, and delivers and charges only what is new; a run with nothing new ends as Succeeded with
0 new reviews in 2 monitored places (no reviews charged; the start fee applies).
Tested: run VkeVrcK7jA6F2KOpl (2026-10-20) delivered 60 reviews of two places (Moscow and Almaty), and run btS7IHThMhnmR3kbi with the same input right after delivered 0 and charged only the start event. Four days later run PJxgJMVq36Oc7Vd5i delivered 23 new reviews (21 and 2). A normal run of the same places right after it (J1dxSUNzEtSbxGgiH) confirmed that these were exactly the reviews written since the first run, none missed or repeated.
The memory is a key-value store named 2gis-reviews-scraper-monitor in your own account (one record per place and monitor name, at most 10,000 review ids each, oldest forgotten first). Delete the store or change Monitor name to start over. A place is remembered by its id, so it is the same monitor whether it came from a URL or from a search. Combine with Maximum star rating 2 to be told only about new negative reviews. To be notified, add an integration to the task (email, Slack, webhook) on "run succeeded".
Personal data
Reviews are written by private individuals. By default the actor leaves out who wrote them: reviewerName, reviewerAvatarUrl and reviewerReviewsCount are null. Business replies are kept, but where a reply names the reviewer or an employee, the actor replaces the name with [name] ("лечение у [name] прошло успешно", "передадим [name] Ваши слова", "отзыв о [name]"). It looks for the name 2GIS shows for the reviewer (in Cyrillic or Latin spelling, with Russian case endings), the words after a greeting, a name with a patronymic, a name after a job title (also the Kazakh дәрігер), common Russian and Kazakh first names in any case form, and colleagues listed next to a name already taken out. This is pattern-based and tuned on Russian-language replies: a reply in another language, an unusual first name or a nickname (Джейден, Саша for Александр) that is not next to a title or a greeting, or a surname standing alone can keep a staff name. On 1,024 real replies (Moscow, Saint Petersburg and Almaty: clinics, cafés, bakeries) the one staff name we still found was an unusual first name ("о Джейдене"); that check read the capitalised words inside sentences, so a name opening a sentence was not counted. A business named after a person (кафе Анна without quotes) can lose its name in a reply, and ordinary words are sometimes replaced. Review texts are delivered as written and often name staff.
Turn on Include reviewer names and avatars (which also returns the replies exactly as written) only if you have a lawful basis to process that data (for example under the GDPR or Russian Federal Law 152-FZ) and a purpose that needs it. By turning it on you confirm that you do.
FAQ
Do I need a proxy? No. Runs go direct and switch to Apify Proxy by themselves when 2GIS drops requests.
Why fewer reviews than 2GIS shows? maxReviewsPerPlace, the date window and the star filter all cut; and the feed lists only reviews with a star rating (listedReviewCount in the summary).
Can I run it from code? Yes: the API, the Apify clients for JavaScript and Python, Make, Zapier, n8n. The Output tab shows the URLs.
What happens when 2GIS changes? Runs fail loudly instead of returning empty data; report the run id under Issues.
Legal and responsible use
This actor reads reviews that 2GIS shows publicly, without a login, to any visitor of its website, through the same public feed and the same public access key the 2GIS website itself uses for every anonymous visitor. Reviewer identities are left out by default (see "Personal data"). We have not assessed 2GIS's terms of use for your use case: read them before you build on this data.
You are responsible for how you use the data: respect 2GIS's terms, copyright and database rights, and data-protection law (GDPR, Russian Federal Law 152-FZ and others) in your country and the country of the data. Do not use the output to contact or profile reviewers. If you are unsure, ask a lawyer before you build on it.
Related actors
Other actors by the same developer:
- 2GIS Places Scraper: the businesses themselves for a search in a city, with their contact details; feed its place ids into this actor for their reviews.
- Yandex Maps Scraper: business listings from Yandex Maps for a search and an area, with phones, websites, hours, rating and review counts, for the other big map of Russia, the CIS and Türkiye.
- Yandex Maps Reviews Scraper: reviews of Yandex Maps places (rating, text, date, likes, photos, the business's reply), by place URL or a search in a city; use both to follow a business on both maps.
Changelog
- 2026-10-24 0.1.15: stronger staff-name redaction in replies: common first names in any case form (о Карине), Kazakh-language replies (Карина дәрігер), colleagues listed together, a name after "в адрес".
- 2026-10-24 0.1.12: photo URLs filled again (lost with the newer feed in 0.1.8), videos counted apart (
videosCount), most employees' names taken out of replies by default (pattern-based), a misspelt city fails with a message, English city spellings, stricter date check. - 2026-10-20 0.1.10: likes and "review confirmed" marks (2GIS's newer feed), reviews without stars (Foursquare, Dubai), clear failure for a place id that does not exist, day-first dates (01.09.2026), stronger reply-name redaction.
- 2026-10-20 0.1: first version.
Support
Open an issue on the actor's Issues tab with the run id.