Yandex Maps Scraper API avatar

Yandex Maps Scraper API

Pricing

from $0.40 / 1,000 place returneds

Go to Apify Store
Yandex Maps Scraper API

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

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

31

Total users

18

Monthly active users

12 hours ago

Last modified

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.

InputSearch terms plus a city, or Yandex Maps URLs
OutputOne row per place
Ceiling5,000 places per run
Account neededNone, 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"
}
FieldDefaultWhat it is
searchQueriesbox holds кафеOne search per line. Local-language terms return more places than English ones.
citybox holds MoscowEnglish, Russian or local spelling all work: Moscow, Москва, Almaty, Istanbul. Use the name, not a number.
startUrlsemptyYandex Maps search pages or single organisation pages.
maxItems50Unique places across every search, up to 5,000. You are charged per place returned.
latitude, longitudeemptySearch around a point instead of a city. Both are needed.
zoom13How tight the point search is. 11 covers a city, 15 a neighbourhood. Ignored without coordinates.
languageautomaticru_RU, en_US, tr_TR, uk_UA, kk_KZ, uz_UZ or az_AZ. Russian is the most complete.
proxyConfigurationleave it aloneOptional. 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"
}
FieldWhat it is
placeIdYandex's organisation id. It is the dedupe key here and the key to join on between runs.
phone, phonesThe numbers as Yandex holds them. Many listings have none.
website, websitesTracking parameters are stripped, so you get the clean address.
openingHoursTextNormalised to Monday through Sunday. openingHoursRaw keeps Yandex's own wording, and openingHours the raw arrays.
priceRangeYandex's own band, with the number and currency pulled out where it prints them.
nearestMetroStation name and distance in metres, on cities that have one.
verifiedOwner, statusWhether the owner claimed the listing, and whether the place is open, closed or moved.
rating, ratingCount, reviewCountThe score, how many ratings it came from, and how many wrote text.
positionWhere the place sat in that search's results.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot it
A placeIt has a placeId and a name
The sample rowWritten only when the input was empty
A diagnosticIt carries an errorCode

Diagnostic rows are never charged.

CodeWhat it means
CITY_NOT_FOUNDYandex could not place that city. The run stops before searching, so nothing is spent on the wrong place.
BAD_URLThat entry is not a Yandex Maps address. The other jobs carry on.
NOT_FOUND, API_ERRORThat organisation page is gone, merged, or would not answer.
NO_RESULTS, NO_RESULTS_BLOCKThe search came back with nothing new.
CAPTCHAYandex put a check in front of that search instead of answering.
HTTP_ERROR, NO_STATEYandex was unreachable, or the page did not carry the data it normally does.

▶️ How to run it

  1. Open Yandex Maps Scraper and click Try for free.
  2. Put your searches into Search terms. Russian terms find more than English ones, even in Turkey and Kazakhstan.
  3. Type the City, spelled however you like.
  4. Set Maximum places low for the first run, then click Start.
  5. 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 language you 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 wantUse
Businesses and their details from Yandex MapsThis one
The reviews written about a placeYandex Maps Reviews Scraper
Where a site ranks on Yandex searchYandex Search Engine Scraper
Products and prices on Yandex MarketYandex Market Scraper
The same job on Google MapsGoogle 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.