{
  "openapi": "3.0.1",
  "info": {
    "title": "Yandex Maps Scraper - Places & Ratings | Парсер Яндекс Карт",
    "description": "Yandex Maps scraper for business listings in Russia, Kazakhstan, Turkey and the CIS. Search by term and city, around a point within a radius, or paste URLs. Each place has name, address, GPS coordinates, rating, review count, phones, website and opening hours. $0.40 per 1,000 places.",
    "version": "0.1",
    "x-build-id": "uN1N42TnqwLbwimF7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~yandex-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-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/dami_studio~yandex-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-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/dami_studio~yandex-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for on Yandex Maps, for example \"кафе\", \"стоматология\", \"coffee\". One search per line. Yandex indexes Russian-language names most completely, so local-language terms return more results.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City to search in. English, Russian or local spelling all work (\"Moscow\", \"Москва\", \"Almaty\", \"Istanbul\"). You can also paste a numeric Yandex geo id such as 213. A name Yandex does not know as a place stops the run before any search. Leave empty to let Yandex pick the map view."
          },
          "cities": {
            "title": "More cities (optional)",
            "type": "array",
            "description": "More cities to run the same search terms in, one per line, spelled the same way as City. Each city is looked up once, before any search, and every search term runs in each of them. A name Yandex does not know as a place stops the run before any search.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Yandex Maps URLs",
            "type": "array",
            "description": "Optional. Paste Yandex Maps search pages (https://yandex.ru/maps/213/moscow/search/кафе/), single organisation pages (https://yandex.ru/maps/org/osteria_mario/1769547913/), short share links (https://yandex.com/maps/-/CPqIUMo), or an organisation id on its own (1769547913). Works alongside the fields above.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum places",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on unique places returned across all searches (1-5000). Duplicates are removed before this cap is applied, so you get the number you asked for. You are charged per place returned.",
            "default": 50
          },
          "maxItemsPerSearch": {
            "title": "Maximum places per search (optional)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Caps each search on its own, inside Maximum places: each search term in each city, and each pasted search link. Leave it empty to let one search take everything up to Maximum places."
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "",
              "3.0",
              "3.5",
              "4.0",
              "4.5",
              "4.7",
              "4.9"
            ],
            "type": "string",
            "description": "Only places Yandex rates at least this high. Yandex applies it to the search itself, so places under it never reach your dataset and are never charged. Places with no rating are left out too. It applies to searches, not to single organisation pages.",
            "default": ""
          },
          "priceCategories": {
            "title": "Price band",
            "type": "array",
            "description": "Only places in these Yandex price bands. Yandex applies it to the search itself, so other places never reach your dataset and are never charged. Yandex gives price bands mostly to cafes, restaurants and bars. Applies to searches, not to single organisation pages.",
            "items": {
              "type": "string",
              "enum": [
                "price_cheap",
                "price_reasonable",
                "price_expensive",
                "price_very_expensive"
              ],
              "enumTitles": [
                "Low",
                "Average",
                "Above average",
                "High"
              ]
            }
          },
          "categoryIds": {
            "title": "Category ids",
            "type": "array",
            "description": "Only places in these Yandex categories, by id: 184106394 for restaurants, 184106390 for cafes, 184106384 for bars, 184106132 for dental clinics. The categoryIds column of any run lists the ids of the places it returned. Yandex applies it to the search itself. Applies to searches, not to single organisation pages.",
            "items": {
              "type": "string"
            }
          },
          "goodPlaceOnly": {
            "title": "Only Good Place award winners",
            "type": "boolean",
            "description": "Only places holding Yandex's Good Place award. The award year is in the goodPlaceYear column. Yandex applies it to the search itself. Applies to searches, not to single organisation pages.",
            "default": false
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only places with at least this many written reviews (the reviewCount column). Places with fewer are left out and not charged. When a search reads 50 places and fewer than 1 in 5 of them pass this and the two filters below, it stops early with one free FILTER_TOO_RARE row. Applies to searches, not to single organisation pages."
          },
          "onlyWithWebsite": {
            "title": "Only places with a website",
            "type": "boolean",
            "description": "Leave out places whose listing has no website. They are not charged. Applies to searches, not to single organisation pages.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only places with a phone",
            "type": "boolean",
            "description": "Leave out places whose listing has no phone number. They are not charged. Applies to searches, not to single organisation pages.",
            "default": false
          },
          "includeCardReviews": {
            "title": "Reviews shown on an organisation page",
            "type": "boolean",
            "description": "Adds the few reviews Yandex shows on an organisation's own page (usually three): the text, the reviewer's display name and the date, in a cardReviews column. Only for organisation links and ids you paste; places found by a search come without them. It never pages through more reviews. Off by default.",
            "default": false
          },
          "openNow": {
            "title": "Open now",
            "type": "boolean",
            "description": "Only places Yandex shows as open at the moment the run reads them. Yandex applies it to the search itself, and each place is checked again. Applies to searches, not to single organisation pages.",
            "default": false
          },
          "open24h": {
            "title": "Open 24 hours",
            "type": "boolean",
            "description": "Only places open round the clock every day. Yandex applies it to the search itself, and each place is checked against its own opening hours. Applies to searches, not to single organisation pages.",
            "default": false
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Only places that have every one of these, as Yandex lists them on the card (the amenities column). Yandex applies them to the search itself; a place that lists one of them as missing is left out and not charged. Applies to searches, not to single organisation pages.",
            "items": {
              "type": "string",
              "enum": [
                "wi_fi",
                "food_delivery",
                "takeaway",
                "coffee_to_go",
                "breakfast",
                "business_lunch",
                "summer_terrace",
                "car_park",
                "payment_by_credit_card",
                "wheelchair_accessability",
                "toilet_for_disabled",
                "nursery",
                "halal",
                "has_booking_link",
                "michelin"
              ],
              "enumTitles": [
                "Wi-Fi",
                "Food delivery",
                "Takeaway",
                "Coffee to go",
                "Breakfast",
                "Business lunch",
                "Summer terrace",
                "Parking",
                "Card payment",
                "Wheelchair access",
                "Accessible toilet",
                "Children's room",
                "Halal",
                "Online booking",
                "In the Michelin guide"
              ]
            }
          },
          "cuisines": {
            "title": "Cuisine",
            "type": "array",
            "description": "Only places serving at least one of these cuisines. Yandex applies it to the search itself, and each place is checked against its own cuisine list. Yandex gives cuisines to cafes, restaurants and bars. Applies to searches, not to single organisation pages.",
            "items": {
              "type": "string",
              "enum": [
                "european_cuisine",
                "russian_cuisine",
                "mixed_cuisine",
                "home_cuisine",
                "italian_cuisine",
                "authors_cuisine",
                "american_cuisine",
                "caucasian_cuisine",
                "japanese_cuisine",
                "middle_eastern_cuisine",
                "asian_cuisine",
                "meat_cuisine",
                "georgian_cuisine",
                "shashlik_cuisine",
                "fish_cuisine",
                "national_cuisine",
                "no_cuisine",
                "sea_cuisine",
                "pan_asian_cuisine",
                "vegetarian_cuisine",
                "mexican_cuisine",
                "uzbek_cuisine",
                "kazakh_cuisine",
                "thai_cuisine",
                "african_cuisine",
                "afghan_cuisine",
                "vainakh_cuisine",
                "ukrainian_cuisine",
                "indian_cuisine",
                "australia_cuisine",
                "belarusian_cuisine",
                "scandinavian_cuisine",
                "international_cuisine",
                "eastern_european_cuisine",
                "english_cuisine",
                "lebanese_cuisine",
                "kalmyk_cuisine",
                "german_cuisine",
                "french_cuisine",
                "vegan_cuisine",
                "lean_cuisine",
                "turkish_cuisine",
                "slavic_cuisine",
                "chechen_cuisine",
                "spanish_cuisine",
                "siberian_cuisine",
                "buryat_cuisine",
                "chinese_cuisine",
                "mediterranean_cuisine",
                "jewish_cuisine",
                "vietnamese_cuisine",
                "tatar_cuisine",
                "serbian_cuisine",
                "central_asian_cuisine",
                "arabian_cuisine",
                "molecular_gastronomy",
                "halal_cuisine",
                "azerbaijani_cuisine",
                "argentine_cuisine",
                "latin_american_cuisine",
                "continental_cuisine",
                "armenian_cuisine",
                "kyrgyz_cuisine",
                "czech_cuisine",
                "irish_cuisine",
                "greek_cuisine",
                "ossetian_cuisine",
                "kosher_cuisine",
                "indonesian_cuisine",
                "korean_cuisine",
                "fusion_cuisine",
                "bulgarian_cuisine",
                "dagestan_cuisine"
              ],
              "enumTitles": [
                "European",
                "Russian",
                "Mixed",
                "Home cooking",
                "Italian",
                "Author's",
                "American",
                "Caucasian",
                "Japanese",
                "Middle Eastern",
                "Asian",
                "Meat",
                "Georgian",
                "Shashlik",
                "Fish",
                "National",
                "No speciality",
                "Seafood",
                "Pan-Asian",
                "Vegetarian",
                "Mexican",
                "Uzbek",
                "Kazakh",
                "Thai",
                "African",
                "Afghan",
                "Vainakh",
                "Ukrainian",
                "Indian",
                "Australian",
                "Belarusian",
                "Scandinavian",
                "International",
                "Eastern European",
                "English",
                "Lebanese",
                "Kalmyk",
                "German",
                "French",
                "Vegan",
                "Lenten",
                "Turkish",
                "Slavic",
                "Chechen",
                "Spanish",
                "Siberian",
                "Buryat",
                "Chinese",
                "Mediterranean",
                "Jewish",
                "Vietnamese",
                "Tatar",
                "Serbian",
                "Central Asian",
                "Arabian",
                "Molecular gastronomy",
                "Halal",
                "Azerbaijani",
                "Argentine",
                "Latin American",
                "Continental",
                "Armenian",
                "Kyrgyz",
                "Czech",
                "Irish",
                "Greek",
                "Ossetian",
                "Kosher",
                "Indonesian",
                "Korean",
                "Fusion",
                "Bulgarian",
                "Dagestani"
              ]
            }
          },
          "chainIds": {
            "title": "Chains",
            "type": "array",
            "description": "Only branches of these chains, by Yandex chain id, for example 6002084. The chainId column of any run lists the chain of each place it returned. Yandex applies it to the search itself. It narrows a search rather than replacing one, so fill in search terms and a city as well (or tick Whole country, below). Applies to searches, not to single organisation pages.",
            "items": {
              "type": "string"
            }
          },
          "wholeCountry": {
            "title": "Whole country (one chain's branches)",
            "type": "boolean",
            "description": "Collects one chain's branches all over Russia in a single run. Put the chain's id under Chains and its name as the only search term, then tick this. The run searches 183 Russian towns one after another, from Moscow down to towns of about 80,000 people, plus any city you typed, and returns each branch once. A branch in a town that is not on the list can be missed, so type such towns under More cities. Raise Maximum places to cover the whole chain; a full pass takes several minutes. Russia only.",
            "default": false
          },
          "customFilters": {
            "title": "Other Yandex filters",
            "type": "array",
            "description": "Any other Yandex Maps filter, one per line, written the way a Yandex Maps link writes it after filter=, for example for_children:1, has_url:1 or uni_medic_specialization:stomatolog. Each one has to be confirmed by Yandex on every page, or the search stops with a free FILTER_NOT_APPLIED row. Yandex answers a value it does not know with no places at all, so copy them exactly.",
            "items": {
              "type": "string"
            }
          },
          "averageBillMin": {
            "title": "Average bill from",
            "minimum": 0,
            "type": "integer",
            "description": "Only places whose average bill, as the card prints it, reaches at least this much, in the local currency (the averageBill column). Places with no average bill on their card are left out while this is set. Checked on each place after it is read; places left out are not charged. Applies to searches, not to single organisation pages."
          },
          "averageBillMax": {
            "title": "Average bill up to",
            "minimum": 0,
            "type": "integer",
            "description": "Only places whose average bill starts at or below this, in the local currency. Places with no average bill on their card are left out while this is set. Checked on each place after it is read; places left out are not charged. Applies to searches, not to single organisation pages."
          },
          "excludePlaceIds": {
            "title": "Skip these places",
            "type": "array",
            "description": "Places to leave out, by id (the placeId column) or organisation link. Handy for repeat runs: paste the ids you already have, and you only get, and only pay for, places that are new to you. Skipped places do not count toward the maximum.",
            "items": {
              "type": "string"
            }
          },
          "reviewsPerPlace": {
            "title": "Reviews per place",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Adds up to this many reviews to each place, from 0 to 50: the text, the rating, the date, the reviewer's display name and the owner's reply. Each review is billed as an add-on.",
            "default": 0
          },
          "includeMenu": {
            "title": "Full menu",
            "type": "boolean",
            "description": "Adds every dish of a place's menu, with section, description, price and photo link. Billed once for each place that has a menu.",
            "default": false
          },
          "photosPerPlace": {
            "title": "Photos per place",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Adds up to this many photo links to each place, from 0 to 1,000, with their tags and size. Each photo is billed as an add-on.",
            "default": 0
          },
          "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"
          },
          "radiusKm": {
            "title": "Radius (optional)",
            "minimum": 0.1,
            "maximum": 50,
            "type": "number",
            "description": "Only places within this distance of the latitude and longitude above, measured from each place's own map position. Yandex searches that area, and when it runs short it adds places from just outside it; those are left out and not charged, so a small radius can return fewer places than you asked for. Applies to search terms, not to pasted search links."
          },
          "zoom": {
            "title": "Map zoom",
            "minimum": 3,
            "maximum": 19,
            "type": "integer",
            "description": "Has no effect on which places come back. Yandex searches around the point you set whatever the zoom level, so a higher number does not make the search tighter. Set a radius for that.",
            "default": 13
          },
          "language": {
            "title": "Response language",
            "enum": [
              "",
              "ru_RU",
              "en_US",
              "tr_TR",
              "uk_UA",
              "kk_KZ",
              "uz_UZ",
              "az_AZ"
            ],
            "type": "string",
            "description": "Language for names, categories and addresses. Yandex Maps is a Russian product: Russian is the most complete, and some fields stay in Russian whatever you pick.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}