Yandex Maps Scraper | Яндекс Карты Парсер: Phones, ИНН, Ratings avatar

Yandex Maps Scraper | Яндекс Карты Парсер: Phones, ИНН, Ratings

Pricing

from $0.40 / 1,000 businesses

Go to Apify Store
Yandex Maps Scraper | Яндекс Карты Парсер: Phones, ИНН, Ratings

Yandex Maps Scraper | Яндекс Карты Парсер: Phones, ИНН, Ratings

Scrape Yandex Maps business listings across Russia and the CIS: name, address, phone, website, rating, review count, categories, opening hours and coordinates. No login, no API key.

Pricing

from $0.40 / 1,000 businesses

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

5

Monthly active users

a day ago

Last modified

Share

3 Moscow cafes with tax IDs in 7 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors. This actor ranks #1 for "яндекс карты" in Apify Store search.

Pick a business category and one of 14 cities in Russia, Belarus and Kazakhstan, and get the businesses Yandex Maps shows for it: name, categories, full address with postcode, coordinates, phone numbers, website, social links, rating, rating and review counts, opening hours, average bill, nearest metro station and, on paid listings, the registered legal entity and Russian tax number (ИНН) behind the storefront. The actor reads Yandex Maps' own search pages over plain HTTP: no Yandex account, no API key and no browser.

Why choose this actor?

  • The company behind the sign, not just the trading name. On 1 October our scheduled check returned 3 Moscow restaurants for кафе in under 7 seconds, and each one, as a paid placement, carried its registered legal entity and ИНН (for example Галки, run by ООО "БАНКЕТ", ИНН 7716828550). You can match those rows against a company registry directly.
  • More than one screen of results. Yandex shows about 24 businesses per map view, and its page numbers mostly repeat the same ones. The actor moves the map instead: it walks a grid of map tiles outward from the city centre, so the most central businesses arrive first and a larger maxItems keeps adding new ones, up to 1,000 per run.
  • $0.40 per 1,000 businesses on every plan. A business found on two overlapping tiles or by two queries is delivered and charged once, and with monitorMode on, scheduled runs charge only for businesses your account has not received before.

Run it on Apify

Part of The Mine Works Leads and business directories family: B2B Leads Finder, Google Maps Email Scraper, Skip Trace Lookup, JustDial Scraper, 2GIS Places Scraper, IndiaMART Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"queries": ["кафе"],
"city": "moscow",
"maxItems": 10
}

You get 10 central Moscow cafes and restaurants, usually in under a minute (our 3 business checks took 6 to 59 seconds).

Give queries as business categories or names, one per line in the Console form or an array of strings in JSON. Russian finds far more than English, because Yandex indexes businesses by their Russian category names: use кафе, аптека, стоматология or автосервис rather than cafe or pharmacy. city is one of 14 city keys: moscow, spb, novosibirsk, yekaterinburg, kazan, nizhny, chelyabinsk, samara, rostov, ufa, krasnoyarsk, minsk, almaty or astana. maxItems caps the businesses across all queries.

Apify's free plan includes $5 of credit every month, which covers about 12,000 businesses at this actor's price ($0.0004 a business plus the $0.005 start fee, in runs of 1,000).

Copy to your AI assistant

