2GIS Scraper - Places & Business Data
Pricing
Pay per event
2GIS Scraper - Places & Business Data
The countries 2GIS actually maps are Russia, the CIS, the UAE and Cyprus, and outside them there is nothing to search. Inside: name, category, address, coordinates, phone, email, website, rating and the week's opening hours. No account, no API key. $0.50 per 1,000 places.
Pricing
Pay per event
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
2 hours ago
Last modified
Categories
Share
2GIS Places Scraper
Pulls business listings out of 2GIS, the maps and business directory used across Russia, Kazakhstan, Uzbekistan and the rest of the CIS, plus the UAE and Cyprus.
Give it a search term and a city. You get one row per place: name, category, full address, latitude and longitude, phone, email, website, rating, review count and the week's opening hours.
$0.50 per 1,000 places ($0.0005 each), plus $0.001 each time a run starts. Same price on the free plan as on a paid one, with nothing tiered by volume. You don't register anything and there's no API key to get.
What a row looks like
{"placeId": "70000001041312679","name": "Zotman Pizza, пиццерия","nameShort": "Zotman Pizza","brandName": "Zotman Pizza, служба доставки","chainBranchCount": 21,"categoryPrimary": "Доставка еды","categories": ["Пиццерии", "Доставка еды", "Быстрое питание"],"address": "улица Солянка, 1/2 ст1","addressFull": "Москва, улица Солянка, 1/2 ст1","addressComment": "1 этаж","postcode": "109028","country": "Россия","region": "Москва","city": "Москва","cityAlias": "moscow","district": "Басманный","latitude": 55.75413,"longitude": 37.637247,"phone": "+74951502829","phones": ["+74951502829", "+79266279464"],"website": "http://zotmanpizza.ru/","websites": ["http://zotmanpizza.ru/"],"email": "infozotman@zotman.ru","emails": ["infozotman@zotman.ru"],"socialProfiles": [{ "type": "vkontakte", "url": "https://vk.com/zotman_pizza" }],"rating": 4.5,"reviewCount": 199,"openingHours": { "Mon": { "working_hours": [{ "from": "10:00", "to": "22:00" }] } },"openingHoursText": "Mon: 10:00-22:00; Tue: 10:00-22:00; ...","url": "https://2gis.ru/moscow/firm/70000001041312679","searchQuery": "пиццерия","position": 1,"scrapedAt": "2026-08-07T18:55:00.000Z"}
Website links come out clean. 2GIS wraps every outbound link in a link.2gis.ru click tracker with its own utm_ tags attached; the actor unwraps it and strips those, so you get http://zotmanpizza.ru/ and not a 300-character redirect.
Input
{"searchQueries": ["кафе", "пиццерия"],"city": "Moscow","maxItems": 200}
| Field | What it does |
|---|---|
searchQueries | One search term per line. |
city | English or local spelling both work — Moscow, Москва, Almaty, Dubai. A numeric 2GIS city id also works. Leave empty to search the whole catalog. |
startUrls | Optional. Paste 2GIS search pages (https://2gis.ru/moscow/search/кафе) or single place pages (https://2gis.ru/moscow/firm/70000001044357973). Page numbers in a search URL are respected, so .../search/кафе/page/3 starts from result 101. |
maxItems | Hard cap on rows, 1–5000. You're charged per row returned, so this is your spend cap too. |
latitude / longitude / radiusMeters | Search around a point instead of a whole city. |
locale | Optional response language. Leave on Automatic unless you need something specific — not every locale is available in every country. |
Run it with no input and it returns a single labelled sample row so you can see the shape. That run isn't charged beyond the start fee.
How much you actually get back
2GIS reports the match count for every search and the actor pages through it 50 rows at a time. кафе in Moscow reports about 5,000 matches; restaurant in Dubai about 11,500. In practice 2GIS stops serving new pages somewhere around 5,000 rows per search term. To go deeper, split the job: search per district, per rubric, or use latitude/longitude with a small radius and walk a grid.
Field coverage on a random 50-place sample in Moscow: phone 50/50, opening hours 50/50, rating 50/50, website 45/50, email 38/50. Emails come inside the row. There's no second charge for revealing them.
Countries
2GIS is a regional directory, not a global one. Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, Azerbaijan, Belarus, Georgia, Armenia, Tajikistan, Cyprus and the UAE. Outside that list, 2GIS is the wrong source.
Search terms in the local language return noticeably more in Russian-speaking cities. кафе beats cafe in Moscow. In Dubai it's the other way round.
Limits
- Reviews and photos aren't included. You get
ratingandreviewCount, not the review text or the images. - Around 5,000 rows per search term. 2GIS stops paging past roughly that depth. Split the search to go further.
- The public web key can rotate. The actor re-reads it at start-up so a rotation is usually invisible, and there's a fallback key. If 2GIS ever revokes it outright you get an uncharged
KEY_REJECTEDrow rather than a silent empty run. ratingis the branch-level score. For chain branches 2GIS also publishes a company-wide rating; this returns the branch one.
How it works
2GIS's web front end sits behind a JavaScript challenge, so scraping the HTML is a losing game. The data behind that page comes from 2GIS's public catalog API at catalog.api.2gis.ru/3.0, which answers plain JSON and isn't challenged at all. The actor talks to that API using the same public web key 2GIS ships in its own front-end config, read live at start-up.
No browser, no headless Chrome, no residential proxy. That's why it's cheap and why a 1,000-row run finishes in about half a minute. Requests go out with a real Chrome TLS fingerprint (impit), which is what keeps the API answering consistently.
Pricing
| Event | When | Price |
|---|---|---|
| Actor start | Once per run | $0.001 |
| Place | Each place row returned | $0.0005 ($0.50 / 1,000) |
Sample rows, error rows and diagnostics are never charged. A run that finds nothing costs $0.001.
100 places = $0.051. 1,000 places = $0.501. 10,000 places = $5.001. Same numbers on the free plan and on every paid one.
FAQ
Can I scrape 2GIS without an API key of my own? Yes. The actor uses the public key 2GIS's own website uses. You register nothing.
How do I get all the cafes in a city?
Set city, put кафе in searchQueries, raise maxItems. Expect to top out around 5,000; beyond that, search per district or per rubric.
Does it return email addresses? Where 2GIS has them, which was about three quarters of listings in a Moscow sample. No extra charge.
What happens if my search returns nothing? One uncharged diagnostic row explaining why, and the run costs $0.001.
