{
  "openapi": "3.0.1",
  "info": {
    "title": "2GIS Reviews Scraper",
    "description": "Collect public 2GIS reviews from place links, branch IDs, or a 2GIS search link. Get structured rows with review text, star ratings, authors, dates, photo links, business replies, and place details.",
    "version": "0.0",
    "x-build-id": "SZ47aSGfL8Jis1EP0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maximedupre~2gis-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maximedupre-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/maximedupre~2gis-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-maximedupre-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/maximedupre~2gis-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-maximedupre-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",
        "required": [
          "discoveryMethod"
        ],
        "properties": {
          "discoveryMethod": {
            "title": "Find reviews from",
            "enum": [
              "placeTargets",
              "searchLink",
              "searchTerm"
            ],
            "type": "string",
            "description": "Choose how to find the 2GIS places whose reviews you want."
          },
          "placeTargets": {
            "title": "Place links or branch IDs",
            "minItems": 1,
            "type": "array",
            "description": "Enter one or more public 2GIS place links or branch IDs. Use this when Find reviews from is set to Place links or branch IDs.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "searchLink": {
            "title": "2GIS search link",
            "pattern": "^https?://(?:www\\.)?2gis\\.[^/\\s]+(?:/|$).*$",
            "type": "string",
            "description": "Paste one public 2GIS search link. Use this when Find reviews from is set to 2GIS search link."
          },
          "searchTerm": {
            "title": "Search term",
            "minLength": 1,
            "type": "string",
            "description": "Enter the place name or type to find. Use this with City when Find reviews from is set to Search term and city."
          },
          "city": {
            "title": "City",
            "minLength": 1,
            "type": "string",
            "description": "Enter the city where the search should run. This is used with Search term and city."
          },
          "maxPlaces": {
            "title": "Max places",
            "minimum": 1,
            "type": "integer",
            "description": "Optional stop for 2GIS search link and Search term and city. Leave it empty to return all available places until the source is exhausted. This field is ignored for Place links or branch IDs."
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 1,
            "type": "integer",
            "description": "Optional review stop for each selected or discovered place. Leave it empty to return all available reviews until the source is exhausted for each place."
          },
          "maxReviews": {
            "title": "Max reviews for the run",
            "minimum": 1,
            "type": "integer",
            "description": "Optional total review stop for this run. Leave it empty to return all available reviews until the source is exhausted."
          },
          "starRatings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Choose one or more ratings from 1 to 5. Leave blank to include all ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "reviewDateFrom": {
            "title": "Reviews from date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Use a UTC date in YYYY-MM-DD format. Reviews created on or after this date are included."
          },
          "reviewKeyword": {
            "title": "Review keyword",
            "type": "string",
            "description": "Only include reviews whose text contains this keyword. Leave blank to include all review text."
          },
          "reviewTopics": {
            "title": "Review topics",
            "type": "array",
            "description": "Enter one or more source topic names. Leave blank to include reviews with any topic.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "reviewProviders": {
            "title": "Review providers",
            "type": "array",
            "description": "Enter one or more supported provider names. Leave blank to include all providers surfaced by 2GIS.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "onlyReviewsWithReplies": {
            "title": "Only reviews with business replies",
            "type": "boolean",
            "description": "Set true to keep only reviews with a public business reply. Leave it false or omit it to include all reviews."
          },
          "onlyReviewsWithText": {
            "title": "Only reviews with written text",
            "type": "boolean",
            "description": "Set true to keep only reviews that contain written text. Leave it false or omit it to include all reviews."
          },
          "reviewOrder": {
            "title": "Review order",
            "enum": [
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Choose the order for review collection. Leave blank to use the source default."
          },
          "sourceLocale": {
            "title": "Source locale",
            "pattern": "^[A-Za-z]{2,3}(?:[-_][A-Za-z]{2,4})?$",
            "type": "string",
            "description": "Enter a supported locale code, such as en or ru. Leave blank to use the source default."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}