themineworks/yandex-maps-search on Apify. Searches Yandex Maps by category or name in one of 14 cities (Russia, Belarus, Kazakhstan) and returns one row per business with name, categories, address, postcode, coordinates, phones, website, social links, rating, review count, opening hours, average bill, nearest metro, and on paid placements the legal entity and Russian tax ID (tax_id). Call ApifyClient("TOKEN").actor("themineworks/yandex-maps-search").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (string[], Russian works best, e.g. "кафе", "аптека"). Optional: city (exactly one of moscow, spb, novosibirsk, yekaterinburg, kazan, nizhny, chelyabinsk, samara, rostov, ufa, krasnoyarsk, minsk, almaty, astana; default moscow; any other value silently searches Moscow), maxItems (1 to 1000, default 50), monitorMode (default false; deliver and charge only businesses this account has not received before). Rows with _type "summary" or "info" are run reports and are never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~yandex-maps-search/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • 30 fields per business. IDs and names, the primary category plus every category, full and short address, country, postcode, coordinates, all phones, website, social links, rating, rating count, review count, open status, opening hours, the "open until" line, average bill, nearest metro and its distance, legal entity, tax ID, a paid placement flag and a link to the listing.
  • Map tiles instead of page numbers. Measured when the actor was built: four result pages at one spot gave 31 unique businesses, while four neighbouring map positions gave 78. The actor walks 25 to 169 tiles per query (2 to 6 rings around the centre, sized from your maxItems) and stops a query after 4 tiles in a row add nothing new.
  • Registered company and ИНН on paid placements. Yandex publishes the advertiser's legal entity and tax number on promoted listings, and the actor copies both, with is_advert marking which rows are paid.
  • 14 cities. Moscow, Saint Petersburg, Novosibirsk, Yekaterinburg, Kazan, Nizhny Novgorod, Chelyabinsk, Samara, Rostov-on-Don, Ufa, Krasnoyarsk, Minsk, Almaty and Astana.
  • Plain HTTP on the datacenter proxy. Each tile is one request for a server rendered page whose embedded JSON already carries phones, ratings, hours and coordinates. No browser and no residential proxy, which is what keeps the price at $0.40 per 1,000.
  • New-listing monitor. monitorMode remembers the newest 50,000 business IDs your account has received from this actor and skips them on the next run, before any charge.

How to use it

Basic: one category in one city

{
"queries": ["стоматология"],
"city": "spb",
"maxItems": 200
}

Dental clinics in Saint Petersburg, most central first.

A whole vertical in one run

{
"queries": ["стоматология", "стоматологическая клиника", "ортодонт"],
"city": "kazan",
"maxItems": 500
}

The queries share one maxItems budget and run in order. A clinic found by two of the queries, or on two neighbouring tiles, is delivered and charged once.

{
"queries": ["автосервис", "шиномонтаж"],
"city": "yekaterinburg",
"maxItems": 1000
}

Filter the rows on is_advert equal to true to get the businesses that carry legal_entity and tax_id, then match tax_id against a company registry for size, status and directors. The other rows still have phones, websites and addresses.

Weekly new-business watch

{
"queries": ["кофейня"],
"city": "almaty",
"maxItems": 1000,
"monitorMode": true
}

Save it as a task and schedule it weekly (for example 0 7 * * 1). The first run sets the baseline; each later run delivers and charges only businesses your account has not received from this actor before, and the summary row reports already_delivered.

One monitor memory per account. The business IDs monitorMode remembers are shared by every monitor-mode run of this actor in your Apify account, whatever the query or city. If you watch several categories, put them in one run's queries, or a business delivered to one task will be skipped in another.

Competitor density around a point

Run one category with a modest maxItems (100 to 200): because tiles spiral out from the city centre, you get the central businesses with their coordinates, ratings and review counts, ready to plot on a map and compare by rating_count.

Input parameters

ParameterTypeDefaultWhat it does
queriesarray of stringsrequired (form prefill: кафе)Business categories or names. Trimmed, duplicates removed, run in order. Russian returns far more than English.
citystring (one of 14 keys)moscow (also the form prefill)moscow, spb, novosibirsk, yekaterinburg, kazan, nizhny, chelyabinsk, samara, rostov, ufa, krasnoyarsk, minsk, almaty or astana. Through the API, use the key exactly: any other value, including Moscow with a capital letter or Saint Petersburg, silently searches Moscow.
maxItemsinteger (1 to 1,000)50Most businesses to deliver across all queries. Also sets how far the tile grid reaches (2 rings for small runs, up to 6 for large ones).
monitorModebooleanfalseDeliver and charge only businesses this account has not received from this actor before. See "One monitor memory per account" above.

Run options. The default timeout is 900 seconds and the default memory is 1 GB. Each tile is one request with up to 60 seconds to answer and one retry; most answer in a few seconds. If a run reaches its timeout, it stops 15 seconds early, keeps every business already delivered and adds a summary row with ended_on_deadline: true. Memory can be lowered to 512 MB; the start fee is one event either way.

What data do you get?

One row per business. Fields Yandex does not have for a listing are left out of that row rather than sent as null; the list fields are always present and may be empty.

The business: business_id (Yandex organisation ID), name, category (the first category), categories (all of them), status (such as open), maps_url (the listing on Yandex Maps).

Where it is: address (full address with city), short_address, country, postal_code, longitude, latitude, nearest_metro, nearest_metro_distance (walking distance as Yandex writes it, such as 117 м).

