2GIS Scraper [$3/1K💰] | Business Directory | Reviews | Jobs
Pricing
from $0.39 / 1,000 reviews
2GIS Scraper [$3/1K💰] | Business Directory | Reviews | Jobs
Extract business listings, reviews, jobs and real-estate data from 2GIS — the leading directory and map platform across Russia, Kazakhstan and Central Asia. Get names, addresses, coordinates, phones, ratings and vacancies. Built for local market research and lead generation. $3 per 1,000 places.
Pricing
from $0.39 / 1,000 reviews
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Features
Share
2GIS Scraper
Scrape 2GIS business directory data — places with contacts and ratings, customer reviews, job vacancies and realty listings across Russia, the CIS and the UAE — into structured datasets, using the same public endpoints the 2gis.ru website itself calls, with no API key.
Built for:
- B2B lead generation and sales prospecting by city and category
- Review monitoring and reputation tracking for local businesses
- Local market and competitor analysis across 2GIS directories
- Job-market and realty-market monitoring per city
- Building a regional company contact database (phones, emails, schedules)
Build Business Lead Lists From the 2GIS Directory
2GIS is a major business directory and map platform covering millions of organizations across Russia, Kazakhstan, Uzbekistan, Kyrgyzstan, Tajikistan, Georgia, Armenia, Azerbaijan, Cyprus and the UAE. This actor turns search queries, city names, coordinates, polygons or plain 2gis.* URLs into structured rows: company name and legal name, address with administrative hierarchy and coordinates, phone numbers, emails and website links, opening schedule, rubrics (categories), ratings and review counts, price level, plus optional vacancy boards and realty listings (aggregated from CIAN and Domclick) for each city. Server-side filters (has website, delivery, card payment, average bill, minimum rating and more) narrow the list before rows are stored.
How It Works

