{
  "openapi": "3.0.1",
  "info": {
    "title": "Yandex Maps Scraper - Business Leads with Phones",
    "description": "Scrape Yandex Maps business listings worldwide: name, category, full address, coordinates, phone numbers, rating and review counts, opening hours, website and social links, nearest metro and chain info. Filter before you are charged.",
    "version": "0.1",
    "x-build-id": "KfY8KEnYU985tBkJg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~yandex-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-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/scrapesage~yandex-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-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/scrapesage~yandex-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-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 - e.g. <code>coffee</code>, <code>dentist</code>, <code>plumber</code>, <code>hotel</code>. Every term is searched in every location below. <b>Leave empty and the run returns a small free sample.</b>",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "A <b>city name</b> (<code>Berlin</code>, <code>Istanbul</code>, <code>London</code>, <code>Moscow</code>) or <b>coordinates</b> as <code>lat,lng</code> (<code>52.5200,13.4050</code>) to search a precise area. Yandex Maps covers the whole world, not just Russia - Berlin, London and Istanbul all verified. Leave empty to search without a location.",
            "items": {
              "type": "string"
            }
          },
          "termsFromFile": {
            "title": "Import search terms from a file (one per line)",
            "type": "string",
            "description": "Bulk-load search terms. Either <b>paste the whole list</b> (one per line), or give <b>a single link</b> to a public <code>.txt</code>/<code>.csv</code>, a Google Sheet or Drive share link, or an Apify key-value-store record. Blank lines, <code>#</code> comments, CRLF and a UTF-8 BOM all parse. A file that cannot be read stops the run with a clear message."
          },
          "startUrls": {
            "title": "Yandex Maps URLs",
            "type": "array",
            "description": "Paste Yandex Maps search URLs directly, e.g. <code>https://yandex.com/maps/213/moscow/search/coffee/</code>. Useful when you have already filtered on the site. <b>Bulk import:</b> use this field&#39;s <i>Link remote text file</i> option.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "type": "integer",
            "description": "How deep to paginate each term/location pair. Yandex returns up to 25 businesses per page.",
            "default": 3
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ru",
              "tr",
              "de",
              "fr",
              "uk",
              "kk"
            ],
            "type": "string",
            "description": "Language for names, categories and addresses.",
            "default": "en"
          },
          "zoom": {
            "title": "Zoom (coordinate searches only)",
            "minimum": 3,
            "maximum": 19,
            "type": "integer",
            "description": "Only used when a location is given as coordinates. Lower zoom covers a wider area: 11 is city-wide, 15 is a few streets.",
            "default": 13
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only businesses rated at least this. 0 disables it.",
            "default": 0
          },
          "minReviews": {
            "title": "Minimum review count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only businesses with at least this many reviews. 0 disables it.",
            "default": 0
          },
          "withPhoneOnly": {
            "title": "Has a phone number",
            "type": "boolean",
            "description": "Keep only businesses that publish a phone number. Around 100% do, so this rarely removes anything.",
            "default": false
          },
          "withWebsiteOnly": {
            "title": "Has a website",
            "type": "boolean",
            "description": "Keep only businesses that list a website. This is the strictest filter - only about 1 in 8 businesses lists one.",
            "default": false
          },
          "categoryFilter": {
            "title": "Categories",
            "type": "array",
            "description": "Keep only businesses whose category contains one of these, e.g. <code>Coffee shop</code>, <code>Restaurant</code>. Case-insensitive, partial match. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "outputFields": {
            "title": "Output fields (leave empty for all)",
            "type": "array",
            "description": "Pick the fields you want and every record is trimmed to exactly those - handy for lean CSV/Sheets exports. <b>Nothing to memorise:</b> open the dropdown and tick, or start typing (<code>phone</code>, <code>rating</code>) to filter.",
            "items": {
              "type": "string",
              "enum": [
                "type",
                "businessId",
                "name",
                "shortName",
                "description",
                "categories",
                "primaryCategory",
                "address",
                "fullAddress",
                "country",
                "region",
                "regionId",
                "postalCode",
                "latitude",
                "longitude",
                "rating",
                "reviewCount",
                "ratingCount",
                "phone",
                "phones",
                "website",
                "websites",
                "socialLinks",
                "workingHours",
                "openStatus",
                "nearestMetro",
                "nearestMetroDistance",
                "metroStations",
                "photoCount",
                "logoUrl",
                "isAdvert",
                "isChain",
                "chainName",
                "seoname",
                "url",
                "searchQuery",
                "searchPage",
                "position",
                "scrapedAt"
              ],
              "enumTitles": [
                "Record type (type)",
                "Business ID (businessId)",
                "Name (name)",
                "Short name (shortName)",
                "Description (description)",
                "Categories (categories)",
                "Primary category (primaryCategory)",
                "Address (address)",
                "Full address (fullAddress)",
                "Country (country)",
                "Region (region)",
                "Region ID (regionId)",
                "Postal code (postalCode)",
                "Latitude (latitude)",
                "Longitude (longitude)",
                "Rating (rating)",
                "Review count (reviewCount)",
                "Rating count (ratingCount)",
                "Phone (phone)",
                "All phones (phones)",
                "Website (website)",
                "All websites (websites)",
                "Social links (socialLinks)",
                "Working hours (workingHours)",
                "Open status (openStatus)",
                "Nearest metro (nearestMetro)",
                "Nearest metro distance (nearestMetroDistance)",
                "Metro stations (metroStations)",
                "Photo count (photoCount)",
                "Logo URL (logoUrl)",
                "Is advert (isAdvert)",
                "Is chain (isChain)",
                "Chain name (chainName)",
                "Yandex slug (seoname)",
                "Yandex Maps URL (url)",
                "Search term (searchQuery)",
                "Result page (searchPage)",
                "Result position (position)",
                "Scraped at (scrapedAt)"
              ]
            }
          },
          "maxItems": {
            "title": "Max businesses",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum businesses to output across all terms and locations. Duplicates are counted once.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxy is the default and is normally enough - Yandex serves this data cleanly to it. Switch to RESIDENTIAL only if you start seeing captcha challenges in the run message.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}