{
  "openapi": "3.0.1",
  "info": {
    "title": "Yandex Maps Scraper - Places, Reviews, Phones & Coordinates",
    "description": "Scrape Yandex Maps places by keyword and city or by link: phones, websites, coordinates, hours, ratings, amenities, plus reviews with owner replies as separate rows. Goes past the 1,000 result cap. Export CSV, Excel, JSON or XML. No Yandex key needed.",
    "version": "0.1",
    "x-build-id": "eohAaRjYvpuzTXFq1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~yandex-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-yandex-maps-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/parseforge~yandex-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-yandex-maps-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/parseforge~yandex-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-yandex-maps-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for, the way you would type it in the Yandex Maps search bar: 'coffee', 'pharmacy', 'hotel', 'кофейня'. Each term runs as its own search in every location.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, districts or countries to search in, in any language: 'Moscow', 'Istanbul', 'Алматы', 'Minsk'. The Actor resolves each name to its map area on Yandex Maps and searches inside it. Leave empty when you use coordinates.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Yandex Maps links (yandex.com, .ru, .com.tr, .kz or .by). Place pages (.../maps/org/name/1234567890/) return that place. Search links (.../maps/213/moscow/search/coffee/) run that search over the area of the link.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "Yandex organization IDs (the number at the end of a place link, for example 157006699286). One row per ID.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Counts places; reviews are added on top, per place, with the limit below."
          },
          "coordinates": {
            "title": "Search center (longitude,latitude)",
            "type": "string",
            "description": "Optional exact center to search around, as longitude,latitude (for example 37.6177,55.7558 for central Moscow). Used together with the search area size below. Combines with Locations."
          },
          "viewportSpan": {
            "title": "Search area size (dLon,dLat)",
            "type": "string",
            "description": "Width and height of the area around the search center, in degrees. 0.01,0.01 is about 1 km (a block), 0.1,0.1 about 10 km (a city center). Default 0.2,0.15."
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "",
              "gt3.0",
              "gt3.5",
              "gt4.0",
              "gt4.5",
              "gt4.7",
              "gt4.9"
            ],
            "type": "string",
            "description": "Only places with at least this Yandex rating (out of 5).",
            "default": ""
          },
          "goodPlaceOnly": {
            "title": "Good Place badge only",
            "type": "boolean",
            "description": "Only places holding Yandex's yearly 'Good Place' award.",
            "default": false
          },
          "sortBy": {
            "title": "Sort places by",
            "enum": [
              "relevance",
              "distance"
            ],
            "type": "string",
            "description": "Relevance is Yandex's default ranking. Closest first orders results by distance from the center of the area (approximate) and turns off the automatic area splitting.",
            "default": "relevance"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en_US",
              "ru_RU",
              "tr_TR",
              "kk_KZ",
              "uk_UA"
            ],
            "type": "string",
            "description": "Language of addresses, categories, features and opening hours. Review texts stay in the language the reviewer wrote them in.",
            "default": "en_US"
          },
          "maxReviewsPerPlace": {
            "title": "Reviews per place",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "How many reviews to collect for each place. 0 turns reviews off. Each review is one extra row (type = review). Yandex serves at most 600 reviews per place per ordering; above that the Actor merges other orderings. Free users: up to 10 per place.",
            "default": 0
          },
          "reviewsSort": {
            "title": "Reviews sorted by",
            "enum": [
              "newest",
              "relevant",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Order in which Yandex serves each place's reviews. With a limit per place, this picks which ones you get.",
            "default": "newest"
          },
          "minReviewRating": {
            "title": "Review rating from",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews with at least this many stars (1 to 5). 0 keeps all.",
            "default": 0
          },
          "maxReviewRating": {
            "title": "Review rating up to",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews with at most this many stars (1 to 5). 0 keeps all. Use 1 to 2 to collect complaints.",
            "default": 0
          },
          "includeDetails": {
            "title": "Add place details",
            "type": "boolean",
            "description": "Opens each place's full page to add photos (up to 10 links and the total count), nearby metro stations, review topics with sentiment counts, popular menu items with prices and the Good Place award year. Billed as an extra event per place.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Yandex answers most addresses. If a run reports blocks, switch on Apify Proxy (residential works best).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}