{
  "openapi": "3.0.1",
  "info": {
    "title": "2GIS Scraper - Places & Business Data",
    "description": "Scrape 2GIS business listings in Russia, the CIS, the UAE and Cyprus. Each row has the name, category, full address, coordinates, phones, emails, website, social links, rating, review count and opening hours. Filter by rating, Wi-Fi, card or delivery. $0.50 per 1,000 places.",
    "version": "0.1",
    "x-build-id": "8txnFqe2E1qhFJbMu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~2gis-places-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-2gis-places-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/dami_studio~2gis-places-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-2gis-places-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/dami_studio~2gis-places-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-2gis-places-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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for on 2GIS, for example \"pizza\", \"кафе\", \"dentist\". One search per line. 2GIS is a Russian/CIS directory, so local-language terms return more.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City to search in. English or local spelling both work (\"Moscow\", \"Москва\", \"Almaty\", \"Dubai\"). You can also paste a numeric 2GIS city id. Leave it empty only if you set a point below: with no city and no point, 2GIS returns just a handful of places from anywhere."
          },
          "startUrls": {
            "title": "2GIS URLs",
            "type": "array",
            "description": "Optional. Paste 2GIS search pages (https://2gis.ru/moscow/search/кафе) or single place pages (https://2gis.ru/moscow/firm/70000001044357973). Works alongside the fields above.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum places",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on rows returned across all searches (1-5000). You are charged per place returned.",
            "default": 50
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "",
              "3.0",
              "3.5",
              "4.0",
              "4.5",
              "4.9"
            ],
            "type": "string",
            "description": "Only places 2GIS rates at least this high. Places with no rating are left out too.",
            "default": ""
          },
          "hasPhotos": {
            "title": "Only places with photos",
            "type": "boolean",
            "description": "Keep places that have photos on 2GIS.",
            "default": false
          },
          "cardPayment": {
            "title": "Only places that take cards",
            "type": "boolean",
            "description": "Keep places 2GIS lists as accepting card payment.",
            "default": false
          },
          "wifi": {
            "title": "Only places with Wi-Fi",
            "type": "boolean",
            "description": "Keep places 2GIS lists as having Wi-Fi for customers.",
            "default": false
          },
          "delivery": {
            "title": "Only places that deliver",
            "type": "boolean",
            "description": "Keep places 2GIS lists as offering delivery.",
            "default": false
          },
          "takeaway": {
            "title": "Only places with takeaway",
            "type": "boolean",
            "description": "Keep places 2GIS lists as taking takeaway orders.",
            "default": false
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "",
              "name"
            ],
            "type": "string",
            "description": "2GIS's own order puts the best matches first. Name lists places A to Z.",
            "default": ""
          },
          "latitude": {
            "title": "Latitude (optional)",
            "type": "string",
            "description": "Search around a point instead of a whole city. Example: 55.7558"
          },
          "longitude": {
            "title": "Longitude (optional)",
            "type": "string",
            "description": "Used together with latitude. Example: 37.6173"
          },
          "radiusMeters": {
            "title": "Radius in metres",
            "minimum": 50,
            "maximum": 40000,
            "type": "integer",
            "description": "Radius around the latitude/longitude point. Ignored unless both coordinates are set.",
            "default": 1000
          },
          "locale": {
            "title": "Response language",
            "enum": [
              "",
              "ru_RU",
              "en_AE",
              "en_RU",
              "kk_KZ",
              "uz_UZ",
              "az_AZ",
              "ky_KG"
            ],
            "type": "string",
            "description": "Optional 2GIS locale for names and categories. Leave as Automatic unless you specifically need another language; not every locale is available in every country.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Leave this alone unless you need the run to go out through a particular network. Your own proxy servers are used exactly as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}