# 2gis Place Search Scraper (`stealth_mode/2gis-place-search-scraper`) Actor

Scrape detailed business and location information from 2GIS across 22+ regions and countries. Extract addresses, reviews, contact info, photos, and 25+ fields per place — ideal for location intelligence, market research, and business analytics.

- **URL**: https://apify.com/stealth\_mode/2gis-place-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 2GIS Places Search Scraper: Extract Local Business Data Globally

***

### What Is 2GIS?

2GIS is a leading online mapping and local search platform operating across Russia, Central Asia, the Middle East, and beyond — covering 22 countries including Russia, Kazakhstan, UAE, Saudi Arabia, Czechia, Italy, Chile, and more. It hosts millions of business listings, from restaurants and hotels to shops and services, with user reviews, photos, schedules, and detailed metadata. Manually extracting this geolocation data at scale is inefficient; the **2GIS Places Search Scraper** automates discovery and collection, delivering structured business intelligence instantly.

***

### Overview

The **2GIS Places Search Scraper** extracts comprehensive business and location data from 2GIS search results and detail pages across all supported regions. It is purpose-built for:

- **Location intelligence professionals** mapping markets and competition
- **Business researchers** building datasets of service providers by category and region
- **Real estate analysts** studying commercial landscapes and foot traffic potential
- **Developers** integrating local business data into mapping or aggregation platforms
- **Marketing teams** identifying prospects and contact opportunities

The scraper offers two flexible input modes: scrape by direct URLs or by search filters. Its key strengths include multi-region support, rich output fields, and intelligent filtering options (by website, photo availability, rating).

***

### Input Format: Two Operating Modes

#### Mode 1: Scrape by URLs

Provide direct links to 2GIS search results or place pages:

```json
{
  "urls": [
    "https://2gis.ae/dubai/search/hotel/filters/sort%3Drating%3Bbound%3Bhas_site%3Bhas_photos?m=55.33842%2C24.448456%2F9.64"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
```

| Parameter | Type | Description |
|---|---|---|
| `urls` | array | Direct links to 2GIS search result pages or location detail pages. Paste URLs as-is from your browser. |
| `ignore_url_failures` | boolean | If `true`, skips failed URLs and continues; if `false`, stops on error. |
| `max_items_per_url` | integer | Maximum number of place records to extract per URL (e.g., `50`). |

#### Mode 2: Scrape by Search Filters

Search for places using keywords, region, location, and optional filters:

```json
{
  "region": "ae",
  "location": "dubai",
  "geo": "55.33842,24.448456/9.64",
  "keyword": "hotel",
  "sort_by": "rating",
  "on_map": true,
  "has_website": true,
  "has_photo": true,
  "page": 1,
  "max_items_per_url": 50
}
```

| Parameter | Type | Options / Description |
|---|---|---|
| `region` | string | Two-letter country code: `ru`, `by`, `ua`, `md`, `kz`, `kg`, `uz`, `tj`, `am`, `az`, `ge`, `ae`, `sa`, `bh`, `qa`, `om`, `kw`, `cy`, `cz`, `it`, `cl`, `ng` |
| `location` | string | City, postal code, or state name (e.g., `dubai`, `moscow`) |
| `geo` | string | Geographic coordinates in format `latitude,longitude/zoom` (e.g., `55.33842,24.448456/9.64`) — narrows search to a specific map area |
| `keyword` | string | What to search for (e.g., `hotel`, `restaurant`, `pharmacy`) |
| `sort_by` | string | `rating` (sort by user ratings) or empty string (relevance) |
| `on_map` | boolean | If `true`, only places visible on the map are returned |
| `has_website` | boolean | If `true`, only places with a website are included |
| `has_photo` | boolean | If `true`, only places with photos are returned |
| `page` | integer | Start page number (e.g., `1`) for pagination |
| `max_items_per_url` | integer | Maximum results per search (e.g., `50`) |

> **Tip:** Use `geo` coordinates to focus on specific cities or regions when searching. Omit `urls` if using search filters; omit search filters if using direct URLs.

***

### Output Format: 25+ Data Fields

**Sample output**

