Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
2GIS Places Scraper icon

2GIS Places Scraper

Scrape 2GIS places at $0.50 per 1,000: name, category, address, coordinates, phone, website, rating and reviews. Russia and CIS coverage. No API key.

93 runs on Apify $0.0005 per place ($0.5 / 1,000)
Run this in the cloudRun on Apify →

Maps & Local Lead Generation

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchQueries, city, startUrls (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0005 per place = $0.5 per 1,000

You are charged forWhenPrice
Place returnedCharged once per genuine place row. Sample rows, diagnostics, blocked requests and empty runs are never charged.$0.0005
Actor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.001

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-07, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchQueriesWhat to look for on 2GIS, for example "pizza", "кафе", "dentist". One search per line. 2GIS is a Russian/CIS directory, so local-language terms return more.array
cityCity to search in. English or local spelling both work ("Moscow", "Москва", "Almaty", "Dubai"). You can also paste a numeric 2GIS city id. Leave empty to search the whole 2GIS catalog.string
startUrlsOptional. Paste 2GIS search pages (https://2gis.ru/moscow/search/кафе) or single place pages (https://2gis.ru/moscow/firm/70000001044357973). Works alongside the fields above.array
maxItemsHard cap on rows returned across all searches (1-5000). You are charged per place returned.integer
latitudeSearch around a point instead of a whole city. Example: 55.7558string
longitudeUsed together with latitude. Example: 37.6173string
radiusMetersRadius around the latitude/longitude point. Ignored unless both coordinates are set.integer
localeOptional 2GIS locale for names and categories. Leave as Automatic unless you specifically need another language; not every locale is available in every country.string

What you get

A structured dataset — each result includes fields like:

namecategoryPrimaryaddressFullphonewebsiteemailratingreviewCountopeningHoursTextlatitudelongitudeurlplaceId

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Maps & Local Lead Generation

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

2GIS Reviews Scraper iconMaps & Local Lead Generation

2GIS Reviews Scraper

Extract 2GIS reviews by place URL or city search: star rating, review text, author, date, photos, owner replies and aggregate rating. No 2GIS API key.

Ready to run — no setup

Yelp Scraper iconMaps & Local Lead Generation

Yelp Scraper

Scrape Yelp businesses and reviews via Yelp's official Fusion API: rating, review count, price, phone, address, GPS and review text.

Ready to run — no setup

Google Maps Reviews Scraper iconMaps & Local Lead Generation

Google Maps Reviews Scraper

Scrape Google Maps reviews at $0.27 per 1,000. Rating, full text, exact date, reviewer and review count, owner reply and photos.

Ready to run — no setup

Google Maps Reviews Scraper iconMaps & Local Lead Generation

Google Maps Reviews Scraper

Scrape Google Maps reviews by place URL, place ID or search: rating, full text, date, reviewer, owner reply, photo count.

Ready to run — no setup

Yandex Maps Scraper iconMaps & Local Lead Generation

Yandex Maps Scraper

Extract Yandex Maps business listings: name, address, GPS coordinates, category, rating, review count, phone, website and opening hours.

Ready to run — no setup

Google Maps Scraper iconMaps & Local Lead Generation

Google Maps Scraper

Scrape Google Maps business listings by category and city: name, phone, website, rating, reviews, lat/lng and place ID. Build local lead lists fast.

24 use cases

See all Maps & Local Lead Generation →

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 ($0.0005 each), plus $0.001 each time a run starts — the lowest per-place price of any 2GIS places scraper on the Apify Store with an active user base. The next cheapest, m_mamaev/2gis-places-scraper (129 monthly users), is $2.00 per 1,000 even on its cheapest volume tier.

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, resolved live on 2026-08-10 at each rival's cheapest volume tier (their headline free-tier rate is higher): m_mamaev/2gis-places-scraper charges $0.002/place, and zen-studio/2gis-places-scraper-api charges $0.0027/place. Both are four to five times this actor's $0.0005.

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 places scraper on Apify? This one, at $0.50 per 1,000 places — no other 2GIS places scraper with an active user base is below it. Compare the pricing tab of any other 2GIS actor, and read its *lowest* volume tier, not the headline free-tier rate.