2gis Places Scraper avatar

2gis Places Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
2gis Places Scraper

2gis Places Scraper

Извлекайте данные из тысяч мест и предприятий на 2ГИС, включая номера телефонов, соцсети, сайты. отзывы, фотографии и многое другое. Экспортируйте данные, запускайте через API, планируйте и отслеживайте запуски или интегрируйте с другими инструментами.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(7)

Developer

Mikhail Mamaev

Mikhail Mamaev

Maintained by Community

Actor stats

13

Bookmarked

432

Total users

48

Monthly active users

18 days ago

Last modified

Share

Extract business and place data from 2GIS in minutes. Use it to build lead lists, research local markets, compare competitors, or collect places inside a specific area.

What this Actor gives you

  • Business names, addresses, coordinates, categories, working hours, ratings, and 2GIS links
  • Optional contacts such as phone numbers, emails, websites, and social links
  • Optional reviews, photos, and videos for each place
  • An export-ready dataset plus an interactive HTML map

Why people use it

  • Build local lead lists for sales and outreach
  • Track competitors by city, district, or custom search area
  • Research markets and spot gaps in local coverage
  • Create or enrich business directories
  • Monitor newly opened places with filters and sorting

How to use it

  1. Enter one or more search terms such as restaurant, dentist, or car wash.
  2. Add a location like Moscow, or use a custom GeoJSON area if you want precise boundaries.
  3. Choose how many places you want per search and run the Actor.

You can also search by 2GIS categories, apply built-in filters, sort results, and enrich places with contacts, reviews, or media.

Input examples

Quick start

{
"query": ["restaurant", "coffee shop"],
"locationQuery": "Moscow",
"maxItems": 100
}

Enriched results

{
"query": ["dentist"],
"locationQuery": "Almaty",
"maxItems": 50,
"includeContacts": true,
"maxReviewsPerPlace": 20,
"reviewSortBy": "friends",
"reviewRatings": "positive",
"maxMediaPerPlace": 10,
"sortBy": "rating"
}

Configuration

InputWhat it does
queryYour search terms. Using a few different terms can broaden coverage.
locationQueryA city, district, street, metro station, or any other place name.
maxItemsHow many places to save for each search term. Use 0 for no limit.
domainChoose from 19 country-specific 2GIS domains, or leave it on Auto.
languageSelect from 13 supported languages.

📞 Contact details

InputWhat it does
includeContactsAdd phones, emails, websites, and social links for each place.

⭐ Reviews

InputWhat it does
maxReviewsPerPlaceAdd reviews for each place. Use 0 to skip reviews.
reviewSortByChoose how reviews are sorted: trust or friends (newest).
reviewRatingsCollect all rated reviews, or only negative or positive ones.
includeUnratedReviewsAdd unrated reviews when reviewRatings is set to all.
includeReviewerDataInclude public reviewer profile data when it is available.

🖼️ Photos and videos

InputWhat it does
maxMediaPerPlaceAdd extra photos and videos. Use 0 to skip media.
includePhotoAuthorsInclude photo author information when 2GIS provides it.

🧭 Filters and categories

InputWhat it does
rubricIdsSearch inside more than 1,700 built-in 2GIS categories.
filterHasGoods, filterHasSite, filterHasPhotosKeep only places with prices, a website, or photos.
filterHomeDelivery, filterTakeaway, filterPaymentCard, filterWifiFilter by delivery, takeaway, card payment, and Wi-Fi.
filterAvgPriceMin / filterAvgPriceMaxRestrict results by average price range.
filterCreatedRecently, filterRatingFocus on newly added places or only places above a chosen rating threshold.

🔃 Sorting

InputWhat it does
sortBySort by rating, newest, alphabetically, or keep the original 2GIS order.

🛰️ Custom search area

InputWhat it does
customGeolocationUse a GeoJSON area instead of a plain text location when you need precise search boundaries.

⚙️ Advanced

InputWhat it does
enableGlobalDatasetKeep a deduplicated dataset across multiple runs.

What you get in output

