2GIS Places Scraper

Extract public 2GIS place listings, ratings, review counts, categories, addresses, coordinates when visible, and diagnostics from search queries or 2GIS search URLs.

Data fields

FieldTypeDescription
idstring | nullValue exported as id.
titlestringValue exported as title.
shortNamestring | nullValue exported as shortName.
urlstringValue exported as url.
querystring | nullValue exported as query.
locationQuerystring | nullValue exported as locationQuery.
domainstringValue exported as domain.
addressstring | nullValue exported as address.

Input preview

queriesSearch queries
locationQueryLocation
startUrls2GIS URLs
maxItemsMaximum places
domain2GIS domain
languageLanguage

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public 2GIS place listings from search queries or public 2GIS search URLs. The Actor saves structured rows with names, URLs, addresses, categories, ratings, review counts when visible, and run diagnostics for troubleshooting.

Use it for local business research, lead lists, location monitoring, market mapping, and automation workflows that need CSV, JSON, Excel, API, or MCP access to 2GIS data.

At a glance

  • Primary job: Search 2GIS by keyword and city, then export public place rows.
  • Input: Search queries, a location, optional public 2GIS URLs, filters, and a result limit.
  • Output: One dataset row per public 2GIS place plus diagnostic KV records.
  • Best for: Lead generation, competitor research, branch discovery, category monitoring, and enrichment pipelines.

Common workflows

  • Lead generation: Search categories such as restaurants, dentists, clinics, cafes, repair shops, or hotels in a target city.
  • Market research: Compare categories, ratings, addresses, and review counts across neighborhoods or regions.
  • Monitoring: Schedule repeat runs for the same query/location and compare new rows or rating changes.
  • Automation: Send dataset exports to a CRM, spreadsheet, webhook, API client, or MCP-enabled AI workflow.

What data can you extract?

Field Description
id 2GIS place or branch identifier when available.
title Public place name.
url Public 2GIS place URL.
query Search query that produced the row.
locationQuery City or region used for query searches.
domain 2GIS domain used for the source route.
address Public address text.
city Input city or region context.
rubrics / category Public category labels.
rating Visible rating value, when present.
reviewsCount Visible review/rating count, when present.
sourceStatus, sourceMode, blocked, emptyPage Diagnostics for source handling.
scrapedAt ISO timestamp for the row.

Example input

{
  "queries": ["Restaurants"],
  "locationQuery": "dubai",
  "domain": "2gis.ae",
  "language": "en",
  "maxItems": 10,
  "dedupeBy": "idOrUrl"
}

Example output

{
  "id": "70000001055149461",
  "title": "Laffah",
  "url": "https://2gis.ae/dubai/firm/70000001055149461",
  "query": "Restaurants",
  "locationQuery": "dubai",
  "domain": "2gis.ae",
  "address": "Flamingo Building, Sheikh Khalifa Bin Zayed road, Dubai",
  "city": "dubai",
  "category": "Arabic restaurant",
  "rating": 5,
  "reviewsCount": 45,
  "sourceStatus": "ok",
  "sourceMode": "http-static",
  "scrapedAt": "2026-07-22T13:03:04.000Z"
}

Tips for best results

  • Start small: Use maxItems: 10 until output quality and pricing are verified.
  • Choose the matching region: Use 2gis.ae for UAE routes, 2gis.kz for Kazakhstan, and 2gis.ru for Russia.
  • Keep searches focused: Specific categories and cities usually produce cleaner data than broad keywords.
  • Use public inputs: Account, dashboard, login, and business-management URLs are rejected.

API usage

Node.js:

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/2gis-places-scraper").call({
  queries: ["Restaurants"],
  locationQuery: "dubai",
  domain: "2gis.ae",
  maxItems: 10
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/2gis-places-scraper").call(run_input={
    "queries": ["Restaurants"],
    "locationQuery": "dubai",
    "domain": "2gis.ae",
    "maxItems": 10,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~2gis-places-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries":["Restaurants"],"locationQuery":"dubai","domain":"2gis.ae","maxItems":10}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/2gis-places-scraper"
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/2gis-places-scraper"
    }
  }
}

Example prompt: "Run 2GIS Places Scraper for restaurants in Dubai with maxItems 10 and summarize the highest-rated places."

Limits and caveats

  • Coverage: 2GIS availability, public page layout, language, and regional routes vary by country and city.
  • Freshness: Source data can change after a run finishes.
  • Optional fields: Some addresses, ratings, review counts, coordinates, or categories may be unavailable on public search pages.
  • Rate limits: Public endpoints may throttle large or frequent runs.

Legality and responsible use

Process only data that you are allowed to access. Follow website terms, Apify's terms, and applicable laws.

Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and one reproducible public URL.

Common questions

Questions and answers reused from the canonical actor README.

Can I export results?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.

Why are some fields empty?

Some 2GIS pages do not expose every field publicly. The Actor leaves unavailable fields empty instead of guessing.