2GIS Scraper: Places, Contacts & Reviews (privacy-safe) avatar

2GIS Scraper: Places, Contacts & Reviews (privacy-safe)

Pricing

from $1.50 / 1,000 places

Go to Apify Store
2GIS Scraper: Places, Contacts & Reviews (privacy-safe)

2GIS Scraper: Places, Contacts & Reviews (privacy-safe)

Unofficial 2GIS scraper, no login. Search places in any 2GIS city (Russia, Kazakhstan, UAE, Kyrgyzstan, Uzbekistan) past the 60-result limit, or paste place URLs. Address, coordinates, phones, website, socials, hours, rating and reviews with owner replies. No reviewer names.

Pricing

from $1.50 / 1,000 places

Rating

0.0

(0)

Developer

Kyungmin Lee

Kyungmin Lee

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does 2GIS Scraper: Places, Contacts & Reviews do?

2GIS Scraper: Places, Contacts & Reviews collects public business listings, business contacts and reviews from 2GIS (2ГИС), the leading city directory and map in Russia, Kazakhstan, Kyrgyzstan, Uzbekistan, the UAE and other countries, without a 2GIS account, API key or browser. It is an unofficial tool and is not affiliated with, endorsed by or sponsored by 2GIS.

In one run you can:

  • Search places by query — e.g. кофейня, стоматология, автосервис, cafe — in any 2GIS city: Moscow, Saint Petersburg, Novosibirsk, Kazan, Yekaterinburg and 1,100+ other Russian towns, Almaty, Astana, Bishkek, Tashkent, Dubai, Sharjah, Yerevan and more.
  • Go past the 60-result limit. The 2GIS website stops every search at 60 places. This Actor automatically splits the city (or your bounding box) into map tiles and searches each tile, so one query can return thousands of places, each saved only once.
  • Look up specific places by 2GIS URL (2gis.ru/moscow/firm/…, 2gis.kz, 2gis.ae, with or without a language prefix) or numeric place ID.
  • Get the place data: name, categories, address, postcode, building, district, coordinates, rating, review and rating counts, brand and number of branches, opening hours (text and structured), attributes such as average bill, Wi-Fi or payment methods, photo count and promoted flag.
  • Add the contacts the business published on 2GIS: phones (with notes like "delivery"), e-mails, websites (2GIS click-tracking removed) and social/messenger links (VK, Telegram, WhatsApp, Instagram, OK...).
  • Collect reviews with star rating, text, dates, likes, photo count and the business owner's reply, in relevance or newest-first order, with star and date filters.
  • Choose the language where the country site offers it: Kazakh on 2gis.kz, Arabic on 2gis.ae, Kyrgyz on 2gis.kg, Uzbek on 2gis.uz.

Privacy by design: reviewer names, user IDs, public profile IDs, avatars, profile links and "who reacted" lists are never collected. When an owner's reply (or the review itself) contains the reviewer's own name, it is replaced with [name], and e-mail addresses and phone numbers inside review texts and replies are masked. Many other 2GIS scrapers export reviewer identities; this one does not.

Why use this 2GIS scraper?

  • Lead generation — every dentist, café or car service in a city with phones, e-mails, websites, messengers, hours and coordinates.
  • Market research and geo-analytics — complete category coverage per city or per map rectangle thanks to the tile split, with districts and coordinates for mapping.
  • Reputation monitoring — schedule a run for your own branches with reviewSort: newest and reviewsSince to get only new reviews and see which ones still lack a reply.
  • Competitor analysis — compare ratings, review counts and brand-wide ratings across chains and cities.
  • Safer data handling — no personal data about reviewers to store, secure or delete.

Places and reviews come from one Actor and one dataset. For Yandex Maps data, see the sister Actor Yandex Maps Scraper: Places & Reviews.

How to scrape 2GIS places, contacts and reviews

  1. Enter one or more Search queries and a City (slug such as moscow, spb, almaty, dubai, or a name such as Москва). You can also (or instead) paste Place URLs or IDs.
  2. Set Max places per query: up to 60 come in 2GIS's own ranking; above 60 the city is split into map tiles. Optionally restrict the search to a Bounding box.
  3. Keep Include business contacts on to get phones, e-mails, websites and social links (one extra request per place).
  4. Set Max reviews per place (0 = none) and the Review order; optionally add star filters or a "published on or after" date.
  5. Click Start and download the results as JSON, CSV, Excel or via the API.

How the 60-result limit is handled: the 2GIS website returns at most 5 pages × 12 places per search. The Actor first saves 2GIS's top 60 for the query, then searches the city's map area tile by tile with the website's own "search in this area" filter, starting at the city centre and moving outwards. Any tile that still has more than 60 matches is split into four smaller tiles (one zoom level closer) until every tile fits; tiles outside the city area are skipped. Places are de-duplicated by their 2GIS ID, so overlapping tiles never produce or charge duplicates. In a single building with more than 60 matches (a big mall) the Actor also reads the tile in alphabetical and rating order. In tests, "стоматология" in Kazan returned 586 places (2GIS shows 579 for the city search) and 1,500 places in Saint Petersburg in under 5 minutes.

