Yandex Maps Scraper API
Pricing
from $0.40 / 1,000 place returneds
Yandex Maps Scraper API
Scrape Yandex Maps places by search term, city or URL: name, address, GPS coordinates, category, rating, review count, phone, website and opening hours. $0.40 per 1,000 places - the lowest price on the market, flat on every plan. No Yandex API key needed.
Pricing
from $0.40 / 1,000 place returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
27 minutes ago
Last modified
Categories
Share
Pulls business listings out of Yandex Maps — the map most people actually use in Russia, Belarus, Kazakhstan, Uzbekistan, Armenia, Azerbaijan and Turkey, where Google Maps coverage is thin or out of date.
Give it a search term and a city, or paste Yandex Maps URLs. You get back one row per place with the name, full address, GPS coordinates, category, star rating, review count, phone number, website and opening hours.
$0.40 per 1,000 places. No Yandex Maps scraper with a real user base charges less. The two established competitors charge $4.00 and $6.99 per 1,000 on their free tiers.
What a row looks like
A real row from a "кафе" search in Moscow:
{"placeId": "1207115252","name": "Osteria Gini","categoryPrimary": "Ресторан","categories": ["Ресторан", "кафе"],"address": "Москва, 1-й Колобовский переулок, 11","city": "Москва","street": "1-й Колобовский переулок","postalCode": "127051","latitude": 55.769063,"longitude": 37.616219,"phone": "+79259816427","phones": ["+79259816427"],"website": "https://ginirest.ru/","rating": 4.8,"ratingCount": 1112,"reviewCount": 553,"openingHoursText": "Mon: 12:00-23:00; Tue: 12:00-23:00; Wed: 12:00-23:00; ...","isOpenNow": false,"nearestMetro": { "name": "Трубная", "distanceMeters": 543 },"verifiedOwner": true,"url": "https://yandex.com/maps/org/osteria_gini/1207115252/"}
Every field: placeId, name, nameShort, chainName, categoryPrimary, categories, address, addressDetail, country, city, street, postalCode, latitude, longitude, phone, phones, website, websites, socialProfiles, rating, ratingCount, reviewCount, openingHoursText, openingHoursRaw, openingHours, isOpenNow, priceRange, nearestMetro, verifiedOwner, status, url, searchQuery, position, scrapedAt.
How complete is it
Measured on a real 250-place run (Moscow, "кафе", 61 seconds):
| Field | Filled |
|---|---|
| name, address, coordinates, category | 250 / 250 |
| rating, review count | 250 / 250 |
| phone | 250 / 250 |
| opening hours | 249 / 250 |
| website | 237 / 250 |
| postal code | 196 / 250 |
Phone coverage is unusually high because Yandex Maps is the primary business directory in these markets, so owners keep their cards current.
Input
{"searchQueries": ["кафе", "стоматология"],"city": "Moscow","maxItems": 250}
- searchQueries — one term per line. Russian terms return more than English ones, even in Turkey.
- city — "Moscow", "Москва", "Almaty", "Istanbul" and a numeric Yandex geo id all work.
- startUrls — paste search pages (
https://yandex.ru/maps/213/moscow/search/кафе/) or single business pages (https://yandex.ru/maps/org/osteria_mario/1769547913/). - latitude / longitude / zoom — search around a point instead of a whole city.
- maxItems — hard cap. Duplicates are removed before this cap, so asking for 250 gives you 250 distinct businesses.
- language — Russian, English, Turkish, Ukrainian, Kazakh, Uzbek or Azerbaijani.
Pricing
| Per place returned | $0.0004 ($0.40 per 1,000) |
| Actor start | $0.001 per run |
You are charged per unique place. Duplicates, sample rows, error rows, captchas and empty runs cost nothing beyond the start fee. A 250-place run costs $0.101.
For comparison, on their free tiers: m_mamaev/yandex-maps-places-scraper charges $4.00 per 1,000, zen-studio/yandex-maps-scraper charges $6.99 per 1,000.
What this does not do
Being straight about the limits:
- No reviews. You get the rating and the review count, not the review text. That is a different scraper.
- No photos. Yandex ships image URLs in its page data; this actor does not return them.
- No email addresses. Yandex Maps cards do not carry them. Anything claiming otherwise is guessing from the website domain.
- Roughly 25 places per request. Large jobs page through the result list, so 1,000 places means about 50 requests and a few minutes.
- Yandex re-ranks between pages. Consecutive pages overlap by around 25%. The actor removes duplicates for you, which is why a deep run makes more requests than
maxItems / 25would suggest. - Result totals are estimates. Yandex's own "about 94 matches" figure moves between requests. Treat it as a hint, not a count.
- Some fields stay in Russian whatever language you pick — Yandex localises names and categories, but street names in Russia usually stay Cyrillic.
FAQ
Do I need a Yandex API key? No. The official Yandex Places API requires a paid key and caps results. This actor reads the public map pages instead, so there is nothing to sign up for.
How is this different from a Google Maps scraper? Different index. In Russia and most of the CIS, Yandex Maps has more businesses, more current phone numbers and far more reviews than Google Maps. In Turkey it is a strong second source. If you need Western Europe or the US, use a Google Maps scraper.
Can I scrape a single business I already have the link for?
Yes. Paste the https://yandex.ru/maps/org/.../<id>/ URL into startUrls. One place, one row, one charge.
Can I search by map area instead of by city?
Yes. Set latitude, longitude and zoom. Zoom 15 is about a neighbourhood, zoom 11 about a city.
How many places can I get for one search term? Yandex keeps serving deeper pages as you go; a Moscow "кафе" search comfortably passes 250. Very narrow terms in small towns run out sooner, and the actor stops when a page stops producing anything new.
Why did my run return an error row instead of places?
Error rows are free. CAPTCHA means Yandex challenged that exit address — re-run and it usually lands elsewhere. NO_RESULTS means the search genuinely matched nothing; try a broader or Russian-language term. CITY_NOT_FOUND means Yandex did not recognise the city name.
Is the output ready for a CRM?
Phone numbers come back normalised (+79259816427). Website links have Yandex's own tracking parameters stripped, so you get https://ginirest.ru/ rather than a URL with yclid and utm_source glued on.
What does an empty run cost? The $0.001 start fee and nothing else.
Sample output with no input
Run it with no search terms and it returns a single clearly-labelled sample row, marked _sample: true and charged: false, so you can see the shape before spending anything.