Yandex Maps Places Scraper avatar

Yandex Maps Places Scraper

Pricing

Pay per event

Go to Apify Store
Yandex Maps Places Scraper

Yandex Maps Places Scraper

Yandex Maps scraper API: search Yandex Maps places by query and city and get name, address, coordinates, rating, phones, websites, categories and hours as JSON. No browser, no login. Built for lead-gen and local market research. Yandex Maps reviews text not included.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share


🎯 What this scrapes

Yandex Maps is the dominant local-business directory across Russia and the CIS, and it has no public places API. This Actor turns a search such as cafe in Moscow into a deduplicated table of places with coordinates, ratings, phone numbers, websites, categories and opening hours. Give it a query and a city; get rows back. Review text is not included: you get the rating, rating count and review count.

🔥 What we handle for you

  • 🛡️ We rotate browser fingerprints (curl-cffi impersonation, Firefox and Safari profiles) so the target sees a real-browser handshake, not Python.
  • 🌐 We rotate Apify Proxy sessions with a fresh session and exit IP for every search and on every block.
  • 🔁 We retry with exponential backoff on 408 / 429 / 503 and network errors, up to 5 attempts per page, and we honour Retry-After.
  • 🧱 We pace requests at least three seconds apart and page in order, so a long run keeps its footing.
  • 🧊 We keep the dataset clean — Pydantic-validated rows, deduplicated by place id, ISO-8601 timestamps, JSON / CSV / Excel export from the Apify Console.
  • 💰 You pay only for results that land. No rows, no per-row charge (just the small start fee).

💡 Use cases

  • Lead generation — build lists of cafes, pharmacies, clinics or salons per city with phone numbers and websites.
  • Local market research — count and rate competitors by category and district.
  • Site selection — map coordinates and ratings of nearby businesses before opening a location.
  • Directory enrichment — refresh addresses, phones and opening hours in your own database.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
searchesarrayyes[{'query': 'cafe', 'geoId': 213, 'city': 'moscow'}, {'query': 'pharmacy', 'geoId': 213, 'city': 'moscow'}]Yandex Maps searches. Each item is an object {"query": "cafe", "geoId": 213, "city": "moscow"}, a Yandex Maps search…
maxResultsintegerno50Cap on places per search. Yandex Maps serves 25 places per page; paging stops when the cap is reached.
langstringno'en_US'Yandex Maps locale. Titles and addresses come back as Yandex serves them; English (US) is the supported locale for now.
proxyConfigurationobjectno{'useApifyProxy': True}Apify Proxy configuration. Datacenter exit by default; pick a residential group if you need one.

Example input

{
"searches": [
{
"query": "cafe",
"geoId": 213,
"city": "moscow"
}
],
"maxResults": 5,
"lang": "en_US",
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
idstringYandex Maps organization id, the dedupe key.
namestringPlace name.
addressstringFull address.
latnumberLatitude (WGS84).
lonnumberLongitude (WGS84).
coordinatesarray[lon, lat] as served.
ratingnumberRating, 2 decimals.
ratingCountintegerNumber of ratings.
reviewCountintegerNumber of reviews.
phonesarrayBusiness phones.
urlsarrayBusiness websites.
categoriesarrayCategory names.
workingTimestringOpening hours as text.
workingHoursarrayOpening hours per weekday.
sourceUrlstringYandex Maps place page URL.
querystringSearch query that produced this row.
geoIdintegerSearch geoId.
pageinteger1-based page the row was first seen on.
positioninteger1-based rank within the search.
scrapedAtstringISO-8601 UTC scrape timestamp.

Example output

{
"id": "243088808182",
"name": "Alkobufet",
"address": "Moscow, Sretenka Street, 36",
"lat": 55.771647,
"lon": 37.632628,
"coordinates": [
37.632628,
55.771647
],
"rating": 4.9,
"ratingCount": 2757,
"reviewCount": 1321,
"phones": [
"+79152776884"
],
"urls": [
"https://taplink.cc/alkobufet.shashlik"
],
"categories": [
"Cafe",
"the glass room"
],
"workingTime": "Mon-Thu 12:00–02:00; Fri,Sat 12:00–05:00; Sun 12:00–02:00",
"workingHours": [
[
{
"from": {
"hours": 12,
"minutes": 0
},
"to": {
"hours": 2,
"minutes": 0
}
}
]
],
"sourceUrl": "https://yandex.com/maps/org/alkobufet_shashlychnaya/243088808182",
"query": "cafe",
"geoId": 213,
"page": 1,
"position": 1,
"scrapedAt": "2026-10-09T00:00:00Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
result-row$0.004Per unique dataset item

Example: 1 000 results at the rates above ≈ $4.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Review text, photos, and per-place detail pages are not included.
  • A city other than Moscow needs its geoId and city slug from the Yandex Maps URL.
  • maxResults is a per-search cap of up to 500 rows. Yandex serves 25 places per page.
  • The language is English (US) for now; place names appear as Yandex serves them.
  • The result order can shift between pages; we deduplicate by place id, so a place appears once per search.

❓ FAQ

How much does it cost?

$0.004 per result row, which is $4.00 per 1,000 results, plus a one-off $0.20 start fee per run. Duplicates are never charged.

How do I pick a city?

Pass {"query": "cafe", "geoId": 213, "city": "moscow"}, a Yandex Maps search URL, or text like cafe | 213 moscow. Moscow works by name alone (cafe | moscow). For any other city copy its geoId and slug from the Yandex Maps URL, for example /maps/213/moscow/.

Does it return review text?

No. You get rating, ratingCount and reviewCount per place. Review text is not part of this Actor.

Why do I get fewer rows than maxResults?

Yandex stops serving results when a search runs out of matches, so a narrow query in a small area can return fewer rows. The run still succeeds and the status message says what was scraped.

Do I need a Yandex account or API key?

No. The Actor reads publicly listed Yandex Maps data and needs no login.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.