{
  "openapi": "3.0.1",
  "info": {
    "title": "Yandex Maps Scraper: Places & Reviews (privacy-safe)",
    "description": "Unofficial Yandex Maps scraper, no login. Search places by query and city, coordinates or bounding box, or paste place URLs. Address, coordinates, phones, website, hours, rating, features and reviews with owner replies. No reviewer names, IDs or avatars.",
    "version": "0.1",
    "x-build-id": "6gA2g4L45da0LwLDN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kyungminlee~yandex-maps-places-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kyungminlee-yandex-maps-places-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/kyungminlee~yandex-maps-places-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kyungminlee-yandex-maps-places-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/kyungminlee~yandex-maps-places-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kyungminlee-yandex-maps-places-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "What to search for on Yandex Maps, as you would type it, e.g. \"кофейня\", \"стоматология\", \"hotel\" or \"Surf Coffee\". Russian terms return the most complete results in Russia and the CIS. Each query is searched in the area set below.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City to search in, in English or Russian, e.g. \"Moscow\", \"Санкт-Петербург\", \"Kazan\", \"Almaty\" or \"Istanbul\". Other cities are looked up on Yandex Maps itself. You can also paste a Yandex region path such as \"213/moscow\". Ignored when coordinates or a bounding box are given. Leave empty to let Yandex pick the area from the query text (e.g. \"кофейня Казань\")."
          },
          "maxPlacesPerQuery": {
            "title": "Max places per query",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many places to save for each search query, in Yandex's order. Yandex returns 25 places per page and widens the area as you page further; a place found by several queries is saved (and charged) only once per run.",
            "default": 20
          },
          "placeUrls": {
            "title": "Place URLs or IDs",
            "type": "array",
            "description": "Specific organisations to collect, as Yandex Maps URLs (https://yandex.ru/maps/org/surf_coffee_x_flow/69353267050/, yandex.com, yandex.com.tr, yandex.kz and other domains), share links (https://yandex.ru/maps/-/...) or numeric organisation IDs (69353267050).",
            "items": {
              "type": "string"
            }
          },
          "latitude": {
            "title": "Latitude (optional)",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Search around this point instead of a city, e.g. 55.7558. Use together with longitude."
          },
          "longitude": {
            "title": "Longitude (optional)",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "Longitude of the search centre, e.g. 37.6173. Use together with latitude."
          },
          "zoom": {
            "title": "Map zoom for coordinate search",
            "minimum": 3,
            "maximum": 19,
            "type": "integer",
            "description": "Map zoom used with latitude/longitude: 12 is a whole city district, 14 a neighbourhood, 16 a few streets. Yandex fills the first pages from this view and widens the area on later pages.",
            "default": 14
          },
          "boundingBox": {
            "title": "Bounding box (optional)",
            "type": "string",
            "description": "Only places inside this rectangle, given as two opposite corners: latitude,longitude,latitude,longitude, e.g. \"55.745,37.600,55.765,37.640\". Places Yandex returns outside the box are skipped and not charged, so a small box can return fewer places than the maximum. Takes priority over coordinates and city."
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 0,
            "maximum": 600,
            "type": "integer",
            "description": "Reviews to save for each place. 0 = no reviews. Yandex shows at most about 600 reviews per organisation, so 600 is the ceiling. Each review is a separate dataset item and a separate review event. Reviewer names, IDs, avatars and profile links are never collected.",
            "default": 0
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "relevance",
              "newest",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Order in which reviews are read. Use \"Newest first\" with \"Only reviews published on or after\" to monitor new reviews.",
            "default": "relevance"
          },
          "minReviewRating": {
            "title": "Minimum review rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only save reviews with at least this many stars (1-5). Skipped reviews are not charged."
          },
          "maxReviewRating": {
            "title": "Maximum review rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only save reviews with at most this many stars (1-5), e.g. 2 to collect complaints only. Skipped reviews are not charged."
          },
          "reviewsSince": {
            "title": "Only reviews published on or after",
            "type": "string",
            "description": "Only save reviews published (or last edited) on or after this date (YYYY-MM-DD, UTC). Older reviews are skipped and not charged. With \"Newest first\" the Actor stops reading a place as soon as it reaches older reviews."
          },
          "includeReviewPhotoUrls": {
            "title": "Include review photo URLs",
            "type": "boolean",
            "description": "Add the URLs of photos attached to each review. Off by default; the photo count is always included.",
            "default": false
          },
          "language": {
            "title": "Language",
            "enum": [
              "ru",
              "en",
              "tr",
              "uk",
              "kk",
              "uz"
            ],
            "type": "string",
            "description": "Language of categories, addresses, opening hours and feature names. Business names and review texts stay as written. Russian is the most complete for Russia and the CIS.",
            "default": "ru"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy (datacenter is enough) is on by default. The Actor paces requests (about one every 1-2 seconds with random jitter), moves to a new proxy session every 25 requests and immediately when Yandex shows a block or captcha page, and benches that session. Without a proxy a block pauses the run for 30-90 seconds.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}