```json
{
  "address": {
    "building_id": "70030076147530870",
    "building_name": "Vida Creek Harbour Hotel",
    "components": [
      {
        "number": "96",
        "street": "Ras Al Khor road",
        "street_id": "13933750081556805",
        "type": "street_number"
      }
    ],
    "makani": "33167 88724"
  },
  "address_comment": null,
  "address_name": "Vida Creek Harbour Hotel, 96, Ras Al Khor road",
  "adm_div": [
    {
      "id": "14",
      "name": "UAE",
      "type": "country"
    },
    {
      "id": "70030076147409277",
      "name": "Dubai Emirate",
      "type": "region"
    },
    {
      "id": "70030076912022795",
      "name": "Dubai Municipality",
      "type": "district_area"
    },
    {
      "city_alias": "dubai",
      "flags": {
        "is_default": true,
        "is_region_center": true
      },
      "id": "13933634117435393",
      "is_default": true,
      "name": "Dubai",
      "type": "city"
    },
    {
      "id": "13934059319208593",
      "name": "Ras Al Khor",
      "type": "division"
    },
    {
      "id": "70030076148380930",
      "name": "Al Kheeran First",
      "type": "district"
    }
  ],
  "attribute_groups": [
    {
      "attributes": [
        {
          "id": "70000201006748353",
          "name": "Room rates 380–450 AED",
          "tag": "hotel_price"
        },
        {
          "id": "70000201006749308",
          "name": "Standard",
          "tag": "hotel_apartment_standard"
        },
        {
          "id": "70000201006749309",
          "name": "Deluxe",
          "tag": "hotel_apartment_deluxe"
        },
        {
          "id": "70000201006748224",
          "name": "Free internet in the hotel",
          "tag": "hotel_internet_free"
        },
        {
          "id": "70000201006748731",
          "name": "Free internet in the rooms",
          "tag": "hotel_room_internet_free"
        },
        {
          "id": "70000201006748229",
          "name": "4 stars",
          "tag": "hotel_class_4"
        },
        {
          "id": "70000201006748234",
          "name": "Rooms for smokers",
          "tag": "hotel_smoking_partly_allowed"
        },
        {
          "id": "70000201006748208",
          "name": "Outdoor pool",
          "tag": "hotel_details_swimming_pool"
        },
        {
          "id": "70000201006748200",
          "name": "Pets allowed",
          "tag": "hotel_details_animals"
        },
        {
          "id": "70000201006748216",
          "name": "Gym",
          "tag": "hotel_details_fitness_room"
        },
        {
          "id": "70000201006748202",
          "name": "Laundry",
          "tag": "hotel_details_laundry"
        },
        {
          "id": "70000201006752116",
          "name": "Balcony",
          "tag": "hotel_details_balcony"
        },
        {
          "id": "70000201006749294",
          "name": "Conference Room",
          "tag": "hotel_details_conference_room"
        },
        {
          "id": "70000201006748205",
          "name": "Currency exchange",
          "tag": "hotel_details_exchanger"
        },
        {
          "id": "70000201006748217",
          "name": "Parking",
          "tag": "hotel_details_parking"
        },
        {
          "id": "70000201006748210",
          "name": "Beauty salon",
          "tag": "hotel_details_beauty_salon"
        },
        {
          "id": "70000201006748203",
          "name": "Luggage storage",
          "tag": "hotel_details_baggage_storage"
        },
        {
          "id": "70000201006752121",
          "name": "Lockers",
          "tag": "hotel_details_lockers"
        },
        {
          "id": "70000201006752122",
          "name": "Concierge Services",
          "tag": "hotel_details_concierge_services"
        },
        {
          "id": "70000201006752125",
          "name": "Copy and Printing Services",
          "tag": "hotel_details_copy_and_printing_services"
        },
        {
          "id": "70000201006752127",
          "name": "TV with Cable",
          "tag": "hotel_details_TV_with_cable"
        },
        {
          "id": "70000201006752129",
          "name": "Telephone & Fax",
          "tag": "hotel_details_telephone_fax"
        },
        {
          "id": "70000201006752130",
          "name": "Bidet",
          "tag": "hotel_details_bidet"
        },
        {
          "id": "70000201006752131",
          "name": "Free Toiletries",
          "tag": "hotel_details_free_toiletries"
        },
        {
          "id": "70000201006752132",
          "name": "Hairdryer",
          "tag": "hotel_details_hairdryer"
        },
        {
          "id": "70000201006752133",
          "name": "Bath Tub",
          "tag": "hotel_details_bath_tub"
        },
        {
          "id": "70000201006756398",
          "name": "Wedding venues",
          "tag": "hotel_details_weddingvenues"
        },
        {
          "id": "70000201006748351",
          "name": "286 rooms",
          "tag": "hotel_rooms_count"
        }
      ],
      "icon_url": "https://disk.2gis.com/rubricator/hotels034b967873b09c77379059b49cf90b6e.svg",
      "is_context": false,
      "is_primary": true,
      "name": "Places to stay",
      "rubric_ids": [
        "269",
        "214",
        "547",
        "111005",
        "23469",
        "52681",
        "19487"
      ]
    }
  ],
  "city_alias": "dubai",
  "dates": {
    "created_at": "2019-04-15T00:00:00Z",
    "updated_at": "2025-10-30T09:21:43Z"
  },
  "email_for_sending": {
    "allowed": true
  },
  "external_content": [
    {
      "count": 64,
      "main_photo_url": "https://i8.photo.2gis.com/main/branch/99/70000001047489995/common",
      "subtype": "common",
      "type": "photo_album"
    }
  ],
  "flags": {
    "photos": true
  },
  "has_ads_model": false,
  "has_apartments_info": false,
  "has_discount": false,
  "has_goods": false,
  "has_pinned_goods": false,
  "has_realty": false,
  "id": "70000001047489995",
  "is_promoted": false,
  "links": {
    "branches": {
      "count": 11
    },
    "database_entrances": [
      {
        "geometry": {
          "normals": [
            "LINESTRING(54.344107 25.212898,55.34408 25.205481)"
          ],
          "points": [
            "POINT(55.344079963868 25.205481473870488)"
          ],
          "vectors": [
            "LINESTRING(55.343981 25.205482,55.34408 25.205481)"
          ]
        },
        "id": "70030076193333240",
        "is_primary": true,
        "is_visible_on_map": true
      }
    ],
    "entrances": [
      {
        "geometry": {
          "normals": [
            "LINESTRING(54.344107 25.212898,55.34408 25.205481)"
          ],
          "points": [
            "POINT(55.344079963868 25.205481473870488)"
          ],
          "vectors": [
            "LINESTRING(55.343981 25.205482,55.34408 25.205481)"
          ]
        },
        "id": "70030076193333240",
        "is_primary": true,
        "is_visible_on_map": true
      }
    ],
    "landmarks": [
      {
        "azimuth": 163,
        "distance": 340,
        "id": "70030076147804260",
        "name": "Address Grand Creek Harbour Hotel & Residences 1",
        "type": "building"
      },
      {
        "azimuth": 82,
        "distance": 200,
        "id": "70030076216375740",
        "name": "Creek Marina",
        "subtype": "place",
        "type": "adm_div"
      },
      {
        "azimuth": 332,
        "distance": 20,
        "id": "70000001044483103",
        "name": "Soulgreen Dubai, restaurant",
        "type": "branch"
      }
    ],
    "nearest_parking": [
      {
        "id": "70030076778417611"
      },
      {
        "id": "70030076925801001"
      },
      {
        "id": "70030076454959451"
      }
    ],
    "nearest_stations": [
      {
        "distance": 490,
        "id": "70030076389836930",
        "name": "Dubai Creek Harbour Marine Transport Station",
        "route_types": [
          "river_transport"
        ]
      }
    ]
  },
  "locale": "en_AE",
  "name": "Vida Creek Harbour, hotel",
  "name_ex": {
    "extension": "hotel",
    "primary": "Vida Creek Harbour"
  },
  "org": {
    "branch_count": 5,
    "extension": "hotels and resorts",
    "id": "70000001047489994",
    "name": "Vida, hotels and resorts",
    "primary": "Vida"
  },
  "poi_category": "hotel",
  "point": {
    "lat": 25.205675,
    "lon": 55.34397
  },
  "region_id": "99",
  "reviews": {
    "general_rating": 4.9,
    "general_review_count": 13,
    "general_review_count_with_stars": 162,
    "is_reviewable": false,
    "is_reviewable_on_flamp": true,
    "items": [
      {
        "is_reviewable": true,
        "tag": "2gis_reviews"
      },
      {
        "is_reviewable": true,
        "tag": "foursquare"
      }
    ],
    "org_rating": 4.9,
    "org_review_count": 69,
    "org_review_count_with_stars": 545
  },
  "rubrics": [
    {
      "alias": "hotels",
      "id": "269",
      "kind": "primary",
      "name": "Hotels",
      "parent_id": "8",
      "short_id": 269
    }
  ],
  "schedule": {
    "fri": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "mon": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "sat": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "sun": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "thu": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "tue": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "wed": {
      "working_hours": [
        {
          "from": "00:00",
          "to": "24:00"
        }
      ]
    },
    "is_24x7": true
  },
  "search_attributes": {
    "relevance": 489.17657470703125,
    "detection_type": 70,
    "external_source": 0
  },
  "segment_id": "0",
  "timezone_offset": 240,
  "type": "branch",
  "from_url": "https://2gis.ae/dubai/search/hotel/page/1/filters/sort=rating;bound;has_site;has_photos?m=55.33842%2C24.448456%2F9.64"
}
```

