2GIS Places Scraper — Russia & CIS Business Directory avatar

2GIS Places Scraper — Russia & CIS Business Directory

Pricing

from $2.81 / 1,000 place records

Go to Apify Store
2GIS Places Scraper — Russia & CIS Business Directory

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

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

71

Total users

5

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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 familyFieldsTypeContents
Identity and categoriesname, org_name, org_id, org_type, branch_count, tgis_id, rubrics, primary_rubric, urlstring, integer, array of stringsPlace 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 addressaddress, city, region, district, country, street, house_number, postcode, address_comment, lat, lonstring, numberAddress components and GPS coordinates. Address strings can be empty; lat and lon are null when the source does not provide coordinates.
Contactsphones, email, website, socialsarray of strings, string, objectPhone 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.
Reputationrating, review_count, review_count_with_stars, org_rating, org_review_count, is_reviewable, flamp_rating, flamp_review_countnumber, integer, booleanPlace-level, organization-level, and Flamp rating signals. Numeric and boolean fields can be null when the source does not provide them.
Hours and business detailshours, is_open_now, photo_count, main_photo_url, attributes, avg_check, business_lunch, cuisines, payment_methods, badges, nearest_metroobject, boolean, integer, string, array of stringsHours, 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 promotioncreated_at, updated_at, is_advertised, promo_text, booking_url, description, editorial_commentISO 8601 string, boolean, stringSource dates, advertising, promotional details, descriptions, and booking links. Dates and boolean values can be null; promotional and text fields can be null or empty.
Provenanceparse_confidencenumberA 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.

PlanActor Start eventPlace 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

  1. Enter a query such as рестораны, стоматология, or аптеки.
  2. Enter a city as an English slug such as moscow, spb, or almaty, or a native name such as Москва or Алматы.
  3. Set maxItems to the positive number of places you want, or leave the default of 50. On the Free plan a run returns at most 10 results.
  4. Optionally set domain (default 2gis.ru). The Catalog API path picks the region from city, so domain only matters if the Actor falls back to browser/XHR capture, where it sets the site address that is opened.
  5. Configure proxyConfiguration if needed; when omitted, the Actor creates Apify Proxy settings with the RESIDENTIAL group.
  6. Run the Actor and read records from the dataset, including contacts, addresses, ratings, hours, and parse_confidence.
  7. 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

ParameterWhat it doesDefault
queryRequired search text passed to 2GIS.Required
cityRequired city name or slug; the country is resolved from the city.Required
maxItemsInteger maximum for returned places. Positive values limit the result set.The default is 50.
proxyConfigurationApify Proxy settings. The default configuration uses the RESIDENTIAL group.Apify Proxy with RESIDENTIAL when omitted
domainRegional 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

ConditionWhat you seeWhat to do
maxItems is 0The input parser uses the default value of 50.Use a positive maxItems value.
query or city is blank or missingThe Actor fails before fetching places because both inputs are required.Provide a non-empty query and city.
No places match the city and queryThe 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 blockedThe Actor switches to browser/XHR capture.Check the city, query, and Apify Proxy configuration.
A returned place has no nameThat 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 exceptionThe 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 limitThe 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 runRows 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.

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.

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.

Full list of collected fields