{
  "openapi": "3.0.1",
  "info": {
    "title": "2GIS Reviews Scraper: Ratings, Replies, New-Review Monitoring",
    "description": "Scrape 2GIS reviews by place URL, id or a search in a city: rating, text, date, likes, photo URLs, business reply, source, place rating and review count. Newest first, only-new mode for scheduled monitoring, star and date filters, free per-place summary. No proxy setup needed. Pay per review.",
    "version": "0.1",
    "x-build-id": "ybJSjGleH7L0CydEg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/amitaviv~2gis-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-amitaviv-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/amitaviv~2gis-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-amitaviv-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/amitaviv~2gis-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-amitaviv-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": "2GIS place URLs or ids",
            "type": "array",
            "description": "Addresses of 2GIS places (any tab, e.g. https://2gis.ru/moscow/firm/70000001032069222 or …/firm/70000001032069222/tab/reviews), or bare place ids (70000001032069222). Works for 2gis.ru, 2gis.kz, 2gis.ae and the other 2GIS sites. Short go.2gis.com links are not resolved: open them and copy the full address.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries (instead of, or as well as, URLs)",
            "type": "array",
            "description": "What you would type into 2GIS, e.g. кофейня or стоматология. Each search takes the first \"maxPlaces\" places 2GIS lists in \"city\" and reads their reviews. A 2GIS search URL (https://2gis.ru/moscow/search/кофейня) also works here or in the field above.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City for search queries",
            "type": "string",
            "description": "The city the searches run in: its name in Russian (Москва, Санкт-Петербург, Новосибирск, Екатеринбург, Казань, Нижний Новгород, Алматы, …), a common English spelling (Moscow, Saint Petersburg, Yekaterinburg), or its slug from a 2GIS address (the word after 2gis.ru/, e.g. novosibirsk, ufa). A city 2GIS does not know fails the search with a message. Not used for place URLs.",
            "default": "moscow"
          },
          "maxPlaces": {
            "title": "Max places per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many places each search query takes, in the order 2GIS lists them (2GIS shows 12 per page, advertisers included).",
            "default": 10
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many reviews of each place, newest first. You are charged only for delivered reviews.",
            "default": 100
          },
          "reviewsNewerThan": {
            "title": "Only reviews newer than",
            "type": "string",
            "description": "Skip reviews written before this date: 2026-09-01 or 01.09.2026 (day first), or a period such as \"30 days\", \"2 weeks\", \"3 months\". Reading stops at the first older review, so older reviews cost nothing."
          },
          "minRating": {
            "title": "Minimum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Deliver only reviews with at least this many stars (1 to 5). Example: 1 with \"Maximum star rating\" 3 for negative reviews only.",
            "default": 1
          },
          "maxRating": {
            "title": "Maximum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Deliver only reviews with at most this many stars (1 to 5).",
            "default": 5
          },
          "onlyNew": {
            "title": "Only new reviews (monitoring)",
            "type": "boolean",
            "description": "Deliver and charge only reviews that earlier runs of this actor in your account have not delivered for the same place. The first run delivers the newest reviews up to \"Max reviews per place\"; later runs read each place only down to the first review they already know, so a scheduled run with nothing new costs only the start fee. The memory is a key-value store named 2gis-reviews-scraper-monitor in your account; delete it to start over.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Only with \"Only new reviews\". Runs with the same place and the same monitor name share one memory. Give two schedules different names to keep their memories apart."
          },
          "includePlaceSummary": {
            "title": "Add a summary record per place (free)",
            "type": "boolean",
            "description": "Adds one record per place (recordType \"placeSummary\", not charged): the place's 2GIS rating and review count, and, over the reviews this run read, the count of each star rating, the average, the share answered by the business, and the newest review date. \"coversAllReviews\" says whether every review of the place was read.",
            "default": false
          },
          "includeReviewerNames": {
            "title": "Include reviewer names and avatars",
            "type": "boolean",
            "description": "Off by default: reviewer name, avatar URL and review count are left empty, and in business replies the reviewer's name and the names of employees are replaced by [name] (pattern-based, best effort), because they are personal data of private individuals. Turn on to get them, and the replies exactly as written, only if you have a lawful basis to process them (for example under the GDPR or Russian Federal Law 152-FZ) and a purpose that needs them; by turning it on you confirm that you do.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave off: the actor goes direct and switches to Apify Proxy (datacenter, then residential) by itself if 2GIS refuses or drops its requests. Turn a proxy on only to force one for every request.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}