{
  "data": {
    "id": "VmwSyA6i1GQqfVvgJ",
    "actId": "egAceUslWJ9ezEaPL",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-27T06:49:17.632Z",
    "finishedAt": "2026-10-27T06:49:21.961Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 4236,
      "runTimeSecs": 4.236,
      "computeUnits": 0.004706666666666666,
      "imageSizeBytes": 332656640
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"2GIS Business Directory Input\",\n  \"description\": \"Find businesses in the 2GIS directory by search term, city, point or map area, or read specific search, place, organization and building links. No account, API key or proxy is needed.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to read: search the directory, expand 2GIS links, or look up place IDs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"urls\",\n        \"ids\"\n      ],\n      \"enumTitles\": [\n        \"Search by keyword + city/area\",\n        \"Read 2GIS links\",\n        \"Look up place IDs\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search terms\",\n      \"type\": \"array\",\n      \"description\": \"What to look for, one term per line (mode=search). Example: coffee, restaurant, стоматология. Use the local language for better coverage.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"coffee\"\n      ]\n    },\n    \"locationQuery\": {\n      \"title\": \"City\",\n      \"type\": \"string\",\n      \"description\": \"City or area to search in (mode=search), for example Moscow, Алматы or Dubai. Can be a local or English name.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"Moscow\"\n    },\n    \"cities\": {\n      \"title\": \"More cities\",\n      \"type\": \"array\",\n      \"description\": \"Optional additional cities. Every search term runs in every city (mode=search).\",\n      \"editor\": \"stringList\"\n    },\n    \"cityIds\": {\n      \"title\": \"City IDs\",\n      \"type\": \"array\",\n      \"description\": \"Optional exact 2GIS city IDs. Use instead of city names when you already know the ID.\",\n      \"editor\": \"stringList\"\n    },\n    \"startUrls\": {\n      \"title\": \"2GIS links\",\n      \"type\": \"array\",\n      \"description\": \"Search, place (/firm/), organization (/branches/) or building (/inside/) links, go.2gis.com short links, or bare place IDs (mode=urls).\",\n      \"editor\": \"stringList\"\n    },\n    \"placeIds\": {\n      \"title\": \"Place IDs\",\n      \"type\": \"array\",\n      \"description\": \"2GIS branch IDs to read directly (mode=ids).\",\n      \"editor\": \"stringList\"\n    },\n    \"latitude\": {\n      \"title\": \"Latitude\",\n      \"type\": \"number\",\n      \"description\": \"Center latitude for an area search (mode=search). Set together with longitude; overrides the city center.\",\n      \"minimum\": -90,\n      \"maximum\": 90\n    },\n    \"longitude\": {\n      \"title\": \"Longitude\",\n      \"type\": \"number\",\n      \"description\": \"Center longitude for an area search (mode=search). Set together with latitude.\",\n      \"minimum\": -180,\n      \"maximum\": 180\n    },\n    \"radiusMeters\": {\n      \"title\": \"Radius (meters)\",\n      \"type\": \"integer\",\n      \"description\": \"Search radius around latitude/longitude, in meters (1–50000).\",\n      \"editor\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 50000,\n      \"default\": 20000\n    },\n    \"bbox\": {\n      \"title\": \"Map area\",\n      \"type\": \"string\",\n      \"description\": \"Optional rectangle as lon1,lat1,lon2,lat2. Overrides city and point search.\",\n      \"editor\": \"textfield\"\n    },\n    \"country\": {\n      \"title\": \"Country site\",\n      \"type\": \"string\",\n      \"description\": \"2GIS country site. Leave on Auto-detect to derive it from the city or link.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"auto\",\n        \"ru\",\n        \"kz\",\n        \"ae\",\n        \"kg\",\n        \"uz\",\n        \"by\",\n        \"az\",\n        \"am\",\n        \"ge\",\n        \"tj\",\n        \"cy\",\n        \"cz\",\n        \"it\",\n        \"cl\"\n      ],\n      \"enumTitles\": [\n        \"Auto-detect\",\n        \"Russia (2gis.ru)\",\n        \"Kazakhstan (2gis.kz)\",\n        \"UAE (2gis.ae)\",\n        \"Kyrgyzstan (2gis.kg)\",\n        \"Uzbekistan (2gis.uz)\",\n        \"Belarus (2gis.by)\",\n        \"Azerbaijan (2gis.az)\",\n        \"Armenia (2gis.am)\",\n        \"Georgia (2gis.ge)\",\n        \"Tajikistan (2gis.tj)\",\n        \"Cyprus (2gis.com.cy)\",\n        \"Czechia (2gis.cz)\",\n        \"Italy (2gis.it)\",\n        \"Chile (2gis.cl)\"\n      ],\n      \"default\": \"auto\"\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Language of names and content returned by 2GIS. Auto uses the country site's default.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"auto\",\n        \"ru_RU\",\n        \"ru_KZ\",\n        \"en_RU\",\n        \"en_AE\",\n        \"ar_AE\",\n        \"kk_KZ\",\n        \"ky_KG\",\n        \"uz_UZ\",\n        \"az_AZ\",\n        \"hy_AM\",\n        \"ka_GE\",\n        \"tg_TJ\",\n        \"cs_CZ\",\n        \"it_IT\",\n        \"es_CL\",\n        \"en_CY\"\n      ],\n      \"enumTitles\": [\n        \"Auto\",\n        \"Russian (Russia)\",\n        \"Russian (Kazakhstan)\",\n        \"English (Russia)\",\n        \"English (UAE)\",\n        \"Arabic (UAE)\",\n        \"Kazakh\",\n        \"Kyrgyz\",\n        \"Uzbek\",\n        \"Azerbaijani\",\n        \"Armenian\",\n        \"Georgian\",\n        \"Tajik\",\n        \"Czech\",\n        \"Italian\",\n        \"Spanish (Chile)\",\n        \"English (Cyprus)\"\n      ],\n      \"default\": \"auto\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max places\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of places per search term + city/area combination.\",\n      \"editor\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"default\": 50,\n      \"prefill\": 3\n    },\n    \"sortBy\": {\n      \"title\": \"Sort by\",\n      \"type\": \"string\",\n      \"description\": \"Order of search results. Distance needs a latitude/longitude or map area.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"rating\",\n        \"distance\",\n        \"flamp_rating\",\n        \"creation_time\",\n        \"opened_time\",\n        \"name\"\n      ],\n      \"enumTitles\": [\n        \"Relevance\",\n        \"Rating (highest first)\",\n        \"Distance (nearest first)\",\n        \"Flamp rating\",\n        \"Newest branch\",\n        \"Recently opened\",\n        \"Name (A–Z)\"\n      ],\n      \"default\": \"relevance\"\n    },\n    \"rubricIds\": {\n      \"title\": \"Category IDs\",\n      \"type\": \"array\",\n      \"description\": \"Only places in these 2GIS categories (rubric IDs), for example 162 for coffee shops.\",\n      \"editor\": \"stringList\"\n    },\n    \"districtIds\": {\n      \"title\": \"District IDs\",\n      \"type\": \"array\",\n      \"description\": \"Optional district IDs. Useful for splitting a large city into smaller searches.\",\n      \"editor\": \"stringList\"\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"number\",\n      \"description\": \"Keep only places rated at least this value (0–5).\",\n      \"minimum\": 0,\n      \"maximum\": 5\n    },\n    \"minReviews\": {\n      \"title\": \"Minimum reviews\",\n      \"type\": \"integer\",\n      \"description\": \"Keep only places with at least this many reviews.\",\n      \"minimum\": 0\n    },\n    \"websiteFilter\": {\n      \"title\": \"Website\",\n      \"type\": \"string\",\n      \"description\": \"Return all places, only places with a website, or only places without one.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"with\",\n        \"without\"\n      ],\n      \"enumTitles\": [\n        \"All places\",\n        \"With a website\",\n        \"Without a website\"\n      ],\n      \"default\": \"all\"\n    },\n    \"filterHasPhotos\": {\n      \"title\": \"Has photos only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places that have photos on 2GIS.\",\n      \"default\": false\n    },\n    \"filterOpenNow\": {\n      \"title\": \"Open now only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places open at the time of the run.\",\n      \"default\": false\n    },\n    \"filter24x7\": {\n      \"title\": \"Open 24/7 only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places open around the clock.\",\n      \"default\": false\n    },\n    \"filterHasGoods\": {\n      \"title\": \"Has goods/menu only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places that published goods or a menu.\",\n      \"default\": false\n    },\n    \"filterHasRating\": {\n      \"title\": \"Has rating only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places with a rating.\",\n      \"default\": false\n    },\n    \"filterHasReviews\": {\n      \"title\": \"Has reviews only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places with reviews.\",\n      \"default\": false\n    },\n    \"filterDelivery\": {\n      \"title\": \"Delivery only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places whose published attributes mention delivery.\",\n      \"default\": false\n    },\n    \"filterTakeaway\": {\n      \"title\": \"Takeaway only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places whose attributes mention takeaway or pickup.\",\n      \"default\": false\n    },\n    \"filterCardPayment\": {\n      \"title\": \"Card payment only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places whose attributes mention card payment.\",\n      \"default\": false\n    },\n    \"filterWifi\": {\n      \"title\": \"Wi-Fi only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return places whose attributes mention Wi-Fi.\",\n      \"default\": false\n    },\n    \"minAverageCheck\": {\n      \"title\": \"Minimum average check\",\n      \"type\": \"integer\",\n      \"description\": \"Keep only places whose published average check is at least this value, in local currency.\",\n      \"minimum\": 0\n    },\n    \"maxAverageCheck\": {\n      \"title\": \"Maximum average check\",\n      \"type\": \"integer\",\n      \"description\": \"Keep only places whose published average check is at most this value, in local currency.\",\n      \"minimum\": 0\n    },\n    \"skipAds\": {\n      \"title\": \"Skip promoted places\",\n      \"type\": \"boolean\",\n      \"description\": \"Drop paid/promoted search results.\",\n      \"default\": false\n    },\n    \"includeContacts\": {\n      \"title\": \"Include contacts\",\n      \"type\": \"boolean\",\n      \"description\": \"Add phones, websites, emails, social links and messengers.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeReviews\": {\n      \"title\": \"Include reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Add review texts to each place when 2GIS exposes them. Rating and review counts are always included.\",\n      \"default\": false\n    },\n    \"maxReviewsPerPlace\": {\n      \"title\": \"Max reviews per place\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum review texts per place when reviews are enabled (1–1000).\",\n      \"editor\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 10\n    },\n    \"reviewsSort\": {\n      \"title\": \"Review order\",\n      \"type\": \"string\",\n      \"description\": \"Order of review texts.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"date_created\",\n        \"date_edited\",\n        \"rating\"\n      ],\n      \"enumTitles\": [\n        \"Newest first\",\n        \"Recently edited\",\n        \"Highest rating\"\n      ],\n      \"default\": \"date_created\"\n    },\n    \"reviewsMinRating\": {\n      \"title\": \"Minimum review rating\",\n      \"type\": \"integer\",\n      \"description\": \"Keep only reviews with at least this star rating (1–5).\",\n      \"minimum\": 1,\n      \"maximum\": 5\n    },\n    \"reviewsWithAnswer\": {\n      \"title\": \"Reviews with a business reply\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only reviews that have an official business reply.\",\n      \"default\": false\n    },\n    \"reviewsSince\": {\n      \"title\": \"Reviews since\",\n      \"type\": \"string\",\n      \"description\": \"Keep only reviews created on or after this date (YYYY-MM-DD).\",\n      \"editor\": \"textfield\"\n    },\n    \"reviewsKeyword\": {\n      \"title\": \"Review keyword\",\n      \"type\": \"string\",\n      \"description\": \"Keep only reviews whose text contains this word or phrase.\",\n      \"editor\": \"textfield\"\n    },\n    \"includePhotos\": {\n      \"title\": \"Include photo URLs\",\n      \"type\": \"boolean\",\n      \"description\": \"Add photo URLs when 2GIS exposes them. A main photo URL and photo count are included whenever available.\",\n      \"default\": false\n    },\n    \"maxPhotosPerPlace\": {\n      \"title\": \"Max photos per place\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum photo URLs per place when photos are enabled (1–100).\",\n      \"editor\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"default\": 5\n    },\n    \"scrapeOrgBranches\": {\n      \"title\": \"Expand organization branches\",\n      \"type\": \"boolean\",\n      \"description\": \"When a place link is given, also return the other branches of the same organization.\",\n      \"default\": false\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# 2GIS Business Directory Extractor for CIS & Middle East\n\nScrape **2GIS** business listings across 14 country sites — Russia, Kazakhstan, the UAE, Kyrgyzstan, Uzbekistan, Belarus, Azerbaijan, Armenia, Georgia, Tajikistan, Cyprus, Czechia, Italy and Chile. Search by keyword and city or map area, or paste search, place, organization and building links. Records include the address and coordinates, categories, rating and review counts when published, opening hours, contacts, social links and published attributes, plus a main photo when 2GIS exposes one. No account, API key or proxy is needed.\n\n## What this actor does\n\n- **Three modes:** search by keyword + city/area, read 2GIS links, or look up place IDs.\n- **Rich place data:** phones, websites, emails, social links, messengers, hours, rating, review counts, attributes, nearest transit and a main photo.\n- **Organization and branch discovery:** expand an organization to its branches, or read every business inside a building.\n- **Real filters:** open now, 24/7, has a website, has photos, has goods/menu, has a rating or reviews, plus rating/review thresholds and category filters.\n- **Optional enrichment:** review texts with rating, author, date and business replies; photo URLs.\n- **Clean output:** every empty field is omitted, so records contain no nulls or placeholder values.\n\n## Output per place\n\n- `id` — 2GIS branch ID\n- `name`, `fullName`, `shortName`, `extension`, `type`, `recordType`\n- `url` — the place page on the correct 2GIS country site\n- `categories`, `categoryIds`, `rubrics[]`, `primaryCategory`\n- `address`, `addressComment`, `postcode`, `street`, `houseNumber`, `landmark`\n- `country`, `region`, `city`, `addressCity`, `district`, `districtArea`, `cityAlias`\n- `latitude`, `longitude`, `timezoneOffset`\n- `phones`, `phonesFormatted`, `website`, `websites`, `emails`, `socialLinks`, `messengers`\n- `rating`, `reviewCount`, `ratingCount`, `orgRating`, `orgReviewCount`, `ratingCategory`, `reviewProviders[]`\n- `workingHours[]`, `scheduleText`, `is24x7`, `isClosed`\n- `orgId`, `orgName`, `orgBranchCount`, `brand`\n- `attributes[]`, `attributeGroups[]`, `attributesByTag`\n- `photoCount` (when 2GIS returns it), `mainPhotoUrl`, `photos[]` (when photo URLs are enabled)\n- `reviews[]` — review text, rating, author, date, photos and business reply (when enabled)\n- `isPromoted`, `hasGoods`, `hasDiscount`, `delivery`\n- `nearestStations[]`, `nearestMetro[]`\n- `searchQuery`, `searchCity`, `scrapedAt`, `updatedAt`, `createdAt`, `description`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `urls` or `ids` |\n| `searchQueries` | array | – | Search terms (mode=search) |\n| `locationQuery` | string | – | City to search in (mode=search) |\n| `cities` | array | – | Additional cities; every term runs in each city |\n| `cityIds` | array | – | Exact 2GIS city IDs instead of names |\n| `startUrls` | array | – | Search, `/firm/`, `/branches/`, `/inside/` or short links (mode=urls) |\n| `placeIds` | array | – | Branch IDs (mode=ids) |\n| `latitude`, `longitude` | number | – | Center for a point search |\n| `radiusMeters` | integer | `20000` | Radius around the point (1–50000) |\n| `bbox` | string | – | Map rectangle as `lon1,lat1,lon2,lat2` |\n| `country` | string | `auto` | Country site: `ru`, `kz`, `ae`, `kg`, `uz`, `by`, `az`, `am`, `ge`, `tj`, `cy`, `cz`, `it`, `cl` |\n| `language` | string | `auto` | Content language, e.g. `ru_RU`, `ru_KZ`, `en_AE`, `kk_KZ` |\n| `maxItems` | integer | `50` | Max places per search term + city/area |\n| `sortBy` | string | `relevance` | `relevance`, `rating`, `distance`, `flamp_rating`, `creation_time`, `opened_time`, `name` |\n| `rubricIds` | array | – | Category IDs, e.g. `162` for coffee shops |\n| `districtIds` | array | – | District IDs for splitting large cities |\n| `minRating` | number | – | Keep places rated at least this value |\n| `minReviews` | integer | – | Keep places with at least this many reviews |\n| `websiteFilter` | string | `all` | `all`, `with` or `without` a website |\n| `filterHasPhotos` | boolean | false | Only places with photos |\n| `filterOpenNow` | boolean | false | Only places open now |\n| `filter24x7` | boolean | false | Only places open around the clock |\n| `filterHasGoods` | boolean | false | Only places with goods or a menu |\n| `filterHasRating` | boolean | false | Only places with a rating |\n| `filterHasReviews` | boolean | false | Only places with reviews |\n| `filterDelivery` | boolean | false | Only places whose attributes mention delivery |\n| `filterTakeaway` | boolean | false | Only places whose attributes mention takeaway |\n| `filterCardPayment` | boolean | false | Only places whose attributes mention card payment |\n| `filterWifi` | boolean | false | Only places whose attributes mention Wi-Fi |\n| `minAverageCheck`, `maxAverageCheck` | integer | – | Filter by published average check |\n| `skipAds` | boolean | false | Drop promoted results |\n| `includeContacts` | boolean | true | Add phones, websites, emails, socials and messengers |\n| `includeReviews` | boolean | false | Add review texts |\n| `maxReviewsPerPlace` | integer | `10` | Max review texts per place |\n| `reviewsSort` | string | `date_created` | `date_created`, `date_edited` or `rating` |\n| `reviewsMinRating` | integer | – | Keep reviews with at least this rating |\n| `reviewsWithAnswer` | boolean | false | Keep only reviews with a business reply |\n| `reviewsSince` | string | – | Keep reviews since `YYYY-MM-DD` |\n| `reviewsKeyword` | string | – | Keep reviews containing this word |\n| `includePhotos` | boolean | false | Add photo URLs |\n| `maxPhotosPerPlace` | integer | `5` | Max photo URLs per place |\n| `scrapeOrgBranches` | boolean | false | Expand a place link to its organization's branches |\n\n### Example: coffee shops in Moscow\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"coffee\"],\n  \"locationQuery\": \"Moscow\",\n  \"maxItems\": 25,\n  \"websiteFilter\": \"with\",\n  \"sortBy\": \"rating\"\n}\n```\n\n### Example: Dubai restaurants that are open now\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"restaurant\"],\n  \"locationQuery\": \"Dubai\",\n  \"filterOpenNow\": true,\n  \"includeContacts\": true,\n  \"maxItems\": 50\n}\n```\n\n### Example: read a place and its organization's branches\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\"https://2gis.ru/moscow/firm/70000001044357973\"],\n  \"scrapeOrgBranches\": true,\n  \"includeReviews\": true,\n  \"maxReviewsPerPlace\": 5\n}\n```\n\n### Example: every business inside a building\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\"https://2gis.ru/moscow/inside/4504235290707169\"],\n  \"maxItems\": 100\n}\n```\n\n## Use cases\n\n- **Local lead generation** — collect businesses by city and category with phone, website and email contacts.\n- **Market research** — compare category coverage, ratings and review volumes across cities and countries.\n- **Competitor tracking** — follow a chain's branches, addresses, hours and rating changes.\n- **Reputation monitoring** — export ratings, review counts and optional review texts with business replies.\n- **Directory enrichment** — fill missing contacts, coordinates and opening hours in your own listings.\n- **Coverage checks** — find businesses without a website, without photos or without reviews.\n\n## FAQ\n\n### Do I need a 2GIS account or API key?\n\nNo. The actor reads 2GIS's public directory data and needs no account, API key, cookie or proxy. Just choose a search term and a city.\n\n### Which countries are supported?\n\nRussia, Kazakhstan, the UAE, Kyrgyzstan, Uzbekistan, Belarus, Azerbaijan, Armenia, Georgia, Tajikistan, Cyprus, Czechia, Italy and Chile. The country site is detected automatically from a link or resolved from the city.\n\n### Why are some fields missing from a place?\n\n2GIS listings vary. A website, email, social link, photo or review is only included when the business has published it. Empty fields are omitted rather than filled with null or placeholder values.\n\n### What is the difference between `rating` and `orgRating`?\n\n`rating` belongs to the individual branch. `orgRating` and `orgReviewCount` aggregate the whole organization. `ratingCount` counts star votes, while `reviewCount` counts written reviews.\n\n### Do reviews and photos work for every place?\n\nRating and review counts are included whenever 2GIS publishes them. Review texts and photo URLs are optional and depend on what 2GIS exposes for that place. A main photo URL and an exact photo count are included when 2GIS returns them; places with no reviews or photos simply omit those fields.\n\n### How do I get more than the default number of places?\n\nRaise `maxItems`. For very large categories, split the search by district, category (`rubricIds`) or several narrower search terms. The run status message tells you if more places were available than were requested.\n\n### How do I search in Russian, Kazakh or Arabic?\n\nUse the local spelling in `searchQueries` and `locationQuery` (for example `кофейня` and `Москва`), or set `language` to the content language you want.\n\n### Is this affiliated with 2GIS?\n\nNo. This is a third-party actor that reads the public 2GIS directory. It is not affiliated with, endorsed by, or sponsored by 2GIS.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "2gis-business-directory-extractor-for-cis",
      "title": "2GIS Business Directory Extractor for CIS & Middle East",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "input": {
        "title": "2GIS Business Directory Input",
        "description": "Find businesses in the 2GIS directory by search term, city, point or map area, or read specific search, place, organization and building links. No account, API key or proxy is needed.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to read: search the directory, expand 2GIS links, or look up place IDs.",
            "editor": "select",
            "enum": [
              "search",
              "urls",
              "ids"
            ],
            "enumTitles": [
              "Search by keyword + city/area",
              "Read 2GIS links",
              "Look up place IDs"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for, one term per line (mode=search). Example: coffee, restaurant, стоматология. Use the local language for better coverage.",
            "editor": "stringList",
            "prefill": [
              "coffee"
            ]
          },
          "locationQuery": {
            "title": "City",
            "type": "string",
            "description": "City or area to search in (mode=search), for example Moscow, Алматы or Dubai. Can be a local or English name.",
            "editor": "textfield",
            "prefill": "Moscow"
          },
          "cities": {
            "title": "More cities",
            "type": "array",
            "description": "Optional additional cities. Every search term runs in every city (mode=search).",
            "editor": "stringList"
          },
          "cityIds": {
            "title": "City IDs",
            "type": "array",
            "description": "Optional exact 2GIS city IDs. Use instead of city names when you already know the ID.",
            "editor": "stringList"
          },
          "startUrls": {
            "title": "2GIS links",
            "type": "array",
            "description": "Search, place (/firm/), organization (/branches/) or building (/inside/) links, go.2gis.com short links, or bare place IDs (mode=urls).",
            "editor": "stringList"
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "2GIS branch IDs to read directly (mode=ids).",
            "editor": "stringList"
          },
          "latitude": {
            "title": "Latitude",
            "type": "number",
            "description": "Center latitude for an area search (mode=search). Set together with longitude; overrides the city center.",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "title": "Longitude",
            "type": "number",
            "description": "Center longitude for an area search (mode=search). Set together with latitude.",
            "minimum": -180,
            "maximum": 180
          },
          "radiusMeters": {
            "title": "Radius (meters)",
            "type": "integer",
            "description": "Search radius around latitude/longitude, in meters (1–50000).",
            "editor": "number",
            "minimum": 1,
            "maximum": 50000,
            "default": 20000
          },
          "bbox": {
            "title": "Map area",
            "type": "string",
            "description": "Optional rectangle as lon1,lat1,lon2,lat2. Overrides city and point search.",
            "editor": "textfield"
          },
          "country": {
            "title": "Country site",
            "type": "string",
            "description": "2GIS country site. Leave on Auto-detect to derive it from the city or link.",
            "editor": "select",
            "enum": [
              "auto",
              "ru",
              "kz",
              "ae",
              "kg",
              "uz",
              "by",
              "az",
              "am",
              "ge",
              "tj",
              "cy",
              "cz",
              "it",
              "cl"
            ],
            "enumTitles": [
              "Auto-detect",
              "Russia (2gis.ru)",
              "Kazakhstan (2gis.kz)",
              "UAE (2gis.ae)",
              "Kyrgyzstan (2gis.kg)",
              "Uzbekistan (2gis.uz)",
              "Belarus (2gis.by)",
              "Azerbaijan (2gis.az)",
              "Armenia (2gis.am)",
              "Georgia (2gis.ge)",
              "Tajikistan (2gis.tj)",
              "Cyprus (2gis.com.cy)",
              "Czechia (2gis.cz)",
              "Italy (2gis.it)",
              "Chile (2gis.cl)"
            ],
            "default": "auto"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of names and content returned by 2GIS. Auto uses the country site's default.",
            "editor": "select",
            "enum": [
              "auto",
              "ru_RU",
              "ru_KZ",
              "en_RU",
              "en_AE",
              "ar_AE",
              "kk_KZ",
              "ky_KG",
              "uz_UZ",
              "az_AZ",
              "hy_AM",
              "ka_GE",
              "tg_TJ",
              "cs_CZ",
              "it_IT",
              "es_CL",
              "en_CY"
            ],
            "enumTitles": [
              "Auto",
              "Russian (Russia)",
              "Russian (Kazakhstan)",
              "English (Russia)",
              "English (UAE)",
              "Arabic (UAE)",
              "Kazakh",
              "Kyrgyz",
              "Uzbek",
              "Azerbaijani",
              "Armenian",
              "Georgian",
              "Tajik",
              "Czech",
              "Italian",
              "Spanish (Chile)",
              "English (Cyprus)"
            ],
            "default": "auto"
          },
          "maxItems": {
            "title": "Max places",
            "type": "integer",
            "description": "Maximum number of places per search term + city/area combination.",
            "editor": "number",
            "minimum": 1,
            "maximum": 10000,
            "default": 50,
            "prefill": 3
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Order of search results. Distance needs a latitude/longitude or map area.",
            "editor": "select",
            "enum": [
              "relevance",
              "rating",
              "distance",
              "flamp_rating",
              "creation_time",
              "opened_time",
              "name"
            ],
            "enumTitles": [
              "Relevance",
              "Rating (highest first)",
              "Distance (nearest first)",
              "Flamp rating",
              "Newest branch",
              "Recently opened",
              "Name (A–Z)"
            ],
            "default": "relevance"
          },
          "rubricIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Only places in these 2GIS categories (rubric IDs), for example 162 for coffee shops.",
            "editor": "stringList"
          },
          "districtIds": {
            "title": "District IDs",
            "type": "array",
            "description": "Optional district IDs. Useful for splitting a large city into smaller searches.",
            "editor": "stringList"
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Keep only places rated at least this value (0–5).",
            "minimum": 0,
            "maximum": 5
          },
          "minReviews": {
            "title": "Minimum reviews",
            "type": "integer",
            "description": "Keep only places with at least this many reviews.",
            "minimum": 0
          },
          "websiteFilter": {
            "title": "Website",
            "type": "string",
            "description": "Return all places, only places with a website, or only places without one.",
            "editor": "select",
            "enum": [
              "all",
              "with",
              "without"
            ],
            "enumTitles": [
              "All places",
              "With a website",
              "Without a website"
            ],
            "default": "all"
          },
          "filterHasPhotos": {
            "title": "Has photos only",
            "type": "boolean",
            "description": "Only return places that have photos on 2GIS.",
            "default": false
          },
          "filterOpenNow": {
            "title": "Open now only",
            "type": "boolean",
            "description": "Only return places open at the time of the run.",
            "default": false
          },
          "filter24x7": {
            "title": "Open 24/7 only",
            "type": "boolean",
            "description": "Only return places open around the clock.",
            "default": false
          },
          "filterHasGoods": {
            "title": "Has goods/menu only",
            "type": "boolean",
            "description": "Only return places that published goods or a menu.",
            "default": false
          },
          "filterHasRating": {
            "title": "Has rating only",
            "type": "boolean",
            "description": "Only return places with a rating.",
            "default": false
          },
          "filterHasReviews": {
            "title": "Has reviews only",
            "type": "boolean",
            "description": "Only return places with reviews.",
            "default": false
          },
          "filterDelivery": {
            "title": "Delivery only",
            "type": "boolean",
            "description": "Only return places whose published attributes mention delivery.",
            "default": false
          },
          "filterTakeaway": {
            "title": "Takeaway only",
            "type": "boolean",
            "description": "Only return places whose attributes mention takeaway or pickup.",
            "default": false
          },
          "filterCardPayment": {
            "title": "Card payment only",
            "type": "boolean",
            "description": "Only return places whose attributes mention card payment.",
            "default": false
          },
          "filterWifi": {
            "title": "Wi-Fi only",
            "type": "boolean",
            "description": "Only return places whose attributes mention Wi-Fi.",
            "default": false
          },
          "minAverageCheck": {
            "title": "Minimum average check",
            "type": "integer",
            "description": "Keep only places whose published average check is at least this value, in local currency.",
            "minimum": 0
          },
          "maxAverageCheck": {
            "title": "Maximum average check",
            "type": "integer",
            "description": "Keep only places whose published average check is at most this value, in local currency.",
            "minimum": 0
          },
          "skipAds": {
            "title": "Skip promoted places",
            "type": "boolean",
            "description": "Drop paid/promoted search results.",
            "default": false
          },
          "includeContacts": {
            "title": "Include contacts",
            "type": "boolean",
            "description": "Add phones, websites, emails, social links and messengers.",
            "default": true,
            "prefill": true
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Add review texts to each place when 2GIS exposes them. Rating and review counts are always included.",
            "default": false
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "type": "integer",
            "description": "Maximum review texts per place when reviews are enabled (1–1000).",
            "editor": "number",
            "minimum": 1,
            "maximum": 1000,
            "default": 10
          },
          "reviewsSort": {
            "title": "Review order",
            "type": "string",
            "description": "Order of review texts.",
            "editor": "select",
            "enum": [
              "date_created",
              "date_edited",
              "rating"
            ],
            "enumTitles": [
              "Newest first",
              "Recently edited",
              "Highest rating"
            ],
            "default": "date_created"
          },
          "reviewsMinRating": {
            "title": "Minimum review rating",
            "type": "integer",
            "description": "Keep only reviews with at least this star rating (1–5).",
            "minimum": 1,
            "maximum": 5
          },
          "reviewsWithAnswer": {
            "title": "Reviews with a business reply",
            "type": "boolean",
            "description": "Keep only reviews that have an official business reply.",
            "default": false
          },
          "reviewsSince": {
            "title": "Reviews since",
            "type": "string",
            "description": "Keep only reviews created on or after this date (YYYY-MM-DD).",
            "editor": "textfield"
          },
          "reviewsKeyword": {
            "title": "Review keyword",
            "type": "string",
            "description": "Keep only reviews whose text contains this word or phrase.",
            "editor": "textfield"
          },
          "includePhotos": {
            "title": "Include photo URLs",
            "type": "boolean",
            "description": "Add photo URLs when 2GIS exposes them. A main photo URL and photo count are included whenever available.",
            "default": false
          },
          "maxPhotosPerPlace": {
            "title": "Max photos per place",
            "type": "integer",
            "description": "Maximum photo URLs per place when photos are enabled (1–100).",
            "editor": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 5
          },
          "scrapeOrgBranches": {
            "title": "Expand organization branches",
            "type": "boolean",
            "description": "When a place link is given, also return the other branches of the same organization.",
            "default": false
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "2GIS Business Directory Extractor for CIS & Middle East Output",
        "description": "Places from 2GIS country sites, including contacts, hours, ratings, review statistics, attributes, photos and location data.",
        "type": "object",
        "properties": {
          "results": {
            "type": "string",
            "title": "Results",
            "description": "All 2GIS place records from the run, in the default dataset.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "2GIS Business Directory Extractor for CIS & Middle East Output",
          "fields": {},
          "views": {
            "overview": {
              "title": "Places Overview",
              "transformation": {
                "fields": [
                  "id",
                  "name",
                  "fullName",
                  "shortName",
                  "extension",
                  "type",
                  "recordType",
                  "url",
                  "categories",
                  "categoryIds",
                  "primaryCategory",
                  "address",
                  "addressComment",
                  "postcode",
                  "street",
                  "houseNumber",
                  "landmark",
                  "country",
                  "region",
                  "city",
                  "addressCity",
                  "district",
                  "districtArea",
                  "latitude",
                  "longitude",
                  "timezoneOffset",
                  "phones",
                  "phonesFormatted",
                  "website",
                  "websites",
                  "emails",
                  "socialLinks",
                  "messengers",
                  "rating",
                  "reviewCount",
                  "ratingCount",
                  "orgRating",
                  "orgReviewCount",
                  "ratingCategory",
                  "workingHours",
                  "scheduleText",
                  "is24x7",
                  "isClosed",
                  "orgId",
                  "orgName",
                  "orgBranchCount",
                  "brand",
                  "attributes",
                  "attributeGroups",
                  "attributesByTag",
                  "photoCount",
                  "mainPhotoUrl",
                  "photos",
                  "reviews",
                  "isPromoted",
                  "hasGoods",
                  "hasDiscount",
                  "delivery",
                  "nearestStations",
                  "nearestMetro",
                  "searchQuery",
                  "searchCity",
                  "scrapedAt",
                  "updatedAt",
                  "createdAt",
                  "description"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "id": {
                    "label": "id",
                    "format": "text"
                  },
                  "name": {
                    "label": "name",
                    "format": "text"
                  },
                  "fullName": {
                    "label": "fullName",
                    "format": "text"
                  },
                  "shortName": {
                    "label": "shortName",
                    "format": "text"
                  },
                  "extension": {
                    "label": "extension",
                    "format": "text"
                  },
                  "type": {
                    "label": "type",
                    "format": "text"
                  },
                  "recordType": {
                    "label": "recordType",
                    "format": "text"
                  },
                  "url": {
                    "label": "url",
                    "format": "link"
                  },
                  "categories": {
                    "label": "categories",
                    "format": "text"
                  },
                  "categoryIds": {
                    "label": "categoryIds",
                    "format": "text"
                  },
                  "primaryCategory": {
                    "label": "primaryCategory",
                    "format": "text"
                  },
                  "address": {
                    "label": "address",
                    "format": "text"
                  },
                  "addressComment": {
                    "label": "addressComment",
                    "format": "text"
                  },
                  "postcode": {
                    "label": "postcode",
                    "format": "text"
                  },
                  "street": {
                    "label": "street",
                    "format": "text"
                  },
                  "houseNumber": {
                    "label": "houseNumber",
                    "format": "text"
                  },
                  "landmark": {
                    "label": "landmark",
                    "format": "text"
                  },
                  "country": {
                    "label": "country",
                    "format": "text"
                  },
                  "region": {
                    "label": "region",
                    "format": "text"
                  },
                  "city": {
                    "label": "city",
                    "format": "text"
                  },
                  "addressCity": {
                    "label": "addressCity",
                    "format": "text"
                  },
                  "district": {
                    "label": "district",
                    "format": "text"
                  },
                  "districtArea": {
                    "label": "districtArea",
                    "format": "text"
                  },
                  "latitude": {
                    "label": "latitude",
                    "format": "number"
                  },
                  "longitude": {
                    "label": "longitude",
                    "format": "number"
                  },
                  "timezoneOffset": {
                    "label": "timezoneOffset",
                    "format": "number"
                  },
                  "phones": {
                    "label": "phones",
                    "format": "text"
                  },
                  "phonesFormatted": {
                    "label": "phonesFormatted",
                    "format": "text"
                  },
                  "website": {
                    "label": "website",
                    "format": "link"
                  },
                  "websites": {
                    "label": "websites",
                    "format": "text"
                  },
                  "emails": {
                    "label": "emails",
                    "format": "text"
                  },
                  "socialLinks": {
                    "label": "socialLinks",
                    "format": "text"
                  },
                  "messengers": {
                    "label": "messengers",
                    "format": "text"
                  },
                  "rating": {
                    "label": "rating",
                    "format": "number"
                  },
                  "reviewCount": {
                    "label": "reviewCount",
                    "format": "number"
                  },
                  "ratingCount": {
                    "label": "ratingCount",
                    "format": "number"
                  },
                  "orgRating": {
                    "label": "orgRating",
                    "format": "number"
                  },
                  "orgReviewCount": {
                    "label": "orgReviewCount",
                    "format": "number"
                  },
                  "ratingCategory": {
                    "label": "ratingCategory",
                    "format": "text"
                  },
                  "workingHours": {
                    "label": "workingHours",
                    "format": "text"
                  },
                  "scheduleText": {
                    "label": "scheduleText",
                    "format": "text"
                  },
                  "is24x7": {
                    "label": "is24x7",
                    "format": "text"
                  },
                  "isClosed": {
                    "label": "isClosed",
                    "format": "text"
                  },
                  "orgId": {
                    "label": "orgId",
                    "format": "text"
                  },
                  "orgName": {
                    "label": "orgName",
                    "format": "text"
                  },
                  "orgBranchCount": {
                    "label": "orgBranchCount",
                    "format": "number"
                  },
                  "brand": {
                    "label": "brand",
                    "format": "text"
                  },
                  "attributes": {
                    "label": "attributes",
                    "format": "text"
                  },
                  "attributeGroups": {
                    "label": "attributeGroups",
                    "format": "text"
                  },
                  "attributesByTag": {
                    "label": "attributesByTag",
                    "format": "text"
                  },
                  "photoCount": {
                    "label": "photoCount",
                    "format": "number"
                  },
                  "mainPhotoUrl": {
                    "label": "mainPhotoUrl",
                    "format": "link"
                  },
                  "photos": {
                    "label": "photos",
                    "format": "text"
                  },
                  "reviews": {
                    "label": "reviews",
                    "format": "text"
                  },
                  "isPromoted": {
                    "label": "isPromoted",
                    "format": "text"
                  },
                  "hasGoods": {
                    "label": "hasGoods",
                    "format": "text"
                  },
                  "hasDiscount": {
                    "label": "hasDiscount",
                    "format": "text"
                  },
                  "delivery": {
                    "label": "delivery",
                    "format": "text"
                  },
                  "nearestStations": {
                    "label": "nearestStations",
                    "format": "text"
                  },
                  "nearestMetro": {
                    "label": "nearestMetro",
                    "format": "text"
                  },
                  "searchQuery": {
                    "label": "searchQuery",
                    "format": "text"
                  },
                  "searchCity": {
                    "label": "searchCity",
                    "format": "text"
                  },
                  "scrapedAt": {
                    "label": "scrapedAt",
                    "format": "text"
                  },
                  "updatedAt": {
                    "label": "updatedAt",
                    "format": "text"
                  },
                  "createdAt": {
                    "label": "createdAt",
                    "format": "text"
                  },
                  "description": {
                    "label": "description",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      },
      "description": "Find businesses across 14 2GIS country sites. Search by keyword and city or area, or read place, organization and building links. Returns contacts, hours, ratings, review stats, attributes, photos and location data.",
      "readme": "# 2GIS Business Directory Extractor for CIS & Middle East\n\nScrape **2GIS** business listings across 14 country sites — Russia, Kazakhstan, the UAE, Kyrgyzstan, Uzbekistan, Belarus, Azerbaijan, Armenia, Georgia, Tajikistan, Cyprus, Czechia, Italy and Chile. Search by keyword and city or map area, or paste search, place, organization and building links. Records include the address and coordinates, categories, rating and review counts when published, opening hours, contacts, social links and published attributes, plus a main photo when 2GIS exposes one. No account, API key or proxy is needed.\n\n## What this actor does\n\n- **Three modes:** search by keyword + city/area, read 2GIS links, or look up place IDs.\n- **Rich place data:** phones, websites, emails, social links, messengers, hours, rating, review counts, attributes, nearest transit and a main photo.\n- **Organization and branch discovery:** expand an organization to its branches, or read every business inside a building.\n- **Real filters:** open now, 24/7, has a website, has photos, has goods/menu, has a rating or reviews, plus rating/review thresholds and category filters.\n- **Optional enrichment:** review texts with rating, author, date and business replies; photo URLs.\n- **Clean output:** every empty field is omitted, so records contain no nulls or placeholder values.\n\n## Output per place\n\n- `id` — 2GIS branch ID\n- `name`, `fullName`, `shortName`, `extension`, `type`, `recordType`\n- `url` — the place page on the correct 2GIS country site\n- `categories`, `categoryIds`, `rubrics[]`, `primaryCategory`\n- `address`, `addressComment`, `postcode`, `street`, `houseNumber`, `landmark`\n- `country`, `region`, `city`, `addressCity`, `district`, `districtArea`, `cityAlias`\n- `latitude`, `longitude`, `timezoneOffset`\n- `phones`, `phonesFormatted`, `website`, `websites`, `emails`, `socialLinks`, `messengers`\n- `rating`, `reviewCount`, `ratingCount`, `orgRating`, `orgReviewCount`, `ratingCategory`, `reviewProviders[]`\n- `workingHours[]`, `scheduleText`, `is24x7`, `isClosed`\n- `orgId`, `orgName`, `orgBranchCount`, `brand`\n- `attributes[]`, `attributeGroups[]`, `attributesByTag`\n- `photoCount` (when 2GIS returns it), `mainPhotoUrl`, `photos[]` (when photo URLs are enabled)\n- `reviews[]` — review text, rating, author, date, photos and business reply (when enabled)\n- `isPromoted`, `hasGoods`, `hasDiscount`, `delivery`\n- `nearestStations[]`, `nearestMetro[]`\n- `searchQuery`, `searchCity`, `scrapedAt`, `updatedAt`, `createdAt`, `description`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `urls` or `ids` |\n| `searchQueries` | array | – | Search terms (mode=search) |\n| `locationQuery` | string | – | City to search in (mode=search) |\n| `cities` | array | – | Additional cities; every term runs in each city |\n| `cityIds` | array | – | Exact 2GIS city IDs instead of names |\n| `startUrls` | array | – | Search, `/firm/`, `/branches/`, `/inside/` or short links (mode=urls) |\n| `placeIds` | array | – | Branch IDs (mode=ids) |\n| `latitude`, `longitude` | number | – | Center for a point search |\n| `radiusMeters` | integer | `20000` | Radius around the point (1–50000) |\n| `bbox` | string | – | Map rectangle as `lon1,lat1,lon2,lat2` |\n| `country` | string | `auto` | Country site: `ru`, `kz`, `ae`, `kg`, `uz`, `by`, `az`, `am`, `ge`, `tj`, `cy`, `cz`, `it`, `cl` |\n| `language` | string | `auto` | Content language, e.g. `ru_RU`, `ru_KZ`, `en_AE`, `kk_KZ` |\n| `maxItems` | integer | `50` | Max places per search term + city/area |\n| `sortBy` | string | `relevance` | `relevance`, `rating`, `distance`, `flamp_rating`, `creation_time`, `opened_time`, `name` |\n| `rubricIds` | array | – | Category IDs, e.g. `162` for coffee shops |\n| `districtIds` | array | – | District IDs for splitting large cities |\n| `minRating` | number | – | Keep places rated at least this value |\n| `minReviews` | integer | – | Keep places with at least this many reviews |\n| `websiteFilter` | string | `all` | `all`, `with` or `without` a website |\n| `filterHasPhotos` | boolean | false | Only places with photos |\n| `filterOpenNow` | boolean | false | Only places open now |\n| `filter24x7` | boolean | false | Only places open around the clock |\n| `filterHasGoods` | boolean | false | Only places with goods or a menu |\n| `filterHasRating` | boolean | false | Only places with a rating |\n| `filterHasReviews` | boolean | false | Only places with reviews |\n| `filterDelivery` | boolean | false | Only places whose attributes mention delivery |\n| `filterTakeaway` | boolean | false | Only places whose attributes mention takeaway |\n| `filterCardPayment` | boolean | false | Only places whose attributes mention card payment |\n| `filterWifi` | boolean | false | Only places whose attributes mention Wi-Fi |\n| `minAverageCheck`, `maxAverageCheck` | integer | – | Filter by published average check |\n| `skipAds` | boolean | false | Drop promoted results |\n| `includeContacts` | boolean | true | Add phones, websites, emails, socials and messengers |\n| `includeReviews` | boolean | false | Add review texts |\n| `maxReviewsPerPlace` | integer | `10` | Max review texts per place |\n| `reviewsSort` | string | `date_created` | `date_created`, `date_edited` or `rating` |\n| `reviewsMinRating` | integer | – | Keep reviews with at least this rating |\n| `reviewsWithAnswer` | boolean | false | Keep only reviews with a business reply |\n| `reviewsSince` | string | – | Keep reviews since `YYYY-MM-DD` |\n| `reviewsKeyword` | string | – | Keep reviews containing this word |\n| `includePhotos` | boolean | false | Add photo URLs |\n| `maxPhotosPerPlace` | integer | `5` | Max photo URLs per place |\n| `scrapeOrgBranches` | boolean | false | Expand a place link to its organization's branches |\n\n### Example: coffee shops in Moscow\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"coffee\"],\n  \"locationQuery\": \"Moscow\",\n  \"maxItems\": 25,\n  \"websiteFilter\": \"with\",\n  \"sortBy\": \"rating\"\n}\n```\n\n### Example: Dubai restaurants that are open now\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"restaurant\"],\n  \"locationQuery\": \"Dubai\",\n  \"filterOpenNow\": true,\n  \"includeContacts\": true,\n  \"maxItems\": 50\n}\n```\n\n### Example: read a place and its organization's branches\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\"https://2gis.ru/moscow/firm/70000001044357973\"],\n  \"scrapeOrgBranches\": true,\n  \"includeReviews\": true,\n  \"maxReviewsPerPlace\": 5\n}\n```\n\n### Example: every business inside a building\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\"https://2gis.ru/moscow/inside/4504235290707169\"],\n  \"maxItems\": 100\n}\n```\n\n## Use cases\n\n- **Local lead generation** — collect businesses by city and category with phone, website and email contacts.\n- **Market research** — compare category coverage, ratings and review volumes across cities and countries.\n- **Competitor tracking** — follow a chain's branches, addresses, hours and rating changes.\n- **Reputation monitoring** — export ratings, review counts and optional review texts with business replies.\n- **Directory enrichment** — fill missing contacts, coordinates and opening hours in your own listings.\n- **Coverage checks** — find businesses without a website, without photos or without reviews.\n\n## FAQ\n\n### Do I need a 2GIS account or API key?\n\nNo. The actor reads 2GIS's public directory data and needs no account, API key, cookie or proxy. Just choose a search term and a city.\n\n### Which countries are supported?\n\nRussia, Kazakhstan, the UAE, Kyrgyzstan, Uzbekistan, Belarus, Azerbaijan, Armenia, Georgia, Tajikistan, Cyprus, Czechia, Italy and Chile. The country site is detected automatically from a link or resolved from the city.\n\n### Why are some fields missing from a place?\n\n2GIS listings vary. A website, email, social link, photo or review is only included when the business has published it. Empty fields are omitted rather than filled with null or placeholder values.\n\n### What is the difference between `rating` and `orgRating`?\n\n`rating` belongs to the individual branch. `orgRating` and `orgReviewCount` aggregate the whole organization. `ratingCount` counts star votes, while `reviewCount` counts written reviews.\n\n### Do reviews and photos work for every place?\n\nRating and review counts are included whenever 2GIS publishes them. Review texts and photo URLs are optional and depend on what 2GIS exposes for that place. A main photo URL and an exact photo count are included when 2GIS returns them; places with no reviews or photos simply omit those fields.\n\n### How do I get more than the default number of places?\n\nRaise `maxItems`. For very large categories, split the search by district, category (`rubricIds`) or several narrower search terms. The run status message tells you if more places were available than were requested.\n\n### How do I search in Russian, Kazakh or Arabic?\n\nUse the local spelling in `searchQueries` and `locationQuery` (for example `кофейня` and `Москва`), or set `language` to the content language you want.\n\n### Is this affiliated with 2GIS?\n\nNo. This is a third-party actor that reads the public 2GIS directory. It is not affiliated with, endorsed by, or sponsored by 2GIS.\n"
    },
    "buildNumber": "1.0.2",
    "imageDigest": "f2b0cde3aea43fdc79b45d920e1e35872411ce3c65a1f10ed25154c5e09cf1cc",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.004706666666666666
    }
  }
}