2GIS Scraper - Places & Business Data, Lowest Price avatar

2GIS Scraper - Places & Business Data, Lowest Price

Pricing

Pay per event

Go to Apify Store
2GIS Scraper - Places & Business Data, Lowest Price

2GIS Scraper - Places & Business Data, Lowest Price

The lowest price on the market at $0.50 per 1,000 places. Search any city on 2GIS and get name, category, full address, coordinates, phone, website, rating and review count. Covers Russia, CIS and beyond. No account, no API key. Blocked or empty runs are never charged.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

2GIS Places Scraper API

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 back one row per place: name, category, full address, latitude/longitude, phone, email, website, rating, review count and the week's opening hours.

$0.50 per 1,000 places. That is the lowest price of any 2GIS scraper on the Apify Store. The next cheapest is $1.80 / 1,000; the popular ones sit at $4.50 / 1,000.

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; this actor unwraps it and strips those tags, so you get http://zotmanpizza.ru/ and not a 300-character redirect.

Input

{
"searchQueries": ["кафе", "пиццерия"],
"city": "Moscow",
"maxItems": 200
}
FieldWhat it does
searchQueriesOne search term per line.
cityEnglish or local spelling — Moscow, Москва, Almaty, Dubai. A numeric 2GIS city id also works. Leave empty to search the whole catalog.
startUrlsOptional. Paste 2GIS search pages (https://2gis.ru/moscow/search/кафе) or single place pages (https://2gis.ru/moscow/firm/70000001044357973).
maxItemsHard cap on rows, 1–5000. You are charged per row returned.
latitude / longitude / radiusMetersSearch around a point instead of a whole city.
localeOptional response language. Leave on Automatic unless you need something specific.

Run it with no input at all and it returns a single labelled sample row so you can see the shape. That run is not charged.

How much you get back

2GIS reports the match count for every search, and this 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, measured 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 are included at no extra charge — several other 2GIS actors bill those as a separate "add contacts" event.

Countries

2GIS is a regional directory, not a global one. It covers Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, Azerbaijan, Belarus, Georgia, Armenia, Tajikistan, Cyprus and the UAE. If you need places outside that list, 2GIS is the wrong source.

Search terms in the local language return noticeably more than English ones in Russian-speaking cities. кафе beats cafe in Moscow; in Dubai it is the other way around.

Pricing

EventWhenPrice
Actor startOnce per run$0.001
PlaceEach place row returned$0.0005 ($0.50 / 1,000)

Sample rows, error rows and diagnostics are never charged. A run that finds nothing costs you $0.001.

100 places = $0.051. 1,000 places = $0.501. 10,000 places = $5.001.

For comparison, at the time of writing: zen-studio/2gis-places-scraper-api charges $0.0045/place plus $0.007 per start, tugelbay/2gis-scraper $0.0045, m_mamaev/2gis-places-scraper $0.003 plus $0.03 per start, piotrv1001/2gis-scraper $0.0018.

How it works

2GIS's own 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 is not challenged at all. This actor talks to that API directly using the same public web key 2GIS ships in its own front-end config, read live at start-up so a key rotation on their side does not need a redeploy. There is a built-in fallback key if the lookup ever fails.

No browser, no residential proxy, no headless Chrome. That is why it is cheap and why a 1,000-row run finishes in about half a minute.

Requests are made with a real Chrome TLS fingerprint (impit), which is what keeps the API answering consistently.

Limits, stated honestly

  • Reviews and photos are not included. You get rating and reviewCount, not the review text or images. Those are separate products.
  • ~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 on every run, so a rotation is usually invisible. If 2GIS ever revokes it outright, runs return an uncharged KEY_REJECTED diagnostic instead of silently returning nothing.
  • rating is the aggregate 2GIS score. For chain branches, 2GIS also reports a company-wide rating; this actor returns the branch-level one.
  • Not a global directory. See the country list above.

FAQ

Can I scrape 2GIS without an API key of my own? Yes. This actor uses the public key 2GIS's own website uses. You do not register anything.

How do I get all cafes in a city? Set city, put кафе in searchQueries, and raise maxItems. Expect to top out around 5,000; beyond that, search per district or per rubric.

Can I paste a 2GIS URL instead? Yes. startUrls accepts both search pages and individual place pages. Page numbers in a search URL are respected, so .../search/кафе/page/3 starts from result 101.

Does it return email addresses? Where 2GIS has them — about three quarters of listings in a Moscow sample. No extra charge.

Is it faster than a browser scraper? Considerably. It is a JSON API call per 50 places, roughly one second each.

What happens if my search returns nothing? You get one uncharged diagnostic row explaining why, and the run costs $0.001.

Which is the cheapest 2GIS scraper on Apify? This one, at $0.50 per 1,000 places. Compare the pricing tab of any other 2GIS actor.