2GIS Scraper — Places, Reviews, Jobs & Realty
Pricing
from $3.00 / 1,000 place scrapeds
2GIS Scraper — Places, Reviews, Jobs & Realty
Scrape 2GIS (2ГИС) places, reviews, jobs and realty in one run — phones, emails, websites, hours, ratings, review replies, vacancy apply links, and CIAN / Domclick housing ads. City + query or any 2gis.ru / .kz / .com search, firm, vacancies, or realty URL. JSON or CSV.
Pricing
from $3.00 / 1,000 place scrapeds
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn 2GIS (2ГИС) search, firm, vacancies, and realty URLs into structured business, review, job, and property rows. Start from a city + query (Moscow / кафе) or paste any 2GIS link. JSON or CSV out.

Why Use This Scraper?
- Places, reviews, jobs, and realty in one actor — pick a mode or run all four
- Firm-page contacts: phones, websites, emails, social links (search cards do not include them)
- Catalog filters (website, delivery, Wi-Fi, rating, new places, rubric) plus district / metro / GeoJSON
- Review filters: sentiment, date window, keyword, official-reply-only, Flamp / Booking source
- Vacancies board with title, salary, company, address, and the hh.ru apply URL
- Housing board (sale / rent / daily) with price, area, floor, and the CIAN or Domclick listing URL
- City + query mode for Russia, CIS, Gulf, and extra 2GIS TLDs
- Monitoring mode so scheduled runs only return new firm IDs
Overview
Built for lead gen, local-market research, reputation monitoring, and recruiting teams that need structured 2GIS data.
Each dataset row is tagged with itemType: place, review, job, or property. A search run emits place rows. Turning on reviews adds review rows for those places. A vacancies URL emits job rows. A /realty/ URL emits property rows. Filter on itemType.
Search listing cards omit phones. The actor opens each firm page when includeContacts is on (default) so contact fields fill in.
Supported Inputs
URL types
| URL type | Pattern | Example |
|---|---|---|
| Search | https://2gis.{tld}/{city}/search/{query} | https://2gis.ru/moscow/search/кафе |
| Search page | .../search/{query}/page/N | https://2gis.ru/moscow/search/кафе/page/2 |
| Firm | https://2gis.{tld}/{city}/firm/{id} | https://2gis.ru/moscow/firm/70000001007179642 |
| Vacancies | https://2gis.{tld}/{city}/vacancies | https://2gis.ru/moscow/vacancies |
| Realty | https://2gis.{tld}/{city}/realty/{sale|rent|saleCommercial|rentCommercial|rentDaily} | https://2gis.ru/moscow/realty/sale |
Copy-pasteable startUrls
{"startUrls": ["https://2gis.ru/moscow/search/кафе","https://2gis.ru/moscow/firm/70000001007179642","https://2gis.ru/moscow/vacancies","https://2gis.ru/moscow/realty/sale"]}
Keyword / search mode
{"searchQueries": ["кафе", "барбершоп"],"location": "Moscow","country": "auto","maxItems": 50}
Unsupported: 2GIS login-only account pages, the official Places API key portal, and job.2gis.ru (that is DoubleGIS's own careers site, not the city vacancies board).
Use Cases
| Who | What they pull |
|---|---|
| Lead gen / CRM | Phones, emails, websites, addresses for a category in a city |
| Market research | Ratings, rubric mix, new vs promoted places |
| Reputation teams | Review text, ratings, official replies |
| Recruiters | Vacancy title, salary, company, apply URL |
| Realty / investors | Sale and rent listings with price, area, floor, metro |
| Agencies | Scheduled city+query runs with monitoring mode |
How It Works
- You pass city + queries, or paste 2GIS search / firm / vacancies / realty URLs.
- Search pages are read from server-rendered
initialStateJSON (about 12 places per page) and walked via/page/N. - Each firm page is fetched for phones, websites, emails, hours, and photos.
- Optional: reviews come from
public-api.reviews.2gis.comwithnext_linkpagination. - Optional: the city vacancies board is parsed into job rows (apply links are usually hh.ru).
- Optional: realty listings come from the public
market-backend/5.0/realty/itemsfeed (same data the 2GIS housing UI shows). - Rows land in the dataset tagged
place/review/job/property.
Input Configuration
| Field | Type | Description |
|---|---|---|
scrapeMode | string | places (default), reviews, jobs, realty, or all |
searchQueries | array | Queries used when startUrls is empty. Example: кафе |
location | string | City in English or Russian. Default Moscow |
country | string | TLD hint: auto, ru, kz, ae, uz, by, com, … |
startUrls | array | 2GIS URLs. When set, they override city + query |
organizationIds | array | Firm IDs or firm URLs, scraped directly |
includeContacts | boolean | Fetch firm pages for phones/emails/sites. Default true |
skipClosedPlaces | boolean | Drop names that look permanently closed |
rubricIds | array | Rubric IDs (161) or names (Кафе) |
filterHasSite / filterHasPhotos / filterDelivery / filterTakeaway / filterWifi / filterPaymentCard / filterHasGoods / filterOpen24h / filterCreatedRecently | boolean | Catalog filters. One goes on the listing URL; the rest are checked on the firm page |
filterMinRating | integer | Minimum stars (1–5) |
filterAvgPriceMin / filterAvgPriceMax | integer | Average-check band when 2GIS exposes a bill |
districts / metros / buildings | array | Name match on the firm card |
customGeolocation | object | GeoJSON Point (radiusKm) or Polygon. Coordinates are [lon, lat] |
maxPhotosPerPlace | integer | Photo URLs on the place row. Default 20. No extra charge |
photoCategories | array | food, menu, interior, outside, rooms, pool, spa, parking |
followOrgBranches / followInsideBuildings | boolean | Walk /branches/{orgId} and /inside/{id} |
skipRealty | boolean | Drop place rows whose rubrics look like housing agencies (does not turn off the realty mode) |
realtyCategory | string | sale_residential, sale_commercial, rent_residential, rent_commercial, daily_rent |
realtySort | string | price_asc, price_desc, area_asc, area_desc |
rooms / propertyType / newBuilding / provider | array | Realty filters (studio–5+, flat/house/…, resale/new, CIAN/Domclick) |
priceMin / priceMax / pricePerMeterMin / pricePerMeterMax / areaMin / areaMax / floorMin / floorMax | integer | Realty numeric bands |
notFirstFloor / notLastFloor / floorsInBuildingMin / floorsInBuildingMax / metroTime | mix | Floor + walk-to-metro filters |
maxReviewsPerPlace | integer | Reviews per place. 0 = off. Reviews mode defaults to 20 if you leave 0 |
reviewSortBy | string | date_edited, date_created, or rating |
reviewRatings | string | all, positive (≥4), negative (≤2) |
repliesOnly | boolean | Keep reviews that have an official reply |
reviewKeywords | array | Substring match on review text |
reviewSource | string | all, 2gis, flamp, booking |
reviewDateFrom / reviewDateTo | string | Inclusive date window |
includeUnratedReviews | boolean | Ask the reviews API for unrated rows |
includeReviewerData | boolean | Keep userId / userName. Default true |
maxItems | integer | Cap across all row types. Default 100 |
monitoringMode | boolean | Skip firm IDs already delivered to this user |
resetMonitoringState | boolean | Clear the seen-ID store for this run |
maxConcurrency | integer | Parallel firm / review requests. Default 8 |
proxy | object | Optional override. Direct works from many networks |
Output Overview
One dataset, four shapes. Filter by itemType. Places carry identity, address, GPS, contacts, hours, rating, and categories. Reviews carry text, rating, author, dates, and officialAnswer when the business replied. Jobs carry title, salary label, company, address, and applyUrl. Properties carry price, area, floor, address, metro, and offerUrl (usually CIAN or Domclick).
Output Samples
Place (firm page, Moscow cafe)
{"itemType": "place","id": "70000001007179642","name": "Му-Му, кафе","address": "Манежная площадь, 1 ст2","city": "Москва","phones": ["+74957818781", "+79851298276"],"emails": ["dostavka@cafemumu.ru"],"websites": ["http://cafemumu.ru"],"rating": 4.8,"reviewCount": 1104,"lat": 55.755301,"lon": 37.614586,"rubrics": ["Кафе", "Доставка еды", "Быстрое питание"],"url": "https://2gis.ru/moscow/firm/70000001007179642"}
Review
{"itemType": "review","id": "295548772","placeId": "70000001034739765","placeName": "Руки Вверх!, бар","rating": 5,"text": "Классное место, 👍👍👍👍👍","dateCreated": "2026-09-09T22:44:01.756664+07:00","userName": "Я здесь Власть 😈😈😈","officialAnswer": {"text": "Рады, что вы круто отдохнули!","dateCreated": "2026-09-10T00:11:15.434721+07:00","orgName": "Руки Вверх!, бар"}}
Job
{"itemType": "job","id": "136986651","title": "Официант в итальянский ресторан","salary": "от 170 000 ₽ в месяц на руки","companyName": "Avero mio на Петровке, итальянский ресторан-бистро","address": "улица Петровка, 34 ст1, Тверской, Москва","provider": "hh.ru","applyUrl": "https://hh.ru/vacancy/136986651"}
Property
{"itemType": "property","id": "70250202178338985","name": "1-комнатная, 41,3 м²","propertyType": "Квартира","rooms": "1","area": 41.3,"floor": 3,"price": 23788800,"pricePerMeter": 576000,"address": "Строительный проезд, 9 к1","city": "Москва","provider": "cian","offerUrl": "https://www.cian.ru/sale/flat/333843134/"}
Key Output Fields
Place: id, name, orgId, orgName, url, city, address, lat, lon, phones, emails, websites, socials, rating, reviewCount, rubrics, schedule, attributes, photos
Review: id, placeId, placeName, rating, text, dateCreated, userName, isVerified, officialAnswer, photos
Job: id, title, salary, companyName, address, provider, applyUrl
Property: id, name, propertyType, rooms, area, floor, price, pricePerMeter, address, city, district, metro, provider, offerUrl
FAQ
Do I need a 2GIS API key? No. Places come from the public website's server-rendered JSON. Reviews use 2GIS's public reviews API. You do not paste a catalog key.
Why are phones missing if I turn off includeContacts? Search cards do not include contact_groups. Leave contacts on unless you only need name/address/rating.
How many places is a full Moscow cafe search? The listing meta reported 6,750 matches / 563 pages at 12 per page. Always set maxItems.
Are job apply links on 2GIS itself? Usually not. The vacancies board points at hh.ru (and similar) apply URLs. That is what applyUrl stores.
Does this scrape 2GIS property listings? Yes. Set scrapeMode to realty (or all), or paste a /{city}/realty/sale URL. Each kept listing is one property-scraped event, not place-scraped. skipRealty only hides housing places.
What about geo / polygon filters? Pass customGeolocation as GeoJSON Point (coordinates: [lon, lat], optional radiusKm) or Polygon. District / metro / building names also match the firm card.
Support
- Bug or missing field: Issues
- Email: muhamed.didovic@gmail.com
- Website: muhamed-didovic.github.io
Additional Services
Custom fields, scheduled incremental feeds into a CRM, or a private high-volume build — describe what you need on the Issues tab or by email.
Explore More Scrapers
Other directory, review, and job actors: memo23 on Apify.
🤖 For AI Agents & LLM Apps
Compact reference for agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/2gis-scraper).
Purpose: Scrape 2GIS places (contacts, GPS, hours, rating), reviews (text + official reply), city vacancies, and realty listings from search/firm/vacancies/realty URLs or city + query.
Minimal input:
{ "searchQueries": ["кафе"], "location": "Moscow", "maxItems": 20 }
Firm-only: { "startUrls": ["https://2gis.ru/moscow/firm/70000001007179642"], "maxReviewsPerPlace": 10, "maxItems": 20 }.
Jobs-only: { "scrapeMode": "jobs", "location": "Moscow", "maxItems": 20 }.
Realty-only: { "scrapeMode": "realty", "location": "Moscow", "realtyCategory": "sale_residential", "rooms": ["1","2"], "maxItems": 20 }.
Output: one row per item — itemType is place, review, job, or property. Place fields: id, name, orgId, orgName, url, city, address, lat, lon, phones[], emails[], websites[], rating, reviewCount, rubrics[], schedule, photos[]. Review fields: id, placeId, placeName, rating, text, dateCreated, userName, officialAnswer {text, dateCreated, orgName}. Job fields: id, title, salary, companyName, address, provider, applyUrl. Property fields: id, name, propertyType, rooms, area, floor, price, pricePerMeter, address, city, provider, offerUrl.
Behaviors an agent should know:
- Always set
maxItems. A Moscow cafe search is thousands of places. startUrlsoverridessearchQueries+location.includeContacts: true(default) fetches each firm page; without it phones/emails are empty.- Reviews are off unless
maxReviewsPerPlace> 0 orscrapeModeisreviews. - Billing:
place-scraped($0.003),review-scraped($0.0004),job-scraped($0.002),property-scraped($0.0025). No charge for skipped monitoring IDs. - Unsupported: login pages, official catalog API keys,
job.2gis.rucareers.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by DoubleGIS LLC (ООО «ДубльГИС») or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available 2GIS pages and the public reviews API — no authenticated endpoints, paid Places API keys, or content behind a 2GIS login wall. Users are responsible for ensuring their use complies with 2gis.com / 2gis.ru Terms of Service, applicable data-protection law (GDPR, CCPA, and local equivalents), and any contractual obligations of their own organization.
SEO Keywords
2GIS scraper, 2gis scraper, scrape 2GIS, 2ГИС парсер, 2gis places scraper, 2gis reviews scraper, 2gis jobs scraper, 2gis property scraper, 2gis realty scraper, 2gis API alternative, Apify 2GIS, Russia business directory scraper, CIS local leads, Dubai 2gis.com scraper, phone email extraction 2GIS, 2GIS vacancy parser, CIAN Domclick 2GIS, local market research Russia, 2gis.ru cafe scraper