2GIS Scraper — Local Business Data (Russia, CIS, Central Asia) avatar

2GIS Scraper — Local Business Data (Russia, CIS, Central Asia)

Pricing

from $3.00 / 1,000 results

Go to Apify Store
2GIS Scraper — Local Business Data (Russia, CIS, Central Asia)

2GIS Scraper — Local Business Data (Russia, CIS, Central Asia)

Scrape 2GIS local business listings across Russia, CIS and Central Asia. Get name, address, phone, website, rating, reviews, opening hours, category and coordinates. Great for lead generation. Export JSON, CSV, Excel.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

2GIS Scraper — Business Directory, Contacts, Ratings & Geo Data

Apify Actor Maintenance Data Format

The fastest, most reliable way to scrape 2GIS and extract local business data at scale. This 2GIS scraper pulls structured business listings from 2GIS — the dominant local search, maps, and enterprise business directory across Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, Azerbaijan, and Central Asia, where Google Maps coverage is sparse. Extract business names, verified street addresses, postcodes, direct phone numbers, decoded websites, contact emails, customer ratings, review counts, operating hours, categories, social media profiles, and GPS coordinates — with no login, no API key, and no coding.

Export everything to JSON, CSV, Excel, XML, or API.

Built for B2B lead generation specialists, sales development reps (SDRs), local SEO agencies, geomarketing analysts, and directory builders targeting Russian, CIS, and Central Asian markets.


⚡ At a glance

FeatureDescription
Coverage Area200+ cities and regions across Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, UAE (Dubai), and Central Asia
Input OptionsLocal-language keywords (searchTerms), city names (cities), or direct 2GIS Region IDs (regionIds)
Output FormatsJSON, CSV, Excel (XLSX), XML, HTML table
Key Data FieldsName, primary phone & full phone list, decoded website, email, address, postal code, ratings, reviews, opening schedule, latitude & longitude, social links
Speed & ScaleHTTP-native API extraction with rotating datacenter proxy sessions; 50 businesses per request, scaling to 1,000+ items
Automatic Region ResolverTranslates city names (e.g. Москва, Алматы, Ташкент, Бишкек) into numeric 2GIS Region IDs automatically

🔎 Why scrape 2GIS?

2GIS is the uncontested #1 business map and directory across Eastern Europe and Central Asia. In markets where Western mapping engines lack accurate local phone numbers or updated operating hours, 2GIS maintains deep, verified company databases. Local businesses routinely list mobile and landline phones, official web domains, social messenger channels (Telegram, WhatsApp, VKontakte), entrance instructions, and precise building coordinates.

Manually collecting these listings is prohibitive: results are paginated 50 at a time, websites use redirect links, and phone numbers are nested inside widget blocks. This 2GIS scraper automates end-to-end data harvesting: specify your target verticals and cities, and receive a normalized, de-duplicated dataset ready for your CRM or analysis pipeline.

Common reasons people scrape 2GIS:

  • 📞 B2B Lead Generation: Build targeted cold-calling and outreach lists with verified telephone numbers and WhatsApp/Telegram links.
  • 📊 Geomarketing & Expansion: Benchmark business density per square kilometer, analyze category saturation, and identify underserved neighborhoods.
  • 🕵️ Competitor Intelligence: Monitor competitor branch footprints, customer satisfaction ratings, and working hour schedules.
  • 🗺️ GIS & Map Enrichment: Feed routing engines and GIS software with exact geocoded latitudes, longitudes, and verified postal codes.
  • 🏢 Local Business Directories: Populate regional industry portals and classifieds with fresh, enriched company listings.
  • 📬 Direct Mail Marketing: Leverage 100% postal code coverage for hyper-local mail distribution and territory assignments.