The Actor resolves each query or city to a 2GIS region, then calls the public place, review, vacancy and realty endpoints that power the site. Results are paged 50 at a time, and monitoring mode remembers IDs so later runs emit only new items.
Every row is written to the dataset for its type: places, reviews, jobs or realty. Rows carry addresses, coordinates, contacts, schedules and ratings, ready for local-market maps and lead lists.
- At startup the actor fetches
2gis.ruonce and reads the public web, reviews and vacancies API keys from the site's page config; built-in fallback keys are used if the site is unreachable. - City names are resolved to 2GIS region IDs; coordinates are searched within a configurable radius (default 50 km); WKT polygons are searched by their exact geometry; URLs and firm IDs resolve directly.
- Every search requests all available place fields and pages results 50 at a time until
maxResultsPerQueryis reached, with polite delays between requests. - Reviews, vacancies and realty boards are read from their own public endpoints per city, with filters applied server-side.
- Every row is written to the dataset of its type (
places,reviews,jobsorrealty); filtering, caps and monitoring apply before a row is stored. - In monitoring mode every pushed row is remembered by type + id in a named key-value store, so the next scheduled run outputs only items that appeared since.
Input Parameters
Search targets
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchQueries | array | No | — | Search terms (e.g. cafe); each query runs in each location. |
locations | array | No | — | City names, lat,lon coordinates, or WKT POLYGON(...). Jobs and realty need city names. |
startUrls | array | No | — | Full 2gis.* URLs: /{city}/search/{query} or /{city}/firm/{id}; mixable with queries. |
organizationIds | array | No | — | Numeric firm IDs or firm URLs to scrape directly. |
includeBranches | boolean | No | false | Also fetch every other branch of a multi-branch organization. |
scrapeMode | enum | No | places | places, reviews or all. Reviews need maxReviewsPerPlace > 0 (defaults to 20 in reviews mode). |
Limits & ordering
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
maxResultsPerQuery | integer | No | 50 | Max places per search target (1–10,000), paged 50 at a time. |
maxItems | integer | No | 0 | Hard global cap across all rows; 0 = no cap. Free plan capped at 100 items per run. |
searchRadiusKm | number | No | 50 | Radius for coordinate locations (0.1–50); ignored for cities and polygons. |
locale | enum | No | en_RU | 20 region locales (e.g. ru_RU, en_AE, ar_AE, en_KZ); auto-retries with the region default if unavailable. |
sortBy | enum | No | relevance | relevance, distance (needs coordinates), rating, name, opened_time. |
categoryIds | array | No | — | Rubric IDs (e.g. 164 for restaurants); empty = all categories. |
Place filters
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
minRating | number | No | — | 1–5; unrated places are dropped. |
avgBillMin | integer | No | — | Minimum average bill in local currency. |
avgBillMax | integer | No | — | Maximum average bill. |
hasSite | boolean | No | false | Only places with a website in contacts. |
hasPhotos | boolean | No | false | Server-side photo filter. |
hasGoods | boolean | No | false | Only places with a price list / goods. |
delivery | boolean | No | false | Only places offering delivery. |
takeaway | boolean | No | false | Only places offering takeaway. |
wifi | boolean | No | false | Only places advertising Wi-Fi. |
cardPayment | boolean | No | false | Only places accepting cards. |
open24h | boolean | No | false | Only 24-hour places. |
skipClosedPlaces | boolean | No | false | Drop places that look permanently closed. |
Reviews
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
maxReviewsPerPlace | integer | No | 0 | Reviews per place; 0 disables unless mode is reviews (then 20). |
reviewSortBy | enum | No | date_edited | date_edited or date_created. |
reviewRatings | enum | No | all | positive = rating ≥ 4, negative = rating ≤ 2. |
repliesOnly | boolean | No | false | Keep only reviews with an official business reply. |
reviewKeywords | array | No | — | Keep reviews whose text or reply contains any of these strings (case-insensitive). |
reviewSource | enum | No | all | 2gis, flamp, booking or all (2GIS mirrors some reviews). |
reviewDateFrom | string | No | — | Inclusive: YYYY-MM-DD or relative offset like -7d. |
reviewDateTo | string | No | — | Inclusive end date. |
includeUnratedReviews | boolean | No | false | Also fetch unrated reviews. |
includeReviewerData | boolean | No | true | Off clears reviewer name/id before rows are saved. |
Jobs & realty boards
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
includeJobs | boolean | No | false | Scrape each location's vacancy board (locations must be city names). |
maxJobsPerLocation | integer | No | 100 | Vacancies per location (1–10,000). |
includeRealty | boolean | No | false | Scrape each city's realty board (aggregated from CIAN and Domclick). |
realtyDeal | enum | No | sale | sale or rent. |
realtyPropertyType | enum | No | residential | residential, commercial or all. |
realtySort | enum | No | default | price_asc, price_desc, area_asc, area_desc. |
realtyRooms | array | No | — | studio, 1–5+; empty = all. |
realtyMinPrice | integer | No | 0 | Local currency; 0 disables the bound. |
realtyMaxPrice | integer | No | 0 | 0 disables the bound. |
realtyMinArea | number | No | 0 | m²; 0 disables the bound. |
realtyMaxArea | number | No | 0 | 0 disables the bound. |
realtyProviders | array | No | — | cian, domclick; empty = all. |
maxRealtyListingsPerLocation | integer | No | 100 | Listings per location (1–10,000). |
Monitoring & proxy
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
monitoringMode | boolean | No | false | Push only items never pushed before (state kept in a named store) — rows skipped this way are not charged. |
monitoringStoreName | string | No | 2gis-monitoring | State store name; change it to start a fresh monitoring series. |
proxy | object | No | disabled | Standard Apify proxy picker; use it only if 2GIS blocks datacenter IPs. |
Output Fields
Rows are written to per-type datasets, discriminated by item_type:
placerows (32 fields):item_type,place_id,place_type,name,name_ex,address_name,address_comment,address,adm_div,full_address_name,building_name,full_name,purpose_name,floors,point,region_id,rubrics,contact_groups,schedule,attribute_groups,reviews,links,org,stat,context,has_goods,ads,rating,reviews_count,search_query,search_location,fetched_atreviewrows (21 fields):item_type,review_id,place_id,place_name,place_address,rating,text,provider,source,url,date_created,date_edited,likes_count,comments_count,is_verified,photos,official_answer,user,search_query,search_location,fetched_atjobrows (22 fields):item_type,job_id,name,salary_label,legal_text,category_id,category_name,provider_name,provider_code,apply_url,org_id,org_name,branch_id,building,address_name,lat,lon,city,district,logo_url,search_location,fetched_atrealtyrows (28 fields):item_type,realty_id,name,url,button_name,is_recent,price,currency,price_per_meter,property_type,rooms,area,floor,attributes,images,categories,source,branch_id,org_id,building_id,address_name,postcode,lat,lon,adm_div,metro,search_location,fetched_at
Example Input
{"searchQueries": ["coffee shop"],"locations": ["Dubai"],"scrapeMode": "all","maxResultsPerQuery": 20,"maxReviewsPerPlace": 10,"minRating": 4,"hasSite": true,"includeJobs": false,"monitoringMode": true}
Example Output
{"item_type": "place","place_id": "70000001017456789","name": "Example Coffee Shop","full_address_name": "Dubai, Al Wasl Road, Building 12","point": { "lon": 55.2619, "lat": 25.1972 },"rubrics": [{ "name": "Coffee shops", "alias": "coffee_shop" }],"contact_groups": [{ "type": "phone", "contacts": [{ "value": "+971 4 000 0000" }] },{ "type": "website", "contacts": [{ "value": "https://example.com" }] }],"schedule": { "working_hours": [{ "from": "08:00", "to": "23:00" }] },"rating": 4.7,"reviews_count": 312,"search_query": "coffee shop","search_location": "Dubai","fetched_at": "2026-10-19T12:00:00.000Z"}
Automate Business Directory & Review Monitoring With Schedules & Webhooks
- Daily lead refresh: schedule
searchQueries+locationswithmonitoringMode: true— each run delivers only new or updated rows, and skipped rows are not charged. - Reputation tracking: schedule
scrapeMode: "reviews"withreviewDateFrom: "-1d"over your client portfolio's firm IDs to collect yesterday's reviews every morning. - New-job and new-listing alerts: run
includeJobs/includeRealtydaily per city and wire a dataset webhook to Slack or email. - Scheduling is the intended usage pattern and also improves this actor's Store recommendation signals.
Related Actors
- 2GIS Places Scraper — the most-used 2GIS actor on the Store, a solid reference implementation.
- 2GIS Scraper (Phones, Emails, Reviews) — places with contact extraction, closest direct alternative.
- 2GIS Reviews Scraper — reviews-only focus if you do not need full place records.
- 2GIS Scraper — Places & Business Data — another places-focused option.
- 2GIS Places Scraper — Russia & CIS Business Directory — CIS-focused directory extraction.
Frequently Asked Questions
Why use this actor instead of the official API?
2GIS does publish an official API platform (docs.2gis.com): Directory, Places, Geocoder and other services behind a registered key — a demo key is free for one month, after which paid subscriptions apply, and Data.2GIS sells .xlsx company samples (500+ filters) for Russia and Kazakhstan. This actor needs no registration at all: it reads the same public endpoints the 2gis.ru website itself calls (keys fetched automatically), combines places, reviews, jobs and realty boards in one run — the vacancy and realty boards have no documented public API endpoint — and keeps cross-run monitoring state so scheduled runs return only items you have not seen before.
Is there a 2GIS API?
Yes — 2GIS offers an official API platform with Directory, Places, Geocoder, Suggest, Categories and Regions APIs, plus maps and navigation services. You register at platform.2gis.com for a demo key (free for one month). For ad-hoc or keyless extraction, this actor and several Store alternatives call the website's own endpoints instead.
How can I get 2GIS data without an API key?
Use this actor: it fetches the website's public keys automatically at startup (with built-in fallbacks), so no account, key or subscription is needed. Paste search queries, city names or 2gis.* URLs and run.
What are the alternatives to this actor?
The official 2GIS API platform and the paid Data.2GIS sample service are the non-scraping routes; within Apify, the 2GIS places and reviews scrapers listed under Related Actors cover parts of the same data (places only, or reviews only), while this actor covers places, reviews, jobs and realty in one input.
Can I export 2GIS business data to CSV for lead generation?
Yes — every dataset exports to CSV, Excel, JSON or XML from the Apify Console, or on a schedule through the dataset API. Combine searchQueries, locations and the contact filters to build targeted lead lists.
Does it cover Dubai and the UAE as well as Russia?
Yes — 2GIS operates across the CIS plus Cyprus and the UAE; pass Dubai or Abu Dhabi as a location (locale en_AE/ar_AE are available). Jobs and realty boards apply to cities where 2GIS lists them.
For AI Agents & LLM Apps
Purpose: returns 2GIS directory rows — places (contacts, schedule, rubrics, rating), reviews, job vacancies and realty listings — from the site's public endpoints, keyless.
Minimal input:
{ "searchQueries": ["cafe"], "locations": ["Moscow"], "maxResultsPerQuery": 10 }
Reviews mode:
{ "searchQueries": ["cafe"], "locations": ["Moscow"], "scrapeMode": "reviews", "maxReviewsPerPlace": 5 }
Output fields (by item_type): place → place_id, name, address fields, point, rubrics, contact_groups, schedule, rating, reviews_count, stat, fetched_at; review → review_id, place_id, rating, text, source, date_created, official_answer, user; job → job_id, name, salary_label, apply_url, org_name, city; realty → realty_id, price, currency, property_type, rooms, area, source, url.
Behaviors an agent should know:
scrapeModedefaults toplaces; reviews only flow whenmaxReviewsPerPlace > 0(inreviewsmode it defaults to 20).maxItems: 0means uncapped — always set an explicit cap for agentic runs; free-plan runs stop at 100 items per run.locationsaccepts city names,lat,lonand WKT polygons — butincludeJobs/includeRealtyrequire city names.monitoringMode: truemakes runs idempotent-by-delta (only never-seen rows); rows skipped by monitoring are not charged.localefalls back to the region default automatically if the requested locale is unavailable for a location.- If both
startUrls/organizationIdsand search targets are set, all sources are processed and merged.
Billing: pay-per-event per row — Place $0.003, Review $0.0004, Job $0.002, Property $0.0025, plus a run-start event; monitoring-skipped rows are free.
Legal & Compliance Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by 2GIS. It accesses only publicly available website endpoints using the site's own published keys — no account registration or login is involved. Output includes business contact details that companies publish themselves, plus reviews that may contain personal names; users are responsible for their own compliance with the source platform's Terms of Service and applicable data-protection law (including GDPR for personal data such as reviewer identities), and business contact data should not be used for unsolicited commercial outreach in violation of applicable law (e.g. CAN-SPAM, GDPR).
SEO Keywords
2gis scraper, 2gis api, 2gis data, 2gis export, 2gis business directory, business directory data, business directory scraper, russia company database, moscow business data, dubai business directory, almaty company data, uae business leads, 2gis reviews scraper, business phone number database, local business listings data, lead generation database, company contact data, 2gis alternative, job vacancies data, property listings russia