Each place record contains rich business and location intelligence:

#### Identification & Naming

| Field | Meaning |
|---|---|
| `ID` | Unique 2GIS identifier for the place |
| `Name` | Primary business or location name |
| `Extended Name` | Full name with additional context (e.g., brand, branch info) |
| `Address Name` | Formatted address as shown on the listing |
| `City Alias` | City name or code used internally |

#### Location & Geography

| Field | Meaning |
|---|---|
| `Address` | Full street address and postal details |
| `Address Comment` | Additional address notes (e.g., "2nd floor," "next to café") |
| `Administrative Divisions` | Region, district, or state boundaries |
| `Point` | Latitude/longitude coordinates for mapping |
| `Timezone Offset` | UTC offset for the location's timezone |
| `Region ID` | Numeric identifier for the region/country |

#### Business Information

| Field | Meaning |
|---|---|
| `Organization` | Company name and registration info |
| `POI Category` | Type of place (e.g., hotel, restaurant, shop) |
| `Rubrics` | Category tags and classifications |
| `Segment ID` | Business segment classification |
| `Type` | Entity type (e.g., business, landmark) |

#### Operations & Contact

| Field | Meaning |
|---|---|
| `Schedule` | Business hours and operation times |
| `Email for Sending` | Email address for direct contact or inquiries |
| `Links` | Website URLs, social media, or external profiles |
| `Dates` | Important dates (founding, last update, etc.) |