The Actor reads the same public pages an anonymous visitor's browser loads. It does not log in, never solves captchas and only uses paths allowed by 2GIS's robots.txt. It runs two request streams, each sending about one request every 0.8–1.5 seconds with random jitter, and backs off when 2GIS refuses or delays requests. Review pages beyond the first 50 per place (and the newest-first order) come from 2GIS's reviews service, which the Actor calls at most about once every 3–5 seconds per run. Anything that fails after retries is logged and never charged.

Speed: about 12 places per search request, roughly 300 places per minute without contacts. With contacts or reviews the Actor opens each place's page (which also carries its first 50 reviews): roughly 50–80 places per minute.

Input

FieldDescription
searchQueriesQueries as typed into 2GIS. Local-language terms are the most complete.
city2GIS city slug (moscow, spb, kazan, almaty, astana, bishkek, tashkent, dubai…), a Russian/English city name, or a 2GIS city URL. Required for searches.
maxPlacesPerQuery1–20,000 places per query (default 50). Above 60 the city is split into map tiles.
placeUrls2GIS place URLs or numeric place IDs.
boundingBoxlat,lon,lat,lon of two opposite corners inside the city; places outside are skipped and not charged.
includeContactsAdd the business's phones, e-mails, websites and social links (default on).
maxReviewsPerPlace0–10,000 reviews per place (default 0).
reviewSortrelevance (2GIS default) or newest.
minReviewRating, maxReviewRatingKeep only reviews with these stars (1–5).
reviewsSinceKeep only reviews written or edited on or after this date.
includeReviewPhotoUrlsAdd URLs of review photos (off by default).
languageauto (site default) or ru, en, kk, ky, uz, ar, az, hy, ka, tg, mn where the country site offers it.
proxyConfigurationApify Proxy settings (off by default; 2GIS answers Apify's own IPs directly and faster).

Example — all dentists in Kazan with contacts and the 20 newest reviews each:

{
"searchQueries": ["стоматология"],
"city": "kazan",
"maxPlacesPerQuery": 2000,
"includeContacts": true,
"maxReviewsPerPlace": 20,
"reviewSort": "newest"
}

Output

All results go to one dataset. Every item has a type:

  • place — one item per place, with the query that found it, foundBy (search = 2GIS ranking, with searchRank; mapTile = found by the tile split; placeUrl = your input) and the inputUrl you entered. A place found by several queries or tiles is saved and charged only once per run.
  • review — one item per review, linked to its place by placeId, placeName and placeUrl. Reviews follow their place item.

Use the Places and Reviews views in the Output tab, or filter on type. A SUMMARY record in the key-value store lists counts per query, map tiles searched and split, failed inputs, skipped duplicates and request statistics.

Place example (shortened):

{
"type": "place", "query": "кофейня", "searchRank": 2, "foundBy": "search",
"placeId": "70000001007179642", "name": "Му-Му", "fullName": "Му-Му, кафе",
"primaryCategory": "Кафе", "categories": ["Кафе", "Доставка еды", "Быстрое питание"],
"address": "Манежная площадь, 1 ст2", "postcode": "125009", "buildingName": "Охотный ряд",
"city": "Москва", "district": "Тверской", "latitude": 55.755301, "longitude": 37.614586,
"rating": 4.8, "reviewCount": 1108, "ratingCount": 2090, "brandName": "Му-Му", "branchCount": 18,
"workingHours": "Mon-Sun 08:00-23:00",
"openingHours": {"Mon": ["08:00-23:00"], "Sun": ["08:00-23:00"]},
"attributes": ["Чек 450 ₽", "Бизнес-ланч", "Бесплатный Wi-Fi", "Оплата картой"],
"phones": [{"number": "+74957818781", "display": "+7 (495) 781-87-81", "comment": "служба доставки", "type": "phone"}],
"emails": ["dostavka@cafemumu.ru"], "websites": ["http://cafemumu.ru"],
"socialLinks": [{"type": "vkontakte", "url": "https://vk.com/cafemumu"}, {"type": "telegram", "url": "https://t.me/mumuchatbot"}],
"contactsLoaded": true, "url": "https://2gis.ru/moscow/firm/70000001007179642"
}

Review example (shortened):

{
"type": "review", "placeId": "70000001007179642", "placeName": "Му-Му",
"reviewId": "302554446", "rating": 5, "text": "В восторге",
"dateCreated": "2026-10-05T17:34:59Z", "likesCount": 0, "photoCount": 0, "provider": "2gis",
"ownerReply": "Здравствуйте! Большое спасибо, что нашли время поделиться впечатлениями…",
"ownerReplyDate": "2026-10-06T09:35:08Z", "reviewSort": "relevance"
}

Data fields

Place: query, searchRank, foundBy, placeId, name, fullName, nameExtension, url, primaryCategory, categories, address, addressComment, postcode, buildingName, country, region, city, district, latitude, longitude, rating, reviewCount, ratingCount, brandRating, brandReviewCount, brandId, brandName, branchCount, workingHours, openingHours (Monday first, 24-hour HH:MM-HH:MM, empty list = closed), timezoneOffsetMin, attributes, photoCount, isPromoted (paid placement), updatedAt (last 2GIS update), citySlug, host, inputUrl, language, phones, emails, websites, socialLinks, contactsLoaded, scrapedAt. Contact fields are null when contacts are switched off or the place page could not be loaded.

Review: placeId, placeName, placeUrl, reviewId, rating (1–5), text, dateCreated, dateEdited (UTC), likesCount, commentsCount, photoCount, provider (2gis or flamp), isRated (counted in the place rating), ownerReply, ownerReplyDate, photoUrls (optional), reviewSort, scrapedAt.

Not collected: reviewer name, user or public ID, avatar, profile link, review counts of the user, reactions with user names.

Pricing

This Actor uses pay per event — you pay only for items that were saved:

EventProposed priceWhat it covers
place$1.50 per 1,000 places ($0.0015 each)One place item without contacts (contacts off, or the business lists none)
place-with-contacts$2.50 per 1,000 places ($0.0025 each)One place item with at least one phone, e-mail, website or social link — charged instead of place
review$0.40 per 1,000 reviews ($0.0004 each)One review item

The prices shown on the Actor's Store page are the ones that apply. There is no start fee. Failed searches, unknown places, refused requests, duplicates, places outside your bounding box and reviews removed by your filters are never charged. The run's maximum charge is checked before every item, so the Actor stops cleanly when your limit is reached.

Example: 1,000 cafés with contacts and 10 reviews each = 1,000 × $0.0025 + 10,000 × $0.0004 = $6.50.

Tips

  • Complete coverage: set maxPlacesPerQuery well above the number 2GIS reports in the log (e.g. 5,000) — the tile split stops by itself when every tile has been read. A 2GIS "city" often covers its whole surrounding region (Moscow includes nearby Moscow Oblast towns, Almaty includes towns of Almaty Region). The Actor works from the centre outwards, so smaller limits stay in the city itself; use boundingBox to stay inside an exact area, or filter on city/district.
  • Cheaper lists: switch includeContacts off when you only need names, addresses, ratings and coordinates — it halves the requests and uses the lower place price.
  • New reviews only: schedule the Actor with your place URLs, reviewSort: newest and reviewsSince set to the last run date. With "newest" the Actor stops reading as soon as it reaches older reviews.
  • Complaints only: maxReviewRating: 2.
  • Several cities: run once per city (or use Apify tasks), since 2GIS searches always run inside one city.
  • Many reviews per place, or newest-first for many places: these need 2GIS's reviews service, which the Actor calls slowly on purpose (about one call of 50 reviews every 3–5 seconds, i.e. roughly 600–1,000 reviews per minute). The first 50 reviews of each place in relevance order need no extra calls. If the service keeps timing out, the Actor stops asking it for the rest of the run and lists the affected places in SUMMARY.failedReviewPlaces (nothing is charged for them); try again later or with Apify Proxy, which spreads the calls over several IPs.
  • Refused requests: if the log shows repeated refusals (HTTP 403/429) or timeouts, switch on Apify Proxy in the input.

FAQ

Is this an official 2GIS API? No. It is an unofficial scraper of publicly visible 2GIS data and is not affiliated with 2GIS. 2GIS can change its website at any time; the Actor is maintained, but results may briefly break after such changes.

Do I need a 2GIS account or API key? No. Nothing is logged in and no cookies or tokens of yours are used.

Why does a search in 2GIS show 60 results but the Actor finds more? The website limits every search to 5 pages of 12. The Actor repeats the search for small map areas and merges the results, as described above.

Why are reviewer names missing? On purpose. Review text is public, but this Actor does not collect who wrote it, so you can analyse feedback without handling reviewers' personal data. Please do not use the text to identify or contact reviewers.

Are the phone numbers personal data? They are the contacts each business chose to publish on its 2GIS listing. Use them in line with the laws that apply to you (for example, rules on unsolicited marketing).

Which countries work? Every country with a 2GIS city site; Russia, Kazakhstan, Kyrgyzstan, Uzbekistan and the UAE were tested. Paste a city URL if your city's slug is not recognised.