Yandex Maps Scraper - Places, Phones & New Business Monitor
Pricing
from $4.50 / 1,000 place returneds
Yandex Maps Scraper - Places, Phones & New Business Monitor
For lead lists and local market research: Yandex Maps (Яндекс Карты) places by category and city with name, address, phones, website, hours and rating - only places that really match your category, city and street, not other trades or nearby towns. Monitor mode returns only new or changed places.
Pricing
from $4.50 / 1,000 place returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
23 days ago
Last modified
Categories
Share
Get places from Yandex Maps (Яндекс Карты, yandex.ru/maps) by business type and city: name, categories, full address with street, house and postal code, coordinates, phones, website, social links, opening hours by day, status, rating, number of ratings and reviews, and whether the place pays Yandex for placement. Search by what you would type into Yandex Maps (стоматология, кафе, автосервис, dentist…) plus a city, paste a Yandex Maps search URL, or give place URLs or IDs.
Only places that really match. Yandex Maps mixes other trades and nearby towns into its results (a plain search for dentists also shows clinics in Mytischi and Krasnogorsk outside Moscow; a street name also matches a boulevard with a similar name). This Actor checks every place and, by default, returns and charges only places whose name or categories match the search term, whose city is the Location you gave, and whose address contains the street or postal code you asked for. Each row says how it matched (matchedBy, locationMatch, addressMatch), and a free row says how many places were left out, with examples.
Monitor mode reads the same search again and returns only what changed: places that appear for the first time, and places whose name, phones, website, address, opening hours, status or categories changed (with the old values). Every change is confirmed on the place's own page before it is returned, so a result page that shows something different for a moment is not sold as a change.
Unofficial. Reads public Yandex Maps pages only, without logging in. Not affiliated with Yandex.
What you get
| Field | Meaning |
|---|---|
placeId, url | Yandex Maps place ID (organization ID) and the place page |
name, categories | Name and Yandex categories (for example Стоматологическая клиника, детская стоматология) |
address, street, house, locality, area, postalCode, country, addressDetails | Full address and its parts (addressDetails is a note such as a floor) |
latitude, longitude | Coordinates |
phone, phones | First phone, and all phones as {number, display, type, mobile}; mobile is true / false for Russian and Kazakh +7 numbers and null for other countries |
website, websites | Website(s) with Yandex ad tracking (yclid, utm_*) removed |
socialLinks | Telegram, VK, WhatsApp and other links shown on the place card |
hoursText, hours, openNow | Opening hours as shown, and by day: {"mon": ["09:00-21:00"], …, "sun": []} ([] = closed that day, 00:00-24:00 = open 24 hours) |
businessStatus | Yandex status of the place, for example open |
rating, ratingCount, reviewCount | Rating out of 5 (one decimal), number of ratings, number of text reviews |
sponsored | true when the place pays Yandex for placement in the results |
verifiedOwner | true when Yandex marks the owner as verified |
matchedBy | name or category (the search term is in the name or a category name), or yandex-rubric (the place has a category Yandex itself chose for the search term) |
locationMatch | city (the Location is the place's city or district) or region (a region name found in the address) |
addressMatch | The addressContains entry the address matched |
page, positionOnPage | Where the place was in the Yandex Maps results |
changeType, changedFields, previous | Monitor mode only: first-check, new-in-results or changed, which fields changed, and their old values |
Rows that explain something (no results, places left out as not matching, nothing changed, a place ID that does not exist, a check page, a run that reached its maximum charge) have a status other than ok and a note. They are never charged.
Input
| Input | What it does |
|---|---|
searchQueries | What you would type into Yandex Maps: стоматология, кафе, автосервис, dentist, a chain name. Empty together with searchUrls and placeUrls = example search стоматология in Казань |
location | City, district or region: Казань, Москва, Санкт-Петербург, Almaty, Московская область. Added to each search term, and used to keep only places in that city |
addressContains | Keep only places whose address contains one of these, word for word: Тверская улица, проспект Мира, or a postal code 420111 (exact) |
searchUrls | Yandex Maps search pages copied from the browser (https://yandex.ru/maps/213/moscow/search/кафе/, https://yandex.ru/maps/?text=кафе&ll=…&z=…) |
placeUrls | Place pages (https://yandex.ru/maps/org/<name>/<id>/) or place IDs, up to 100 per run |
language | auto (default: Russian when the input has Cyrillic), ru or en |
onlyMatching | On (default): only places that match the search term, location and address filter. Off: everything Yandex Maps shows, with the match columns filled |
maxResultsPerSearch | Most places per search, 1 to 500 (default 50) |
maxPages | Results pages per search, 25 places a page, 1 to 20 (default 4) |
includeSponsored | Return places that pay for placement too (default on), marked sponsored |
onlyNew | Monitor mode: only new places and changed details |
includeRatingChanges | Monitor mode: a rating change also counts (default off) |
watchName | Separate monitor memories, for example one per client |
resetMonitoringState | Forget what this monitor has seen and start again |
Up to 10 searches (search terms plus search URLs) and 100 places by URL/ID per run.
Tips
- Write search terms and the city in Russian for places in Russia (
стоматология+Москва). In our tests the Englishdentist Moscowreturned only 1 place on the first Yandex Maps page, whileстоматология Москваreturned 25. - Write the full city name (
Санкт-Петербург, notСПб), in the same language aslanguage. - A city name matches the place's city only. To cover a whole region, write the region (
Московская область,Республика Татарстан). addressContainsis strict on purpose:Тверская улицаdoes not matchТверской бульварor1-я Тверская-Ямская улица.
Monitor mode
- First run: returns up to
maxResultsPerSearchplaces (first-check) and remembers them. - Next runs: read the same pages and return only
new-in-results: a place this monitor has not seen in these results before. It may be newly opened, or it may have moved into the pages this Actor reads; Yandex Maps does not show an opening date, so this Actor does not invent one;changed: the name, phones, website, address, opening hours, status or categories differ from what this monitor remembered, and the place's own page confirms it (changedFieldsandprevioussay what changed). Ratings are watched only withincludeRatingChanges; the number of ratings is never watched.
- If a results page cannot be read, the monitor judges nothing for that search: nothing is returned, remembered or charged, and the next run checks again.
- If a run reaches your maximum charge, the places it could not return are returned by the next run.
Yandex Maps rotates places that pay for placement through the first results page from one request to the next. In our test (автосервис in Казань, 2 pages, 4 checks) every place that looked new after the first check was such an advertised place from further down the list. So in monitor mode an advertised place seen for the first time is remembered but not returned as new; its later changes are still returned. For the same reason, a place that drops out of the results is not reported: disappearing from a page is not a reliable sign of closing.
Phone numbers and personal data
Phones, websites and social links are returned exactly as the business shows them on its public Yandex Maps card. Some small businesses list a personal mobile number; such numbers are marked mobile: true so you can treat them separately. This Actor does not return anything Yandex does not show on the card, and it drops the advertiser's legal name and tax number that Yandex keeps in the page data. If you contact businesses, follow the rules that apply to you (for example, Russian advertising law requires prior consent for advertising calls and messages).
Pricing
Pay per event:
- Run start: one small fee per run (not per page and not per GB of memory).
- Place returned: per place row.
Places left out as not matching and all explanation rows are free. A search that finds nothing is not charged at all. In monitor mode, the run start fee is the price of the check itself, so it is charged even when nothing changed. Set a maximum charge per run and the Actor will not start a run that cannot return at least one place.
Reliability
- Reads the plain Yandex Maps pages; no browser. Measured 2026-09-25 from Apify's servers (3 pages × 5 times): 15 of 15 answered without a proxy, 14 of 15 through datacenter proxies and 13 of 15 through residential proxies (the misses were 30-second timeouts), 0 check pages.
- In 18 test runs of this Actor on 2026-09-25 (Kazan, Moscow, Saint Petersburg; 1 to 6 pages each), every page was read on the first request without a proxy, and a run took 5 to 25 seconds.
- If Yandex refuses an IP address (403, 429, 5xx) or times out, the Actor asks again from other datacenter IPs, then from a residential IP outside Russia.
- If Yandex shows its check page ("Are you not a robot?"), the Actor does not solve or bypass it: it stops, returns a free row and remembers nothing.
- robots.txt of yandex.com is read on every run and every URL is checked against it before it is requested.
Example output
{"status": "ok","placeId": "137241302033","name": "Стоматология Хаят смайл","categories": ["Стоматологическая клиника", "детская стоматология"],"address": "Республика Татарстан (Татарстан), Казань, улица Галактионова, 3","street": "улица Галактионова","house": "3","locality": "Казань","postalCode": "420015","latitude": 55.793206,"longitude": 49.126781,"phone": "+79011439356","phones": [{ "number": "+79011439356", "display": "+7 (901) 143-93-56", "type": "phone", "mobile": true }],"website": "https://hayat-smile.ru/","socialLinks": [{ "type": "telegram", "url": "https://t.me/prestigedent" }],"hoursText": "ежедневно, 9:00 AM–9:00 PM","hours": { "mon": ["09:00-21:00"], "tue": ["09:00-21:00"], "wed": ["09:00-21:00"], "thu": ["09:00-21:00"], "fri": ["09:00-21:00"], "sat": ["09:00-21:00"], "sun": ["09:00-21:00"] },"businessStatus": "open","rating": 5,"ratingCount": 752,"reviewCount": 625,"sponsored": true,"url": "https://yandex.com/maps/org/hayat_smile_dentistry/137241302033/","matchedBy": "name","locationMatch": "city","page": 1,"positionOnPage": 3,"searchQuery": "стоматология","searchLocation": "Казань"}
Support
Questions, a search that returns something unexpected, or a field you need: open an issue in the Issues tab of this Actor. Include the run ID.