Yandex Maps Quick Scraper avatar

Yandex Maps Quick Scraper

Deprecated

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Yandex Maps Quick Scraper

Yandex Maps Quick Scraper

Deprecated

[💰 $1.00 / 1K] Extract Yandex Maps businesses with phones, emails, websites, ratings, reviews, photos, opening hours, and 60+ more fields. Search by query + city, by 100+ categories, or by direct Yandex business ID. Optional contact-scraping from each place's website. Pay only for what you collect.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Kitcune Mia

Kitcune Mia

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

0

Monthly active users

12 hours ago

Last modified

Share

🗺 Yandex Maps Places Scraper

The fast, captcha-resilient way to extract every business on Yandex Maps. Names, phones, emails, websites, ratings, reviews, photos, opening hours, menus — and 60+ more fields — straight into your Apify dataset.


Why this scraper?

This actorTypical Yandex scraper
Cost$3 / 1,000 places$4–8 / 1,000
EngineDirect HTTP (curl_cffi + TLS impersonation)Headless Chromium
Speed~150 places/min on a single run~30–60 places/min
Captcha resilienceResidential proxy + auto session rotation (5 retries)Often blocks mid-run
Coverage60+ fields including emails / website phones / reviews / menus15–25 fields
Regions6: RU, BY, KZ, TR, AZ, ENusually RU only
BillingPay-per-event — you control what you pay forFlat rate, you pay for unused

What makes it fast and reliable

  • No browser — Yandex server-renders the entire app state into a single JSON payload on every search/place URL. We parse that directly. No Chromium boot, no JS execution, no rendering loop.
  • Chrome TLS fingerprintcurl_cffi sends a TLS ClientHello byte-identical to real Chrome, defeating Yandex's JA3-based bot detection.
  • Auto proxy pairing — your selected Language automatically picks the matching residential country (RU → RU IPs, BY → BY, TR → TR…). No more cross-region captcha loops.
  • Captcha-aware retry — on 403 / showcaptcha / suspicious response we rotate the proxy session, recreate the curl context (clean cookie jar + new exit IP), and retry up to 5 times before giving up.
  • Parallel enrichment — reviews and website-contact scrapes run concurrently per place, halving wall-time when you opt into both.
  • 15s ceiling per request — broken proxies fail fast, healthy ones return in well under 2s.

What you can do with it

Use caseWorkflow
🎯 Lead generationquery="dentist", locations=[Moscow, SPB], emails=ON → CSV with names, addresses, websites, emails harvested from each place's website, phones
📊 Local market researchcategories=[Pizzeria], locations=[10 cities] → per-city ratings, density, price tiers — perfect for franchise scouting
Reviews monitoringorganizationIds=[your shops], maxReviews=50, sort=newest → JSON of customer feedback, sortable by date or rating
📚 Directory buildingquery="carwash", maxItems=2000 → bulk-extract every car wash with full metadata
🕵 Competitor intelligenceone company's placeId → features, opening hours, photos, social links, menu sections, awards

Quick start

  1. Search queries — type what you'd type in the Yandex Maps search bar (e.g. coffee, auto repair, dentist). One per line.
  2. Location — pick one or more cities from the dropdown (~90 major Russian cities listed in English: Moscow, Saint Petersburg, Novosibirsk…) or type your own city name.
  3. Number of places to extract20 is a good start.
  4. Language — sets the Yandex regional domain. Defaults to Russian.
  5. (optional) Filter by rating, price tier, category, or "good places only".
  6. (optional) Enable reviews, extra photos, or email/phone from each place's website.
  7. Save & Start.

💡 No Search queries? Pick a category — the actor will use category names as queries automatically (English + Russian for max coverage).


Pricing — Pay only for what you collect

EventCostWhen it fires
Result$3.00 / 1,000Each place pushed to the dataset
Review scraped$0.50 / 1,000Each individual review extracted
Image scraped$0.50 / 1,000Each extra photo (the main image is free)
Actor start$0.00005Once per run
Platform usage (compute, proxy, dataset)free — included

🛡 You set the ceiling. In Run Options set maxTotalChargeUsd (e.g. 5) and the actor will stop before exceeding your budget. Reviews, extra photos, and contact-scraping are off by default — turn them on only if you need them.

Real-world budget examples

GoalSetupCost
500 leads with phones + emails500 places + contact scraping$1.50
500 places + 10 reviews each500 + 5,000 reviews$4.00
200 restaurants with photos & reviews200 + 5 photos × 5 reviews$1.10
2,000 carwashes for a directory2,000 places, no extras$6.00

Input

Top-level fields

FieldDescription
🔎 Search queriesList of search terms. Each query runs against every selected city.
📍 LocationCities to limit the search. Pre-loaded with ~90 major Russian cities in English; type any custom city to add it.
💯 Number of places to extractMax items per (query × city) pair.
🟢 LanguageYandex regional domain: RU → yandex.ru, BY → yandex.by, EN → yandex.com, KK → yandex.kz, TR → yandex.com.tr, AZ → yandex.az. Proxy country auto-paired.

🔧 Filters & categories (optional)

FieldEffect
RatingMinimum average rating threshold: Any · 3.0+ · 3.5+ · 4.0+ · 4.5+ · 4.7+ · 4.9+.
Price categoriesMulti-select: Low · Average · Above average · High.
Good placeOnly places with rating ≥ 4.5 and ≥ 50 reviews.
Categories100+ presets (Carwash, Pizzeria, Dental clinic, Driving school…). Bilingual matching — works with Yandex's Russian category names automatically.
Append to global datasetAlso append unique places to a persistent global dataset (cross-run dedupe).