How to reach it: phone (the first number) and phones (all of them), website, social_links (Telegram, VK, WhatsApp, YouTube and other links the listing shows).

Reputation: rating (out of 5), rating_count (how many people rated it), review_count (how many wrote a review).

Hours and spend: working_hours (the weekly schedule as Yandex prints it), currently (the live "open until" line at the time of the run), average_bill (the typical spend band on venues that publish one, in roubles). Yandex writes time and price ranges with a dash character between the two values, and the actor keeps that text unchanged.

The company behind it: legal_entity and tax_id (registered name and ИНН), present on paid placements, and is_advert (true on a paid placement).

Where it came from: search_query, search_city, scraped_at.

On paid placements, website usually carries Yandex's ad tracking parameters (utm_source, yclid and similar); cut the query string if you only want the domain.

Each run ends with a _type: "summary" row (city, queries, delivered, already_delivered) and, when something was delivered, a _type: "info" row. Neither is a business and neither is ever charged. Skip rows that have a _type field when you load the data.

Stable fields for automations

These 16 fields were present in every business row we sampled from the live build. The 3 list fields and is_advert are always written, even when empty or false.

FieldWhat it holds
business_idYandex organisation ID; the key for deduplication and monitor mode
nameBusiness name
categoryFirst category
categoriesAll categories, as a list
addressFull address
short_addressStreet and number
countryCountry
longitudeLongitude (number)
latitudeLatitude (number)
phonesAll phone numbers, as a list
social_linksSocial profile links, as a list
maps_urlLink to the listing on Yandex Maps
is_adverttrue on a paid placement
search_queryThe query that found it
search_cityThe city searched, as a name such as Moscow
scraped_atISO timestamp when the row was captured

We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our scheduled run of the live build on 1 October 2026 (кафе, moscow, maxItems: 3). working_hours, currently and average_bill are left out of these examples, and the tracking parameters are cut from website.

A paid placement with its legal entity and tax ID:

{
"business_id": "115736401897",
"name": "Галки",
"category": "Ресторан",
"categories": ["Ресторан", "кафе", "бар"],
"address": "Москва, Страстной бульвар, 4, стр. 3",
"short_address": "Страстной бул., 4, стр. 3",
"country": "Россия",
"postal_code": "125009",
"longitude": 37.608719,
"latitude": 55.764844,
"phone": "+7 (930) 036-22-71",
"phones": ["+7 (930) 036-22-71", "+7 (930) 036-23-21", "+7 (495) 149-81-22"],
"website": "https://galki.moscow/",
"social_links": ["https://wa.me/79912783042", "https://www.youtube.com/channel/UCd_4YGVKnM_uNh5nvlUFB-Q", "https://t.me/galkireserve", "https://vk.ru/galki_moscow"],
"rating": 4.9,
"rating_count": 9470,
"review_count": 5157,
"status": "open",
"nearest_metro": "Чеховская",
"nearest_metro_distance": "117 м",
"legal_entity": "ООО \"БАНКЕТ\"",
"tax_id": "7716828550",
"maps_url": "https://yandex.ru/maps/org/galki/115736401897/",
"is_advert": true,
"search_query": "кафе",
"search_city": "Moscow",
"scraped_at": "2026-10-01T09:03:51.737Z"
}

A second restaurant from the same run (trimmed further), with a single phone and a perfect rating:

{
"business_id": "119336995368",
"name": "Гвидон",
"category": "Ресторан",
"categories": ["Ресторан"],
"address": "Москва, Большая Никитская улица, 5",
"postal_code": "125009",
"longitude": 37.608571,
"latitude": 55.75539,
"phone": "+7 (495) 258-08-88",
"phones": ["+7 (495) 258-08-88"],
"website": "https://gvidon.wrf.su/",
"rating": 5,
"rating_count": 6120,
"review_count": 2831,
"nearest_metro": "Александровский сад",
"nearest_metro_distance": "490 м",
"legal_entity": "ООО \"ПЛЯЖ\"",
"tax_id": "2367001901",
"maps_url": "https://yandex.ru/maps/org/gvidon/119336995368/",
"is_advert": true,
"search_query": "кафе",
"search_city": "Moscow",
"scraped_at": "2026-10-01T09:03:51.580Z"
}

The summary row of the same run (never charged):

{
"_type": "summary",
"city": "Moscow",
"queries": "кафе",
"delivered": 3,
"already_delivered": 0,
"scraped_at": "2026-10-01T09:03:51.797Z"
}