✨ What this 2GIS scraper does

  • 🔎 Multi-City & Multi-Keyword Targeting: Search multiple niches (кафе, ресторан, стоматология, гостиница) across multiple metropolitan hubs (Москва, Санкт-Петербург, Алматы, Ташкент, Астана) in a single run.
  • 🔁 Unlocked Deep Pagination (1,000+ items): Automatically walks every 50-item page per search. Setting maxPagesPerSearch: 0 enables boundless pagination governed strictly by your maxItems target.
  • 📞 Rich Multi-Channel Contact Details: Captures primary phone, alternate phones, direct decoded website URLs (UTM parameters stripped), company emails, and direct social links (Telegram, VK, WhatsApp, Instagram).
  • 📍 Verified Geocoding & Postal Data: Extracts latitude, longitude, formatted street addresses, and postal ZIP codes.
  • ⭐ Reputation Metrics: Average star rating and total review counts to prioritize high-volume establishments.
  • 🕐 Full Weekly Schedule: Structured weekly operating hours for every day of the week, including 24/7 flags.
  • ⚡ Pure HTTP Performance: Extremely lightweight and fast, running smoothly on cost-effective Datacenter proxies without headless browser overhead.

📥 Input parameters

Configure the scraper using the Apify Console or pass JSON directly via the API. All fields are optional:

FieldTypeDefaultDescription
searchTermsArray["кафе"]Business categories or keywords in Russian or local language (e.g. ["кафе", "ресторан", "отель"]).
citiesArray["Москва"]City names to search. Automatically resolved to 2GIS Region IDs (e.g. ["Москва", "Алматы", "Ташкент"]).
regionIdsArray[]Optional direct 2GIS Region IDs (e.g. ["32"] for Moscow). Overrides cities if provided.
maxItemsInteger0Total maximum listings to collect across all searches. 0 = unlimited (governed by available listings).
maxPagesPerSearchInteger0Result pages per city/keyword (50 businesses/page). 0 = auto/unlimited (governed by maxItems).
proxyConfigurationObjectDatacenterApify Proxy Datacenter is enabled by default. Residential is unnecessary.

Example input — multi-vertical lead generation

