2GIS Scraper — Places, Reviews, Jobs & Realty avatar

2GIS Scraper — Places, Reviews, Jobs & Realty

Pricing

from $3.00 / 1,000 place scrapeds

Go to Apify Store
2GIS Scraper — Places, Reviews, Jobs & Realty

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

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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.

How 2GIS Scraper works

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 typePatternExample
Searchhttps://2gis.{tld}/{city}/search/{query}https://2gis.ru/moscow/search/кафе
Search page.../search/{query}/page/Nhttps://2gis.ru/moscow/search/кафе/page/2
Firmhttps://2gis.{tld}/{city}/firm/{id}https://2gis.ru/moscow/firm/70000001007179642
Vacancieshttps://2gis.{tld}/{city}/vacancieshttps://2gis.ru/moscow/vacancies
Realtyhttps://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

WhoWhat they pull
Lead gen / CRMPhones, emails, websites, addresses for a category in a city
Market researchRatings, rubric mix, new vs promoted places
Reputation teamsReview text, ratings, official replies
RecruitersVacancy title, salary, company, apply URL
Realty / investorsSale and rent listings with price, area, floor, metro
AgenciesScheduled city+query runs with monitoring mode

How It Works

  1. You pass city + queries, or paste 2GIS search / firm / vacancies / realty URLs.
  2. Search pages are read from server-rendered initialState JSON (about 12 places per page) and walked via /page/N.
  3. Each firm page is fetched for phones, websites, emails, hours, and photos.
  4. Optional: reviews come from public-api.reviews.2gis.com with next_link pagination.
  5. Optional: the city vacancies board is parsed into job rows (apply links are usually hh.ru).
  6. Optional: realty listings come from the public market-backend /5.0/realty/items feed (same data the 2GIS housing UI shows).
  7. Rows land in the dataset tagged place / review / job / property.

Input Configuration

FieldTypeDescription
scrapeModestringplaces (default), reviews, jobs, realty, or all
searchQueriesarrayQueries used when startUrls is empty. Example: кафе
locationstringCity in English or Russian. Default Moscow
countrystringTLD hint: auto, ru, kz, ae, uz, by, com, …
startUrlsarray2GIS URLs. When set, they override city + query
organizationIdsarrayFirm IDs or firm URLs, scraped directly
includeContactsbooleanFetch firm pages for phones/emails/sites. Default true
skipClosedPlacesbooleanDrop names that look permanently closed
rubricIdsarrayRubric IDs (161) or names (Кафе)
filterHasSite / filterHasPhotos / filterDelivery / filterTakeaway / filterWifi / filterPaymentCard / filterHasGoods / filterOpen24h / filterCreatedRecentlybooleanCatalog filters. One goes on the listing URL; the rest are checked on the firm page
filterMinRatingintegerMinimum stars (1–5)
filterAvgPriceMin / filterAvgPriceMaxintegerAverage-check band when 2GIS exposes a bill
districts / metros / buildingsarrayName match on the firm card
customGeolocationobjectGeoJSON Point (radiusKm) or Polygon. Coordinates are [lon, lat]
maxPhotosPerPlaceintegerPhoto URLs on the place row. Default 20. No extra charge
photoCategoriesarrayfood, menu, interior, outside, rooms, pool, spa, parking
followOrgBranches / followInsideBuildingsbooleanWalk /branches/{orgId} and /inside/{id}
skipRealtybooleanDrop place rows whose rubrics look like housing agencies (does not turn off the realty mode)
realtyCategorystringsale_residential, sale_commercial, rent_residential, rent_commercial, daily_rent
realtySortstringprice_asc, price_desc, area_asc, area_desc
rooms / propertyType / newBuilding / providerarrayRealty filters (studio–5+, flat/house/…, resale/new, CIAN/Domclick)
priceMin / priceMax / pricePerMeterMin / pricePerMeterMax / areaMin / areaMax / floorMin / floorMaxintegerRealty numeric bands
notFirstFloor / notLastFloor / floorsInBuildingMin / floorsInBuildingMax / metroTimemixFloor + walk-to-metro filters
maxReviewsPerPlaceintegerReviews per place. 0 = off. Reviews mode defaults to 20 if you leave 0
reviewSortBystringdate_edited, date_created, or rating
reviewRatingsstringall, positive (≥4), negative (≤2)
repliesOnlybooleanKeep reviews that have an official reply
reviewKeywordsarraySubstring match on review text
reviewSourcestringall, 2gis, flamp, booking
reviewDateFrom / reviewDateTostringInclusive date window
includeUnratedReviewsbooleanAsk the reviews API for unrated rows
includeReviewerDatabooleanKeep userId / userName. Default true
maxItemsintegerCap across all row types. Default 100
monitoringModebooleanSkip firm IDs already delivered to this user
resetMonitoringStatebooleanClear the seen-ID store for this run
maxConcurrencyintegerParallel firm / review requests. Default 8
proxyobjectOptional 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

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.
  • startUrls overrides searchQueries + location.
  • includeContacts: true (default) fetches each firm page; without it phones/emails are empty.
  • Reviews are off unless maxReviewsPerPlace > 0 or scrapeMode is reviews.
  • 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.ru careers.

⚠️ 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