#### Content & Media

| Field | Meaning |
|---|---|
| `External Content` | Links to external photos, videos, or media |
| `Has Ads Model` | Whether the place runs paid advertising on 2GIS |
| `Has Photos` | Indicates if user photos are available |

#### Features & Attributes

| Field | Meaning |
|---|---|
| `Attribute Groups` | Grouped business features (WiFi, parking, delivery, etc.) |
| `Search Attributes` | Keywords and tags used in search indexing |
| `Flags` | Special markers (e.g., new, popular, promoted) |
| `Is Promoted` | Whether the listing has paid promotion active |
| `Has Discount` | Whether promotions or discounts are active |

#### Specialized Data

| Field | Meaning |
|---|---|
| `Has Apartments Info` | Real estate apartment listing data (if applicable) |
| `Has Realty` | Real estate property information available |
| `Has Goods` | Product catalog or goods listings available |
| `Has Pinned Goods` | Featured product or service listings |
| `Reviews` | User review count, ratings, and summaries |
| `Locale` | Language code of the listing |

***

### How to Use

#### Quick Start (URL Mode)

1. **Find your search** — Go to 2GIS, search for places (e.g., hotels in Dubai), apply filters
2. **Copy the URL** — Copy the full browser URL from the search results page
3. **Paste into scraper** — Add URLs to the `urls` array in the input JSON
4. **Set limits** — Configure `max_items_per_url` (e.g., `50` places per URL)
5. **Run** — Start the scraper and monitor progress
6. **Export** — Download results as JSON, CSV, or Excel