The Actor saves results to the dataset, where you can preview them in Apify, open the built-in map, or export them to JSON, CSV, Excel, XML, or HTML.

  • Dataset: the main output with one item per place
  • Useful views: overview, locations, attributes, contacts, reviews, and media
  • Interactive map: saved as results-map in the key-value store and linked from the Output tab

Tables

The table view can be adjusted in different ways. There is a general overview, and you can also focus on contacts, location data, reviews, media, or other fields depending on what you need to export or inspect.

Overview

Map view

Results are also shown on an interactive map:

  • in the Live View tab
  • in the results-map.html file in the Key-Value Store

Map

Output example

{
"id": "4504127908559765",
"title": "Кафе Пушкинъ, ресторан русской кухни",
"shortName": "Кафе Пушкинъ",
"extension": "ресторан русской кухни",
"url": "https://2gis.ru/moscow/firm/4504127908559765",
"rubrics": [
"Рестораны",
"Доставка еды",
"Банкетные залы"
],
"category": "food_restaurant",
"totalScore": 4.6,
"reviewsCount": 402,
"ratingCount": 856,
"summary": "Русская кухня в интерьере старинного особняка под живую музыку. Посетители советуют попробовать блюда из щуки и телячьи ножки с гречкой.",
"country": "Россия",
"region": "Москва",
"city": "Москва",
"district": "Тверской",
"street": "Тверской бульвар",
"houseNumber": "26а",
"address": "Тверской бульвар, 26а",
"mainPhotoUrl": "https://i0.photo.2gis.com/main/branch/32/4504127908559765/common",
"location": {
"lat": 55.763649,
"lng": 37.604992
},
"working_hours": {
"Fri": {
"from": "00:00",
"to": "24:00"
},
"Mon": {
"from": "09:00",
"to": "24:00"
},
"Sat": {
"from": "00:00",
"to": "24:00"
},
"Sun": {
"from": "00:00",
"to": "24:00"
},
"Thu": {
"from": "09:00",
"to": "24:00"
},
"Tue": {
"from": "09:00",
"to": "24:00"
},
"Wed": {
"from": "09:00",
"to": "24:00"
}
},
"nearestStations": [
{
"name": "Тверская",
"distance": 90,
"comment": "Замоскворецкая линия"
},
{
"name": "Пушкинская",
"distance": 120,
"comment": "Таганско-Краснопресненская линия"
},
{
"name": "Чеховская",
"distance": 370,
"comment": "Серпуховско-Тимирязевская линия"
}
],
"attributeGroups": [
"GreatList",
"Рекомендовано Michelin",
"Maison Dellos",
"Чек 1550 ₽",
"Ланч от 960 ₽",
"Русская кухня",
"Бизнес-ланч",
"Завтрак",
"Заказ столиков",
"Заказ навынос",
"Винная карта",
"Меню на английском",
"Постное меню",
"Живая музыка",
"VIP-зал",
"Летняя веранда",
"Аниматоры, мастер-классы для детей",
"Проведение банкетов",
"Завтрак 09:00-12:00",
"Ланч 12:00-16:00",
"До 350 мест",
"Чебуреки",
"Пельмени",
"Салаты",
"Супы",
"На гриле",
"Кофе с собой",
"Чай с собой",
"Пироги",
"Десерты",
"Вторые блюда",
"Салаты",
"Супы",
"Доставка",
"Wi-Fi для клиентов",
"Оплата картой",
"Наличный расчёт",
"Оплата через банк",
"Оплата по QR-коду"
],
"brand": {
"name": "Кафе Пушкинъ, ресторан русской кухни",
"shortName": "Кафе Пушкинъ",
"extension": "ресторан русской кухни",
"branchCount": 1,
"rating": {
"score": 4.6,
"reviews": 856
}
},
"detailsType": "branch"
}

Adding contact information

