2GIS Places Scraper — Russia & CIS Business Directory
Pricing
from $2.81 / 1,000 place records
2GIS Places Scraper — Russia & CIS Business Directory
Scrape 2GIS places by city and query. Get structured business records with contacts, addresses, GPS, hours, ratings, and categories. No external credential required. Pricing: $0.0029 per place-result + $0.00005 per Actor Start on the Free plan.
Pricing
from $2.81 / 1,000 place records
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
71
Total users
5
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
2GIS Places Scraper
Extract structured business records from 2GIS by city and search query, including contacts, addresses, GPS, hours, ratings, categories, photos, and business attributes; no external credential is required. Pay per event: $0.0029 per place-result event on the Free plan. A Free-plan run returns at most 10 results.
- Extract phone, email, website, and social links for B2B lead generation.
- Build market-research lists with categories, ratings, GPS coordinates, and average-check details.
- Enrich CRM records with addresses, branch counts, opening hours, and 2GIS profile URLs.
- Create POI data for geo-analytics and logistics.
- Review normalized records with
parse_confidence, a 0–1 signal based on populated key fields.
What you get
The Actor reads 2GIS Catalog data and can fall back to browser/XHR capture if the Catalog API client is refused. A field is null when the source does not provide the value.
| Field family | Fields | Type | Contents |
|---|---|---|---|
| Identity and categories | name, org_name, org_id, org_type, branch_count, tgis_id, rubrics, primary_rubric, url | string, integer, array of strings | Place identity, organization details, categories, branch count, and profile URL. String fields can be empty; branch_count and primary_rubric can be null; rubrics can be empty. |
| Structured address | address, city, region, district, country, street, house_number, postcode, address_comment, lat, lon | string, number | Address components and GPS coordinates. Address strings can be empty; lat and lon are null when the source does not provide coordinates. |
| Contacts | phones, email, website, socials | array of strings, string, object | Phone numbers, email, website, and supported social links such as VK, Telegram, and WhatsApp. phones can be empty; email and website can be empty; socials is null when no social link is found. |
| Reputation | rating, review_count, review_count_with_stars, org_rating, org_review_count, is_reviewable, flamp_rating, flamp_review_count | number, integer, boolean | Place-level, organization-level, and Flamp rating signals. Numeric and boolean fields can be null when the source does not provide them. |
| Hours and business details | hours, is_open_now, photo_count, main_photo_url, attributes, avg_check, business_lunch, cuisines, payment_methods, badges, nearest_metro | object, boolean, integer, string, array of strings | Hours, photos, business attributes, cuisine, payments, badges, and nearby metro. hours, is_open_now, photo_count, attributes, avg_check, business_lunch, cuisines, payment_methods, badges, and nearest_metro can be null; main_photo_url can be empty. |
| Freshness and promotion | created_at, updated_at, is_advertised, promo_text, booking_url, description, editorial_comment | ISO 8601 string, boolean, string | Source dates, advertising, promotional details, descriptions, and booking links. Dates and boolean values can be null; promotional and text fields can be null or empty. |
| Provenance | parse_confidence | number | A value from 0 to 1 indicating how many key fields were populated. |
Sample output
The sample is shortened and shows one record.
The sample phone number and email address are shown as <hidden for privacy> to avoid exposing personal data.
{"tgis_id": "70000001031659781", "name": "Мясо&Рыба","address": "Москва, Тверская улица, 23/12","city": "Москва", "region": "Москва", "district": "Тверской", "country": "Россия","lat": 55.766672, "lon": 37.599969,"phones": ["<hidden for privacy>"], "email": "<hidden for privacy>","website": "http://meat-and-fish.ru","socials": {"vkontakte": "https://vk.com/meat_and_fish", "telegram": "https://t.me/meat_and_fish_moscow"},"rating": 4.8, "review_count": 1248, "org_rating": 4.8, "org_review_count": 4675,"rubrics": ["Рестораны", "Доставка еды"], "primary_rubric": "Рестораны","org_name": "Мясо&Рыба, ресторан", "org_id": "4504136499435533","org_type": "ресторан", "branch_count": 11,"created_at": "2018-03-24T00:00:00Z", "updated_at": "2026-10-27T12:21:06Z","is_advertised": true, "url": "https://2gis.ru/firm/70000001031659781","parse_confidence": 1}
Pricing
You are charged for delivered business records and Actor Start events. A delivered business record is one place-result event, and an Actor start is charged as an apify-actor-start event. The number of Actor Start events depends on Actor memory: one event per GB, with a minimum of one event.
You pay only for the events listed below. This Actor does not use the Pay per event + usage option, so the platform usage of your runs (compute, proxy traffic and storage) is not billed to you separately.
| Plan | Actor Start event | Place record event |
|---|---|---|
| Free | $0.00005 | $0.0029 |
| Bronze | $0.0000495 | $0.002871 |
| Silver | $0.000049 | $0.002842 |
| Gold | $0.0000485 | $0.002813 |
| Platinum | $0.000048 | $0.002784 |
| Diamond | $0.0000475 | $0.002755 |
Free plan: 1,000 place-result events cost $2.90 and 10,000 cost $29.00. Free plan: 1,000 apify-actor-start events cost $0.05 and 10,000 cost $0.50.
For a run with one Actor Start event, 10 results = $0.02905 on the Free plan.
A Free-plan run is capped at 10 results, even when maxItems is higher.
The Apify Free plan includes $5 of monthly platform usage credit. With one Actor Start event per run, that $5 credit on the Free plan covers 1,724 place-result events across runs.
How to use
- Enter a
querysuch asрестораны,стоматология, orаптеки. - Enter a
cityas an English slug such asmoscow,spb, oralmaty, or a native name such asМоскваorАлматы. - Set
maxItemsto the positive number of places you want, or leave the default of 50. On the Free plan a run returns at most 10 results. - Optionally set
domain(default2gis.ru). The Catalog API path picks the region fromcity, sodomainonly matters if the Actor falls back to browser/XHR capture, where it sets the site address that is opened. - Configure
proxyConfigurationif needed; when omitted, the Actor creates Apify Proxy settings with theRESIDENTIALgroup. - Run the Actor and read records from the dataset, including contacts, addresses, ratings, hours, and
parse_confidence. - Repeat the run through Apify Schedules, using daily as a starting point for listing collection.
{"query": "рестораны","city": "moscow","maxItems": 50,"domain": "2gis.ru","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
query | Required search text passed to 2GIS. | Required |
city | Required city name or slug; the country is resolved from the city. | Required |
maxItems | Integer maximum for returned places. Positive values limit the result set. | The default is 50. |
proxyConfiguration | Apify Proxy settings. The default configuration uses the RESIDENTIAL group. | Apify Proxy with RESIDENTIAL when omitted |
domain | Regional 2GIS domain, used only by the browser/XHR fallback; the main Catalog API path ignores it and resolves the region from city. Accepted values are 2gis.ru, 2gis.kz, 2gis.kg, 2gis.ae, 2gis.com, 2gis.uz, 2gis.az, 2gis.by, 2gis.cy, 2gis.cz, 2gis.ge, 2gis.md, 2gis.ng, 2gis.qa, and 2gis.sa. | 2gis.ru |
Limits and edge cases
| Condition | What you see | What to do |
|---|---|---|
maxItems is 0 | The input parser uses the default value of 50. | Use a positive maxItems value. |
query or city is blank or missing | The Actor fails before fetching places because both inputs are required. | Provide a non-empty query and city. |
| No places match the city and query | The run ends as failed (exit code 1) and no places are returned. | Check the city spelling or slug and try another query. |
| Catalog API client is refused or blocked | The Actor switches to browser/XHR capture. | Check the city, query, and Apify Proxy configuration. |
| A returned place has no name | That place is omitted. If every returned place lacks a name, the run ends as failed (exit code 1) and no records are delivered. | Review the run and retry the query if appropriate. |
| Proxy setup raises an exception | The Actor logs a warning and continues without the configured proxy pool. | Check the Apify Proxy configuration if the run cannot access the source. |
| The run reaches the charge limit | The Actor pushes the records allowed by the limit and stops, so the dataset can be partial. | Increase the applicable charge limit and run again if needed. |
| Records are pushed during a run | Rows reach the dataset in batches. An abort, timeout, or failure after a batch leaves those rows in the dataset; later rows are not added. | Check the dataset for partial results. |
FAQ
How much does it cost to scrape 2GIS places?
A place costs $0.0029 per place-result event on the Free plan. An Actor Start costs $0.00005 per event on the Free plan. On the Free plan, 10 results cost $0.02905 with one Actor Start event. Paid-plan prices are in the Pricing table.
Why did my 2GIS run return no places?
Check the spelling of city (name or slug), verify the search text, and check the Apify Proxy configuration.
Why did the Actor return fewer places than maxItems?
Results can be fewer when 2GIS returns no matches, returned items have no name, or the run reaches its charge limit.
Do I need a 2GIS API key or external login?
No. The Actor does not ask for a 2GIS API key or another external credential. It uses the Apify account running the Actor and defaults to Apify RESIDENTIAL proxy settings.
Is scraping public 2GIS data legal or allowed?
This Actor extracts public business data from 2GIS. Whether collection or use is legal or allowed depends on the 2GIS source terms, applicable law, and your use case, so review those requirements before using the data.
Related actors
- France Company KYC — SIREN, Officers & Financials — company KYC data for France, including SIREN, officers, and financials.
- UK Companies House Scraper — Official API, Officers & SIC — UK Companies House data with officers and SIC information.
- Poland Company Registry — KRS/REGON Official API — Polish company registry data through KRS/REGON official APIs.
Rate this Actor
If 2GIS Places Scraper saved you time, please rate it on the Apify Store. A rating takes a few seconds and helps other people find a working scraper. If something did not work, open an issue on the Actor page.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.