{
"searchTerms": ["стоматология", "косметология"],
"cities": ["Москва", "Санкт-Петербург"],
"maxItems": 500,
"maxPagesPerSearch": 0,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Example input — single city deep harvest

{
"searchTerms": ["ресторан"],
"cities": ["Алматы"],
"maxItems": 1000,
"maxPagesPerSearch": 0
}

📊 Extracted fields

Every scraped business returns structured fields across 5 distinct categories:

🏷️ Business identity & taxonomy

FieldTypeCoverageDescription
idString🟢 HighUnique 2GIS firm identifier (de-duplication key)
nameString🟢 HighOfficial company or trade name
urlString🟢 HighCanonical 2GIS business profile link
categoryString🟢 HighPrimary industry rubric / category
categoriesArray🟢 HighAll associated categories and sub-rubrics
orgString🟡 ConditionalParent corporate or legal entity name

📞 Contact information & web presence

FieldTypeCoverageDescription
phoneString🟢 HighPrimary telephone number formatted for dialing
phonesArray🟢 HighFull list of published landline and mobile telephone numbers
websiteString🟢 HighDirect decoded official website URL (redirect wrappers removed)
websitesArray🟢 HighFull list of published company websites
emailString🟡 ConditionalDirect business email address when publicly listed
socialsArray🟢 HighSocial media profiles including Telegram, VK, WhatsApp, Instagram

📍 Location & geocoding

FieldTypeCoverageDescription
addressString🟢 HighFull formatted street address
addressCommentString🟡 ConditionalEntrance notes, floor numbers, or landmark directions
postcodeString🟢 HighPostal / ZIP code for the building address
latNumber🟢 HighPrecise geographic latitude coordinate
lonNumber🟢 HighPrecise geographic longitude coordinate
cityString🟢 HighResolved city name
regionIdString🟢 HighInternal 2GIS numeric region identifier

⭐ Ratings & customer feedback

FieldTypeCoverageDescription
ratingNumber🟢 HighAverage customer star rating (1.0 to 5.0)
reviewCountNumber🟢 HighTotal number of published customer reviews
photosArray🟢 HighURLs of user-submitted and verified interior/exterior photos

🕒 Operating hours & metadata

FieldTypeCoverageDescription
scheduleObject🟢 HighStructured opening and closing hours per day of the week
searchTermString🟢 HighSearch keyword that produced this result
scrapedAtString🟢 HighISO 8601 scrape execution timestamp

💻 Sample output record

{
"id": "70000001018349821",
"name": "Кофемания",
"url": "https://2gis.ru/firm/70000001018349821",
"category": "Кофейни",
"categories": ["Кофейни", "Рестораны", "Кондитерские изделия"],
"address": "Кудринская площадь, 1",
"addressComment": "1 этаж, высотка на Кудринской",
"postcode": "123242",
"phone": "+7 (495) 721-38-68",
"phones": [
"+7 (495) 721-38-68",
"+7 (926) 111-22-33"
],
"website": "https://coffeemania.ru",
"websites": ["https://coffeemania.ru"],
"email": "info@coffeemania.ru",
"socials": [
{ "type": "telegram", "value": "https://t.me/coffeemania_ru" },
{ "type": "vkontakte", "value": "https://vk.com/coffeemania" }
],
"rating": 4.7,
"reviewCount": 482,
"lat": 55.758814,
"lon": 37.581521,
"schedule": {
"Mon": { "working_hours": [{ "from": "08:00", "to": "23:00" }] },
"Tue": { "working_hours": [{ "from": "08:00", "to": "23:00" }] },
"Wed": { "working_hours": [{ "from": "08:00", "to": "23:00" }] },
"Thu": { "working_hours": [{ "from": "08:00", "to": "23:00" }] },
"Fri": { "working_hours": [{ "from": "08:00", "to": "00:00" }] },
"Sat": { "working_hours": [{ "from": "09:00", "to": "00:00" }] },
"Sun": { "working_hours": [{ "from": "09:00", "to": "23:00" }] }
},
"org": "ООО Кофемания-Кудринка",
"photos": [
"https://photogis.ru/preview/abc123_1024x768.jpg"
],
"city": "Москва",
"regionId": "32",
"searchTerm": "кафе",
"scrapedAt": "2026-11-10T13:00:00.000Z"
}

🔁 Deep pagination & scale

2GIS organizes search results into pages of 50 businesses.

  • Unlocked 1,000+ Pagination: Set maxPagesPerSearch: 0 (or leave default 0) and specify your desired maxItems (e.g. 2000). The scraper continuously pages until the entire city directory is exhausted or your limit is satisfied.
  • Automatic De-Duplication: Multiple keywords within the same city may surface overlapping listings. The actor indexes unique 2GIS firm IDs in-memory, ensuring you never pay for or export duplicated records.
  • Region Scaling: Inputting multiple cities (e.g. Москва, Алматы, Ташкент) processes each city in turn, distributing requests cleanly across proxy sessions.

⚙️ How to integrate via API

Trigger runs programmatically and stream leads into your CRM or database using Python or Node.js:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"searchTerms": ["стоматология"],
"cities": ["Москва"],
"maxItems": 250,
"maxPagesPerSearch": 0
}
run = client.actor("haketa/2gis-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['name']} | Phone: {item['phone']} | Address: {item['address']}")
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/2gis-scraper').call({
searchTerms: ['гостиница'],
cities: ['Алматы', 'Астана'],
maxItems: 300,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Successfully scraped ${items.length} hotel records.`);

💡 Practical tips for optimal results

  • Local-Language Search: Russian or local language queries return exponentially more results than English equivalents (кафе yields thousands of listings, while cafe yields a small fraction).
  • Postal Code Segmentation: Filter or group outputs by postcode to assign field sales representatives specific geographic postal zones.
  • Messenger Lead Outreach: Take advantage of the socials array — in CIS markets, businesses frequently reply faster via Telegram or WhatsApp than via traditional email.
  • Cost Efficiency: Keep Apify Datacenter proxies enabled. Residential proxies add unnecessary per-GB bandwidth fees without improving success rates.

❓ Frequently Asked Questions

Do I need a 2GIS API key or paid subscription? No. The scraper communicates with public directory endpoints and does not require an API token or 2GIS developer account.

How many cities are supported? More than 200 cities across Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, Belarus, Azerbaijan, and several international territories (including Dubai).

Why are some email addresses missing? Small local shops and service providers often communicate exclusively via phone or messaging apps. Phone coverage is ~97%, while direct email is published on approximately 45–50% of listings.

Are the website URLs clean or wrapped in redirects? All website links are automatically un-redirected and stripped of tracking parameters, giving you direct, clean canonical domains (e.g. https://example.com instead of https://link.2gis.ru/...?http...).

Can I export the data to Google Sheets or Excel? Yes. You can export in XLSX, CSV, or JSON format directly from the Apify platform, or automate real-time synchronization to Google Sheets via Apify Integrations.




🏙️ Supported cities & major metropolitan regions

The scraper includes built-in automated region resolution for over 200 cities across 8 countries. Popular target markets include:

CountryKey Cities Supported
RussiaМосква (Moscow), Санкт-Петербург (Saint Petersburg), Новосибирск (Novosibirsk), Екатеринбург (Yekaterinburg), Казань (Kazan), Нижний Новгород (Nizhny Novgorod), Челябинск (Chelyabinsk), Красноярск (Krasnoyarsk), Самара (Samara), Уфа (Ufa), Ростов-на-Дону (Rostov-on-Don), Краснодар (Krasnodar), Воронеж (Voronezh), Пермь (Perm), Волгоград (Volgograd), Сочи (Sochi)
KazakhstanАлматы (Almaty), Астана (Astana), Шымкент (Shymkent), Караганда (Karaganda), Актобе (Aktobe), Атырау (Atyrau), Павлодар (Pavlodar), Усть-Каменогорск (Oskemen)
UzbekistanТашкент (Tashkent), Самарканд (Samarkand), Бухара (Bukhara), Наманган (Namangan), Андижан (Andijan)
KyrgyzstanБишкек (Bishkek), Ош (Osh), Джалал-Абад (Jalal-Abad)
AzerbaijanБаку (Baku), Гянджа (Ganja), Сумгаит (Sumqayit)
United Arab EmiratesДубай (Dubai), Абу-Даби (Abu Dhabi)

For maximum recall, search using Russian terms. Here is a quick reference table of high-volume industry rubrics:

VerticalRussian Search TermEnglish EquivalentCommon Data Yield
Food & DiningресторанRestaurantHigh reviews, working hours, photos
Cafes & Bakeriesкафе, кофейняCafe / Coffee shopHigh phone & social links
Healthcareстоматология, клиникаDentistry / Medical ClinicPhone, doctor specialties, exact address
Beauty & Wellnessсалон красоты, барбершопBeauty Salon / BarbershopWhatsApp, Instagram, online booking
Automotiveавтосервис, шиномонтажAuto Repair / Tire FittingDirect phone, schedule, emergency hours
Hotels & Travelгостиница, отель, хостелHotel / HostelWebsite, star rating, full coordinates
Fitnessфитнес-клуб, тренажерный залFitness Club / GymOpening schedule, website, phone
Retail & Shoppingсупермаркет, аптекаSupermarket / Pharmacy24/7 hours flags, postal code

🗺️ Geospatial analysis with GeoJSON conversion

Because every listing includes validated lat and lon coordinates, you can readily convert your scraped dataset into GeoJSON for mapping in QGIS, Mapbox, Kepler.gl, or Leaflet:

import json
with open('dataset_2gis.json', 'r', encoding='utf-8') as f:
items = json.load(f)
geojson = {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [it['lon'], it['lat']]
},
'properties': {
'name': it.get('name'),
'phone': it.get('phone'),
'category': it.get('category'),
'address': it.get('address'),
'rating': it.get('rating')
}
}
for it in items if it.get('lat') and it.get('lon')
]
}
with open('businesses.geojson', 'w', encoding='utf-8') as f:
json.dump(geojson, f, ensure_ascii=False, indent=2)
print(f'Converted {len(geojson["features"])} locations to GeoJSON.')

📋 Changelog

v1.2 — 2026-11

  • Unlocked 1,000+ Deep Pagination: Updated maxPagesPerSearch default to 0 (auto/unlimited), allowing deep pagination runs up to 1,000+ listings governed by maxItems.
  • Enhanced Redirect Decoder: Improved regex decoding for 2GIS outgoing website redirects, stripping tracking query parameters cleanly.
  • Optimized Datacenter Proxy Retries: Refined retry pacing with fast-timeout connection recycling for rapid prefill execution (<90s).
  • Field Normalization: Standardized postal code and multi-channel messenger schemas across all CIS regions.

v1.1 — 2026-09

  • Initial public release supporting 200+ cities across Russia, CIS, and Central Asia.
  • Automatic city-to-region ID resolution without requiring manual region lookup.
  • Extracted comprehensive contact information, weekly schedules, and reputation metrics.
⌂ 换网址