{
  "openapi": "3.0.1",
  "info": {
    "title": "Парсер отзывов 2ГИС | 2GIS Reviews Scraper",
    "description": "Парсер отзывов 2ГИС: текст, оценка, автор, дата, фото, ответ компании и ссылка на отзыв. Поиск по городу или ссылкам, фильтры по звёздам, темам, датам и словам, отзывы без ответа, мониторинг новых отзывов. Excel, CSV, API. | 2GIS reviews scraper with monitoring.",
    "version": "0.1",
    "x-build-id": "Qvpvc3lUlwrEsANXa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/anuarbakty~2gis-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-anuarbakty-2gis-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/anuarbakty~2gis-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-anuarbakty-2gis-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/anuarbakty~2gis-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-anuarbakty-2gis-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Ссылки или ID 2ГИС (2GIS links or IDs)",
            "type": "array",
            "description": "По одной ссылке на строку. Подходят:<br>• карточка места: <code>https://2gis.kz/almaty/firm/70000001063137713</code>;<br>• вся сеть: <code>https://2gis.kz/almaty/branches/70000001026826017</code>;<br>• результаты поиска, в том числе с фильтрами: <code>https://2gis.kz/almaty/search/кофейня</code>;<br>• все организации в здании: <code>https://2gis.kz/almaty/inside/9430047375047778</code>;<br>• само здание или объект: <code>https://2gis.kz/almaty/geo/9430047375047778</code>;<br>• короткая ссылка «Поделиться»: <code>https://go.2gis.com/…</code>;<br>• просто ID места: <code>70000001063137713</code>.<br>Работают все домены 2ГИС: .ru, .kz, .kg, .uz, .ae и другие.<br><br>Place, chain, search results, firms in a building, building, short link or numeric place ID.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "searchQueries": {
            "title": "Поисковые запросы (Search queries)",
            "type": "array",
            "description": "Что вы бы ввели в поиск 2ГИС: «кофейня», «стоматология», «автосервис». Для каждого запроса актор возьмёт места из выдачи и соберёт их отзывы. Нужен город ниже.<br><br>What you would type into 2GIS search. Requires a city.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "city": {
            "title": "Город для поиска (City)",
            "type": "string",
            "description": "Название или код из ссылки 2ГИС: «Алматы», «Москва», «Бишкек», «Прага», almaty, moscow, spb, dubai, praha. Актор знает больше 1 200 городов из справочника 2ГИС.<br><br>City name or its alias from 2GIS links."
          },
          "maxPlaces": {
            "title": "Мест с каждого поиска (Places per search)",
            "minimum": 0,
            "type": "integer",
            "description": "Сколько мест брать из каждого запроса, ссылки на поиск или здания. 0 — все.<br><br>Places taken from each search or building list. 0 = all.",
            "default": 20
          },
          "scope": {
            "title": "Что собирать (Scope)",
            "enum": [
              "place",
              "chain"
            ],
            "type": "string",
            "description": "«Вся сеть» — для каждого найденного филиала актор соберёт отзывы всех филиалов этой организации одним потоком; у каждого отзыва будут адрес и ID филиала. Координаты и рубрики филиалов в этом режиме не заполняются.<br><br>Chain: collect reviews of every branch of the organization.",
            "default": "place"
          },
          "maxReviewsPerPlace": {
            "title": "Максимум отзывов с одного места (Max reviews per place)",
            "minimum": 0,
            "type": "integer",
            "description": "0 — собрать все отзывы. В режиме «Вся сеть» лимит действует на всю сеть.<br><br>0 = all reviews. In chain mode the limit applies to the whole chain.",
            "default": 0
          },
          "maxReviews": {
            "title": "Максимум отзывов за запуск (Max reviews per run)",
            "minimum": 0,
            "type": "integer",
            "description": "Общий лимит на все места. 0 — без ограничения.<br><br>Total cap for the whole run. 0 = no limit.",
            "default": 0
          },
          "sortBy": {
            "title": "Порядок отзывов (Sort order)",
            "enum": [
              "date_created",
              "date_created_asc",
              "date_edited",
              "trust"
            ],
            "type": "string",
            "description": "Определяет, какие отзывы попадут в выборку при лимите. «Сначала новые» — самый быстрый вариант при фильтре по дате.<br><br>Which reviews come first when a limit is set.",
            "default": "date_created"
          },
          "ratings": {
            "title": "Оценки (Star ratings)",
            "type": "array",
            "description": "Фильтр работает на стороне 2ГИС: скачиваются только отзывы с выбранными оценками, поэтому выборка негатива идёт быстро. Пусто — все оценки.<br><br>Server-side filter: only reviews with the selected stars are downloaded. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "★ 1",
                "★★ 2",
                "★★★ 3",
                "★★★★ 4",
                "★★★★★ 5"
              ]
            }
          },
          "dateFrom": {
            "title": "Отзывы не старше (Reviews since)",
            "type": "string",
            "description": "Дата (2026-01-31) или период («30 days»). Пусто — за всё время.<br><br>Absolute date or relative period. Empty = all time."
          },
          "dateTo": {
            "title": "Отзывы не новее (Reviews until)",
            "type": "string",
            "description": "Верхняя граница: дата (2026-06-30 — включая весь этот день) или период назад («7 days»). Вместе с полем выше задаёт интервал, например весь 2025 год.<br><br>Upper date bound. Together with the field above it sets a date range."
          },
          "topics": {
            "title": "Темы отзывов (Review topics)",
            "type": "array",
            "description": "Темы, которые 2ГИС выделяет в отзывах: «персонал», «чистота», «цены», «кофе». Поиск по смыслу на стороне 2ГИС: «персонал» найдёт и отзывы про официанта. Несколько тем — любая из них. Какие темы есть у места, смотрите в записи SUMMARY после запуска. У каждого отзыва будет поле <code>matchedTopics</code>.<br><br>2GIS topic filter, matched by meaning. Several topics mean any of them.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "keywords": {
            "title": "Слова в тексте (Keywords)",
            "type": "array",
            "description": "Оставить только отзывы, в тексте которых есть хотя бы одно из слов, без учёта регистра: «грязно», «долго», «хамство».<br><br>Keep reviews whose text contains any of these words, case-insensitive.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "onlyWithText": {
            "title": "Только отзывы с текстом (Only reviews with text)",
            "type": "boolean",
            "description": "Пропускать оценки без текста.<br><br>Skip star-only reviews.",
            "default": false
          },
          "answerFilter": {
            "title": "Ответ компании (Business reply)",
            "enum": [
              "all",
              "answered",
              "unanswered"
            ],
            "type": "string",
            "description": "«Без ответа» — удобно, чтобы найти отзывы, на которые компания ещё не ответила.<br><br>Filter by presence of the official business reply.",
            "default": "all"
          },
          "sources": {
            "title": "Источники отзывов (Review sources)",
            "type": "array",
            "description": "2ГИС показывает в карточке отзывы и с других площадок: Flamp, а также отзывы, оставленные при оплате или чаевых (Т-Банк, Нетмонет и др.). Пусто — все источники.<br><br>Keep reviews from the selected sources only. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "2gis",
                "flamp",
                "booking",
                "otello",
                "tbank",
                "netmonet",
                "sbertips",
                "avito"
              ],
              "enumTitles": [
                "2ГИС",
                "Flamp",
                "Booking.com",
                "Отелло",
                "Т-Банк",
                "Нетмонет",
                "СберЧаевые",
                "Авито"
              ]
            }
          },
          "includeUnconfirmed": {
            "title": "Включать неподтверждённые отзывы (Include unconfirmed reviews)",
            "type": "boolean",
            "description": "Неподтверждённые отзывы видны в 2ГИС, но не влияют на рейтинг. В результатах их отличает поле <code>isRated: false</code>.<br><br>Unconfirmed reviews are visible on 2GIS but do not affect the rating.",
            "default": true
          },
          "onlyNewReviews": {
            "title": "Только новые отзывы с прошлого запуска (Only new reviews since the last run)",
            "type": "boolean",
            "description": "Актор запоминает уже выданные отзывы для каждого места и набора фильтров и в следующий раз отдаёт только новые — вы платите только за них. Первый запуск выдаёт все отзывы (с учётом лимитов). Подключите Schedules и интеграции (Telegram, Slack, Google Sheets, webhook), чтобы получать новые отзывы автоматически. Сортировка в этом режиме всегда «сначала новые». У каждого отзыва будет поле <code>changeType</code>: <code>new</code> или <code>edited</code>.<br><br>Remembers delivered reviews per place and filter set; each run returns only new ones.",
            "default": false
          },
          "includeEditedReviews": {
            "title": "Также присылать изменённые отзывы (Also return edited reviews)",
            "type": "boolean",
            "description": "Работает вместе с мониторингом. Если автор отредактировал отзыв после прошлого запуска — например, поднял оценку после ответа компании, — отзыв придёт снова с <code>changeType: edited</code>.<br><br>With monitoring on, reviews edited since the last run come back with <code>changeType: edited</code>.",
            "default": false
          },
          "includePlaceDetails": {
            "title": "Данные о месте (Place details)",
            "type": "boolean",
            "description": "Название, адрес, город, район, координаты, рубрика, рейтинг и данные сети. Для ссылок на карточки — один дополнительный запрос на место, для поиска — без дополнительных запросов.<br><br>Name, address, city, coordinates, category, rating and chain info.",
            "default": true
          },
          "includeAuthor": {
            "title": "Данные автора (Reviewer details)",
            "type": "boolean",
            "description": "Имя, число отзывов, ссылка на профиль и аватар автора. Это персональные данные — отключите, если они вам не нужны.<br><br>Reviewer name, profile link and avatar. This is personal data: switch off if you do not need it.",
            "default": true
          },
          "includeRawData": {
            "title": "Исходные данные 2ГИС (Raw 2GIS data)",
            "type": "boolean",
            "description": "Добавить к каждому отзыву поле <code>raw</code> — объект отзыва в том виде, в каком его отдаёт 2ГИС. Для разработчиков.<br><br>Attach the original 2GIS review object as <code>raw</code>.",
            "default": false
          },
          "language": {
            "title": "Язык подписей (Language)",
            "enum": [
              "auto",
              "ru",
              "en",
              "kk",
              "uz",
              "ky",
              "ar",
              "hy",
              "az",
              "ka",
              "tg",
              "cs",
              "es",
              "it"
            ],
            "type": "string",
            "description": "Язык служебных подписей 2ГИС, например «8 посещений» → «8 visits». Тексты отзывов и названия мест не переводятся.<br><br>Language of 2GIS captions such as trust badges. Review texts and place names are not translated.",
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Прокси (Proxy configuration)",
            "type": "object",
            "description": "Обычно не нужен. Отзывы идут напрямую через API 2ГИС, а страницы сайта 2gis.ru на серверах Apify актор сам открывает через резидентный прокси. Укажите свой прокси, только если хотите, чтобы все запросы шли через него.<br><br>Usually not needed: reviews come straight from the 2GIS API, and on Apify the Actor opens 2gis.ru pages through a residential proxy by itself.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}