Yandex Maps Scraper API
Pricing
from $0.40 / 1,000 place returneds
Yandex Maps Scraper API
Scrape business listings from Yandex Maps. The directory behind Yandex Maps covers Russia, Kazakhstan, Turkey and the CIS. Search by term and city, or paste URLs. Each place has name, address, GPS coordinates, rating, review count, phone, website and opening hours. $0.40 per 1,000 places.
Pricing
from $0.40 / 1,000 place returneds
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
1
Bookmarked
31
Total users
18
Monthly active users
12 hours ago
Last modified
Categories
Share
Yandex Maps Scraper: businesses from Yandex Maps with phones, hours and coordinates
Type a search and a city, the way you would into Yandex Maps, and get one row per business: name, category, full address, coordinates, rating, review count, phone, website, social links and opening hours. Paste organisation or search URLs instead if you already have them.
The directory behind Yandex Maps is strongest where Yandex is strongest: Russia, Kazakhstan, Belarus, Turkey and the rest of the CIS. It is a Russian product, so Russian-language search terms return more places than English ones, and some fields come back in Russian whatever response language you pick.
| Input | Search terms plus a city, or Yandex Maps URLs |
| Output | One row per place |
| Ceiling | 5,000 places per run |
| Account needed | None, and no API key |
| Price | $0.40 per 1,000 places, flat on every plan |
🗺️ What Yandex Maps Scraper does
Two ways in, and they work together in one run.
Search. A term and a city, like кафе in Moscow, and it pages through the results until it
reaches your limit or the list stops producing new places. Give it coordinates and a zoom level
instead and it searches around that point rather than a whole city.
URLs. Paste a Yandex Maps search page or a single organisation page and it reads that.
The same business found by two of your searches is written once and counted once. Duplicates are
removed before your maxItems cap is applied, so you get the number you asked for.
📥 What you give it
{"searchQueries": ["кафе", "стоматология"],"city": "Moscow","maxItems": 50,"language": "ru_RU"}
| Field | Default | What it is |
|---|---|---|
searchQueries | box holds кафе | One search per line. Local-language terms return more places than English ones. |
city | box holds Moscow | English, Russian or local spelling all work: Moscow, Москва, Almaty, Istanbul. Use the name, not a number. |
startUrls | empty | Yandex Maps search pages or single organisation pages. |
maxItems | 50 | Unique places across every search, up to 5,000. You are charged per place returned. |
latitude, longitude | empty | Search around a point instead of a city. Both are needed. |
zoom | 13 | How tight the point search is. 11 covers a city, 15 a neighbourhood. Ignored without coordinates. |
language | automatic | ru_RU, en_US, tr_TR, uk_UA, kk_KZ, uz_UZ or az_AZ. Russian is the most complete. |
proxyConfiguration | leave it alone | Optional. Only needed if you want requests to come from your own servers. |
Run it with everything empty and you get one labelled sample row.
📤 What you get back
A real place row from a recent run, with the raw hours array trimmed:
{"placeId": "19464848293","name": "Рыба моя","categoryPrimary": "Ресторан","categories": ["Ресторан", "кафе", "бар"],"address": "Москва, Славянская площадь, 2","addressDetail": "Рыба моя, этаж -1","country": "Россия","city": "Москва","street": "Славянская площадь","postalCode": "109012","latitude": 55.753391,"longitude": 37.633956,"phone": "+74957846858","phones": ["+74957846858"],"website": "https://rybamoya.ru/","socialProfiles": [{"type": "telegram", "url": "https://t.me/perelmanrestaurants"}],"rating": 4.9,"ratingCount": 6097,"reviewCount": 2726,"openingHoursText": "Mon: 12:00-00:00; Tue: 12:00-00:00; Wed: 12:00-00:00; ...","openingHoursRaw": "ежедневно, 12:00 PM–12:00 AM","isOpenNow": false,"priceRange": {"text": "от 3000 ₽", "lower": 3000, "upper": 3500, "currency": "₽"},"nearestMetro": {"name": "Китай-город", "distanceMeters": 36},"verifiedOwner": true,"status": "open","url": "https://yandex.com/maps/org/ryba_moya/19464848293/","searchQuery": "кафе","position": 1,"scrapedAt": "2026-09-21T01:46:00.148Z"}
| Field | What it is |
|---|---|
placeId | Yandex's organisation id. It is the dedupe key here and the key to join on between runs. |
phone, phones | The numbers as Yandex holds them. Many listings have none. |
website, websites | Tracking parameters are stripped, so you get the clean address. |
openingHoursText | Normalised to Monday through Sunday. openingHoursRaw keeps Yandex's own wording, and openingHours the raw arrays. |
priceRange | Yandex's own band, with the number and currency pulled out where it prints them. |
nearestMetro | Station name and distance in metres, on cities that have one. |
verifiedOwner, status | Whether the owner claimed the listing, and whether the place is open, closed or moved. |
rating, ratingCount, reviewCount | The score, how many ratings it came from, and how many wrote text. |
position | Where the place sat in that search's results. |
🧾 Reading the output
Three kinds of row can land in your dataset.
| Row | How to spot it |
|---|---|
| A place | It has a placeId and a name |
| The sample row | Written only when the input was empty |
| A diagnostic | It carries an errorCode |
Diagnostic rows are never charged.
| Code | What it means |
|---|---|
CITY_NOT_FOUND | Yandex could not place that city. The run stops before searching, so nothing is spent on the wrong place. |
BAD_URL | That entry is not a Yandex Maps address. The other jobs carry on. |
NOT_FOUND, API_ERROR | That organisation page is gone, merged, or would not answer. |
NO_RESULTS, NO_RESULTS_BLOCK | The search came back with nothing new. |
CAPTCHA | Yandex put a check in front of that search instead of answering. |
HTTP_ERROR, NO_STATE | Yandex was unreachable, or the page did not carry the data it normally does. |
▶️ How to run it
- Open Yandex Maps Scraper and click Try for free.
- Put your searches into Search terms. Russian terms find more than English ones, even in Turkey and Kazakhstan.
- Type the City, spelled however you like.
- Set Maximum places low for the first run, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$0.40 per 1,000 places. Flat on every Apify plan, no volume tiers.
One row is one place. A business that turns up under two of your searches is charged once. The sample row, every diagnostic row and a search that finds nothing are not charged.
💡 What people use it for
- Building a local lead list with phone numbers and websites already on the row.
- Mapping how many branches a chain has in a city, with coordinates ready to plot.
- Checking rating and review counts across a category before choosing a location.
- Finding which listings have no claimed owner, through
verifiedOwner. - Joining Yandex data to your own records on
placeId, on a schedule.
🚧 What it does not do
- No review text and no photos. This returns the listing, not the reviews. There is a separate actor for those.
- No email addresses. Yandex does not publish them on a listing.
- Use the city name, not a geo id number. The field accepts a number, but it does not reliably reach the search, and you can end up with Yandex's default map view instead of your city.
- Some fields stay in Russian whatever
languageyou pick. Category names especially. - Result totals are Yandex's estimate, not a count you can trust.
- Paging stops when the results do. Yandex keeps serving pages past the end of a list, so the run stops after two pages with nothing new rather than collecting repeats.
- A search Yandex will not answer ends that job with an uncharged row. Re-running is worth one try.
- Phone and website are only there when the listing has them, which for small businesses is often not the case.
- Rows are a snapshot. Hours change, places close, ratings move.
🧭 Which maps scraper do you need?
| If you want | Use |
|---|---|
| Businesses and their details from Yandex Maps | This one |
| The reviews written about a place | Yandex Maps Reviews Scraper |
| Where a site ranks on Yandex search | Yandex Search Engine Scraper |
| Products and prices on Yandex Market | Yandex Market Scraper |
| The same job on Google Maps | Google Maps Scraper |
❓ Questions people ask
Do I need a Yandex account or an API key? No. Nothing to apply for and no quota.
Should I search in Russian or English? Russian, wherever you can. Yandex indexes Russian names most completely, and that holds in Almaty and Istanbul too.
Can I search a neighbourhood instead of a city? Yes. Put in latitude and longitude and raise
zoom to 15 or so.
Will I get the same place twice? Not within a run. Places are deduplicated on placeId before
your limit is applied.
Can I run it on a schedule? Yes. placeId is stable, so diffing hours, ratings or closures
between runs is a join.
Is scraping Yandex Maps legal? These are public business listings. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the search term, the city and the run ID. The
errorCode on the diagnostic row usually names the problem on its own.