{
  "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": "Wk1Z92blJkgaTKlxO"
  },
  "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.ru/moscow/firm/70000001040649255</code>;<br>• вся сеть: <code>https://2gis.ru/moscow/branches/4504136498342213</code>;<br>• результаты поиска, в том числе с фильтрами: <code>https://2gis.ru/moscow/search/стоматология</code>;<br>• все организации в здании: <code>https://2gis.ru/moscow/inside/4504235282681371</code>;<br>• само здание или объект: <code>https://2gis.ru/moscow/geo/4504235282681371</code>;<br>• короткая ссылка «Поделиться»: <code>https://go.2gis.com/…</code>;<br>• просто ID места: <code>70000001040649255</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ГИС: «Москва», «Санкт-Петербург», «Химки», «Алматы», «Бишкек», «Прага», moscow, spb, almaty, dubai. Актор ищет места только этого города: пригороды и сёла вокруг, которые в 2ГИС входят в тот же регион, отсекаются.<br><br>City name or its alias from 2GIS links. Only places of this city are taken, without the suburbs of its 2GIS region."
          },
          "maxPlaces": {
            "title": "Мест с каждого поиска (Places per search)",
            "minimum": 0,
            "type": "integer",
            "description": "Сколько мест брать из каждого запроса, ссылки на поиск или здания. 0 — все: в отличие от сайта 2ГИС, который показывает до 60 мест, актор берёт всю выдачу.<br><br>Places taken from each search or building list. 0 = all of them, not only the 60 the 2GIS website shows.",
            "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"
          },
          "failIfAllInputsFail": {
            "title": "Завершать запуск ошибкой при неверном вводе (Fail the run on bad input)",
            "type": "boolean",
            "description": "По умолчанию запуск с вводом, по которому нечего собирать (город не найден, место удалено, пустой ввод, непонятная дата), завершается успешно: причина — в сообщении о статусе и в записи SUMMARY. Включите, если вашей автоматизации нужен статус FAILED.<br><br>By default a run whose input gives nothing to collect (city not found, place deleted, empty input, unreadable date) succeeds, with the reason in the status message and in the SUMMARY record. Turn on if your automation needs a FAILED status instead.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Прокси (Proxy configuration)",
            "type": "object",
            "description": "Обычно не нужен: места и отзывы идут напрямую через API 2ГИС, а на серверах Apify повторы неудачных запросов актор сам направляет через резидентный прокси. Укажите свой прокси, только если хотите, чтобы все запросы шли через него.<br><br>Usually not needed: places and reviews come straight from the 2GIS APIs, and on Apify the Actor retries failed requests 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}