#### Advanced (Search Filter Mode)

1. **Identify region** — Choose a country code (e.g., `ae` for UAE)
2. **Set location** — Enter city name or geo coordinates
3. **Enter keyword** — Type what you're searching for (e.g., `hotel`, `pharmacy`)
4. **Apply filters** — Toggle `has_website`, `has_photo`, or `on_map` as needed
5. **Sort & paginate** — Choose sort order and starting page
6. **Run** — Execute the search and collect results across all pages

**Troubleshooting:**

- If geo coordinates yield no results, verify format: `latitude,longitude/zoom`
- Use `ignore_url_failures: true` for bulk runs to skip broken URLs
- For large datasets, run multiple scrapes with different keywords or regions

***

### Use Cases & Business Value

- **Competitive mapping:** Track competitor locations, hours, and review ratings
- **Market research:** Analyze business density and service categories by city
- **Lead generation:** Build prospect lists of businesses with websites and contact info
- **Expansion planning:** Identify market gaps and opportunities in specific regions
- **Data enrichment:** Combine 2GIS data with your CRM or business intelligence platform

The 2GIS Places Search Scraper turns location data into actionable intelligence, eliminating manual research and enabling data-driven decisions at scale.

***

### Conclusion

The **2GIS Places Search Scraper** is the fastest, most reliable way to extract business and location data from 2GIS across 22+ global markets. Whether researching competition, building lead lists, or mapping local markets, the scraper delivers rich, structured data with 25+ fields per place. Start a search today and gain instant access to geolocation intelligence that fuels better business decisions.

> **Legal note:** Always ensure your use of scraped data complies with 2GIS Terms of Service and applicable data protection laws in your region.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `keyword` (type: `string`):

Enter the keyword to search for items

## `region` (type: `string`):

Enter the region to search for items

## `location` (type: `string`):

Enter the location (City, Postal Code, State) to search for items

## `geo` (type: `string`):

Enter the geo to search for items (Format: latitude,longitude/zoom - e.g: 55.33842,24.448456/9.64)

## `sort_by` (type: `string`):

Sort items by options

## `on_map` (type: `boolean`):

if true, only items on map will be scraped

## `has_website` (type: `boolean`):

if true, only items with website will be scraped

## `has_photo` (type: `boolean`):

if true, only items with photo will be scraped

## `page` (type: `integer`):

Specify the page number to start scraping from

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://2gis.ae/dubai/search/hotel/filters/sort%3Dopened_time%3Bbound%3Bhas_site%3Bhas_photos/geo/70030076149193895/54.344468%2C25.079995?m=55.33842%2C24.448456%2F9.64"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://2gis.ae/dubai/search/hotel/filters/sort%3Dopened_time%3Bbound%3Bhas_site%3Bhas_photos/geo/70030076149193895/54.344468%2C25.079995?m=55.33842%2C24.448456%2F9.64"
    ],
    "ignore_url_failures": true,
    "on_map": false,
    "has_website": false,
    "has_photo": false,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/2gis-place-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://2gis.ae/dubai/search/hotel/filters/sort%3Dopened_time%3Bbound%3Bhas_site%3Bhas_photos/geo/70030076149193895/54.344468%2C25.079995?m=55.33842%2C24.448456%2F9.64"],
    "ignore_url_failures": True,
    "on_map": False,
    "has_website": False,
    "has_photo": False,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/2gis-place-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://2gis.ae/dubai/search/hotel/filters/sort%3Dopened_time%3Bbound%3Bhas_site%3Bhas_photos/geo/70030076149193895/54.344468%2C25.079995?m=55.33842%2C24.448456%2F9.64"
  ],
  "ignore_url_failures": true,
  "on_map": false,
  "has_website": false,
  "has_photo": false,
  "max_items_per_url": 20
}' |
apify call stealth_mode/2gis-place-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stealth_mode/2gis-place-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dYrup8CpbhFMCU5hA/builds/lf7zRwoyJdB2l9PeF/openapi.json