{
"phoneText": [
"+7 (495) 739‒00‒33"
],
"phoneValue": [
"+74957390033"
],
"email": [
"banquet@cafe-pushkin.ru"
],
"website": [
"http://cafe-pushkin.ru"
],
"socials": {
"vk": [
"https://vk.com/cafepushkin"
],
"telegram": [
"https://t.me/cafepushkin_official"
],
"other": [
"https://pinterest.com/cafepushkinofficial"
]
}
}

Adding reviews

{
"reviews": [
{
"id": "221590575",
"provider": "tbank",
"rating": 5,
"text": "Все понравилось, обслужевания на высшем уровне!!!",
"dateCreated": "2026-02-15T16:39:41.152644+07:00",
"dateEdited": null,
"isRated": true,
"likesCount": 0,
"commentsCount": 0,
"officialAnswer": null,
"emojis": null,
"trustFactors": {
"caption": "T-Bank Payment",
"confirmedCaption": "Review confirmed",
"factors": [
{
"type": "transaction_confirmation",
"caption": "T-Bank Payment",
"lastVisit": null,
"visitsCount": null,
"transactionProvider": "tbank",
"icon": "https://cachizer3.2gis.com/reviews-logos/dd38d673-d4f5-4fcf-a722-64232f60c80b.png?h={height}&w={width}"
}
]
}
}
]
}

Adding images and videos

{
"media": [
{
"id": "30258560132546910",
"mediaType": "photo",
"url": "https://i4.photo.2gis.com/images/branch/0/30258560132546910_4015.jpg",
"width": 1700,
"height": 1133,
"creationTime": "2023-10-16T18:40:18+00:00",
"modificationTime": "2023-10-17T08:10:05+00:00"
}
]
}

If you enable extra enrichment, each place can also include fields such as phoneText, phoneValue, email, website, socials, detailsType, reviewsMeta, reviews, mediaMeta, and media.

Tips for better results

  • Use different search terms that do not overlap too much. For example, restaurant, bar, and coffee shop usually work better than several near-identical phrases.
  • You can search without a separate location field by putting the location directly into the query, for example restaurants in Moscow.
  • Contacts, reviews, and media make the output richer, but they also make the run slower.
  • If you want exact boundaries, use customGeolocation instead of a broad text location.

Custom search area

If your location is not found, or if you want to search inside a very specific area, you can use customGeolocation.

2GIS Places Scraper supports several geometry types for custom search areas: Polygon, MultiPolygon, and Point. For Point, the Actor treats it as a circle, with a default radius of 5 km unless you set radiusKm yourself.

Important: in GeoJSON, coordinates are always stored in this order: longitude first, latitude second.

If you want an easy way to draw and validate shapes, use Geojson.io.

Polygon

The most common option is a polygon, which is simply a set of points describing the area you want to scan. The first and last coordinate pair must be the same so the polygon is properly closed.

This example covers a large part of Moscow:

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[37.53709323993428, 55.76662127653114],
[37.55076839820586, 55.71536538587122],
[37.67750542499144, 55.71235159263938],
[37.69342377991097, 55.76960954827027],
[37.610709021226626, 55.80031206455419],
[37.53709323993428, 55.76662127653114]
]
]
}
}
]
}

MultiPolygon

A MultiPolygon lets you combine several separate areas in one input. This is useful when you want to search multiple disconnected zones at once.

{
"type": "MultiPolygon",
"coordinates": [
[
[
[37.58, 55.75],
[37.60, 55.75],
[37.60, 55.77],
[37.58, 55.77],
[37.58, 55.75]
]
],
[
[
[37.64, 55.73],
[37.66, 55.73],
[37.66, 55.75],
[37.64, 55.75],
[37.64, 55.73]
]
]
]
}

Circle

For a circular area, use a Point and add radiusKm. This is often the simplest option when you want to search around a single location.

{
"type": "Point",
"coordinates": [37.62141, 55.75227],
"radiusKm": 8
}
Also useful   •  Tools for adjacent workflows
Apify Actor
Apify Actor icon  Yandex Maps Places Scraper
A good alternative if your workflow is centered around Yandex Maps.
Chrome Extension
Chrome extension icon  Yandex Maps Scraper
Browser-based scraping with real-time manual control.