🖼 Photos (optional, paid)

FieldEffect
Number of additional images per placeExtra photo URLs collected. 0 disables. The main image is always free.
Include image authorsAdd author metadata for each extra photo.

⭐ Reviews (optional, paid)

FieldEffect
Number of reviews per placeReviews fetched from each place's /reviews/ page. 0 disables.
Reviews sortingBy default · Newest first · Highest rating first · Lowest rating first.
Include reviewers' dataAuthor profile fields (name, avatar, public ID) on each review.
📧 Email & phones from websiteVisits each place's website, harvests mailto: / tel: links plus inline emails from /contacts and /contact pages → fills emails and websitePhones fields.

🍽 Collect menu (optional)

FieldEffect
Collect menuPull menu sections and items where Yandex exposes them (mostly restaurants).

🏢 Scrape with place IDs (optional)

FieldEffect
Organization IDsSkip search entirely — open these Yandex business OIDs directly. Reviews / photos / contacts still apply per place.

Output

Each scraped place becomes one dataset record with 60+ fields. The high-value ones:

FieldExample
title / shortTitle"PizzaFabrika"
categoryName / categories"Pizzeria" · ["Pizzeria", "Cafe"]
address / fullAddress"Moscow, Mikhaylova Street, 30Ak2"
phone / phoneUnformatted / phones"+7 800 550-06-00"
website / urls"https://pizzafabrika.ru"
emails (opt-in)["info@pizzafabrika.ru"]
websitePhones (opt-in)["+78005500600"]
totalScore / ratingCount / reviewsCount4.9 · 350 · 116
reviews (opt-in)[{author, rating, text, updatedTime, businessReply, ...}]
location{ "lat": 55.84, "lng": 37.62 }
mainPhotoUrl"https://avatars.mds.yandex.net/.../XXL"
photos / photoDetails (opt-in)extra photo URLs + alt/id metadata
workingHours / openingHoursText / isOpenNowday-by-day schedule + status
featureDetailsstructured features (Wi-Fi, parking, kids-friendly…)
metroDetails / stopDetailsnearby metro / transit stops with distances
socialLinksInstagram / VK / Telegram links
menu / menuCategories / menuItemCountmenu data (when Yandex exposes it)
placeId / yandexUri / urlYandex business ID, internal URI, canonical URL
chain / awards / parentRubricsbrand info, awards, broader rubrics
panorama / panoramaPreviewUrlnearby panorama
bounds / entrancesgeometry corners and known entrances
scrapedAtISO timestamp of extraction

The Output tab in Apify Console gives you pre-built table views: Overview · Contacts · Ratings · Features · Media · Menu · Reviews · All fields.


Tips & gotchas

  • Russian cities work in either spelling. Type Moscow or Москва — Yandex resolves both.
  • Belarusian language — pick BY when scraping Minsk / Gomel / Brest / Grodno to route through yandex.by + Belarusian residential IPs. Drastically lowers captcha rate vs running on yandex.ru.
  • Rating 4.9+ is strict. Most popular places sit at 4.5–4.8. If you get 0 results, lower the threshold.
  • maxItems × locations × queries is your upper bound on records. Need exactly 100? Use one query, one location, maxItems: 100.
  • Reviews & photos are opt-in extras. Leave them at 0 if you only need names / addresses / phones / emails.
  • Captchas are rare thanks to TLS impersonation + per-language residential proxies. When they do happen, the actor auto-rotates and retries up to 5 times.

FAQ

Do you support cities outside Russia? Yes. The dropdown is curated for Russian cities, but you can type any city — Minsk, Almaty, Istanbul, Ankara, Baku — and it works. Pick the matching Language for best results.

Is the proxy configurable? Not needed — proxy country is auto-paired with Language (RU → RU, BY → BY, KK → KZ, TR → TR, AZ → AZ, EN → US). This setup minimizes captcha rate. If you have a special use case, contact me.

What if a place has no website? The emails and websitePhones fields stay null. You still pay only for the place itself ($3 / 1,000), not for the attempted contact scrape.

What if a place has zero reviews? The actor sees reviewsCount=0 from Yandex and skips the reviews fetch entirely — you don't pay the review billing event for empty results.

Can I limit total spend per run? Yes — set maxTotalChargeUsd in Run Options. The actor honors it and stops before exceeding.

How fast is it? ~150 places per minute on a single run with reviews + contacts off. Add 0.5–1.5s per place when contacts are on (depends on the place's website speed).

My output is empty — why? Check the Log tab. Common causes:

  • Empty Search queries + empty Categories + empty Organization IDs → nothing to do.
  • Too-strict filters (Rating 4.9+ on a small city, Good place + niche category).
  • Russian-language city while Language=TR → yandex.com.tr doesn't index Russian cities. Use RU instead.

How do I run this from the API? Click the API button in Console — copy ready-to-paste cURL or SDK snippets.

What about reviews for non-Russian places? Pass the Language matching the region (KK for Kazakh, TR for Turkish, etc.). Reviews are scraped from each place's /reviews/ page on the same Yandex regional domain.


Author

Built and maintained by kitcunemia.

Open for custom scraping projects and bulk one-off extractions. Need a different source covered (Google Maps, 2GIS, OpenStreetMap)? Send a message via my Apify profile — typical turnaround is a few days.


Changelog

  • v0.7 — Belarusian language support, parallel reviews+contacts, reviewsCount=0 short-circuit, slimmer contacts paths, faster timeouts.
  • v0.6 — Pay-per-event billing, email/phone scraping, bilingual categories, English UI.
  • v0.5 — Initial release: 60+ fields, Apify-proxy auto-rotation, TLS impersonation.