Pricing

Pay per event: you pay for each business delivered to your dataset, plus a small start fee per run. The price is the same on every Apify plan.

EventFreeBronzeSilverGold and above
business-scraped, per business$0.0004$0.0004$0.0004$0.0004
business-scraped, per 1,000 businesses$0.40$0.40$0.40$0.40
apify-actor-start, per run$0.005 per GB of run memory, minimum one eventsamesamesame

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 1 GB by default, so a default run pays $0.005. At 512 MB it is still one event, $0.005.

Worked examples. 200 dental clinics cost $0.08 plus $0.005. A full 1,000 business run costs $0.40 plus $0.005. A weekly monitor run that finds 30 new businesses costs $0.012 plus $0.005.

Never charged: a business found on two tiles or by two queries (charged once), businesses skipped by monitor mode, failed or empty tiles and their retries, and the summary and info rows. A run that delivers nothing pays only the start fee.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your plan; if it and this table ever differ, the Pricing tab is right.

FAQ

What is Yandex Maps? Yandex Maps is the main map and business directory in Russia and much of the Russian speaking world, where Google Maps has thin business data. Its listings carry phones, websites, hours, ratings and reviews. This actor reads its public search pages, the same ones any visitor sees without signing in.

Which cities can I search? The 14 in the city list: Moscow, Saint Petersburg, Novosibirsk, Yekaterinburg, Kazan, Nizhny Novgorod, Chelyabinsk, Samara, Rostov-on-Don, Ufa, Krasnoyarsk, Minsk, Almaty and Astana. Other cities cannot be searched yet, and through the API a value that is not one of the 14 keys falls back to Moscow without an error, so check search_city in the rows. Ask for a city on the Issues tab.

How many businesses can I get? Up to 1,000 per run. Each query walks up to 169 map tiles around the centre (6 rings) and stops early once 4 tiles in a row add nothing new. A very broad query in a dense centre can fill the grid before it runs out of businesses; split it into narrower queries (кофейня, ресторан, столовая) for more.

How often do rows have a legal entity and tax ID? Only on paid placements, which is_advert marks. In our scheduled checks the first 3 results for кафе in Moscow were all paid placements and all carried both fields, but the share across a whole run depends on how many businesses in your category advertise on Yandex. Rows without a paid placement simply have no legal_entity or tax_id field.

Should I search in Russian or English? Russian, for anything generic. Yandex indexes businesses by their Russian category names, so аптека finds far more pharmacies than pharmacy. English works for international brand names.

Are the phone numbers real? They are the numbers each business publishes on its Yandex listing, copied as shown.

How fresh is the data? Every run reads Yandex Maps live; nothing is cached between runs. currently is the open or closed line at the moment of the run.

Do I need a Yandex account, cookies or an API key? No. You need only an Apify account.

Which proxy does it use? Apify's datacenter proxy, included in the price. Yandex Maps answers it normally, so no residential proxy is needed.

Can I schedule it and get only new businesses? Yes. Save your input as a task, add a schedule in Apify Console (Schedules, then Create new), and set monitorMode: true. Each run then delivers and charges only businesses your account has not received from this actor before. The memory is shared by all monitor-mode runs of this actor in your account.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. List fields such as phones become numbered columns in CSV and Excel.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/yandex-maps-search.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http yandex-maps-search "https://mcp.apify.com/?tools=themineworks/yandex-maps-search".

Is it legal to scrape Yandex Maps? The actor reads only public business listings that anyone can see on Yandex Maps without logging in, and it does not get past any login or paywall. Phone numbers and a sole trader's name can still be personal data, so you are responsible for how you use them, including Yandex's terms and data protection laws such as Russia's 152-FZ, GDPR and CCPA, and for having a lawful basis before you contact anyone. This is general information, not legal advice.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each monitor run's new businesses.
  • Make, Zapier and n8n: use the Apify app or node to start a run and send new businesses to your CRM, a call list or a Telegram channel.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

For a second source on the same cities, 2GIS Places Scraper returns phones, published emails and chain sizes from 2GIS.

More from The Mine Works

Leads and business directories

Social media and video

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Need another city or a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new data source, email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

Yandex Maps Scraper turns a category and a city into business rows with phones, ratings, hours and, on paid listings, the legal entity and ИНН, at $0.40 per 1,000.