Yandex Maps Places Scraper
Pricing
Pay per event
Yandex Maps Places Scraper
Search Yandex Maps by query and area and export structured public places with contacts, ratings, categories, hours, and coordinates.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search Yandex Maps places by business query and area, then export structured public listings to JSON, CSV, Excel, or your data pipeline.
The Actor returns stable place IDs, names, addresses, categories, public phone numbers, websites, ratings, review counts, opening information, coordinates, and canonical Yandex Maps URLs when Yandex provides them.
Use it for one-time local-market analysis or schedule it to refresh the same searches repeatedly.
What does Yandex Maps Places Scraper do?
The Actor turns Yandex Maps search results into a clean Apify dataset.
You provide one or more searches such as:
- coffee shops in Berlin;
- pharmacies in Almaty;
- coworking spaces in Moscow;
- car repair services in Istanbul.
For each search, it:
- opens a coherent Yandex Maps web session;
- searches the requested query and area;
- follows result pages up to your limits;
- normalizes public business data;
- deduplicates places by stable Yandex ID;
- saves only useful place records;
- charges only for saved records.
It uses Yandex's structured map-search response instead of launching a browser, which keeps runs fast and resource-efficient.
Who is this Yandex Maps data tool for?
This Actor is useful for:
- lead-generation teams building public business lists;
- local SEO specialists auditing market coverage;
- agencies researching competitors by city or district;
- retail and expansion analysts comparing local categories;
- data teams refreshing business directories;
- developers adding Yandex Maps records to enrichment pipelines;
- researchers tracking listing changes between scheduled runs.
Choose this Actor when the unit you need is a place or business listing.
For customer-review text, use Yandex Maps Reviews Scraper instead.
For a lead-focused preset, see Yandex Maps Lead Finder.
Why use this Actor?
- Area-aware searches: combine a business query with a city, district, region, or coordinates.
- Multiple searches per run: refresh several category/market combinations together.
- Stable deduplication: repeated results are collapsed by Yandex place ID.
- Typed output: records work directly in spreadsheets, databases, and APIs.
- Public contacts: phone and website fields are included when visible in the source.
- Predictable limits: control global and per-query result counts.
- No API key: users do not need a Yandex developer credential.
- Lightweight runtime: direct structured requests run with 256 MB memory.
The Actor does not scrape unrelated Yandex products such as Yandex Games or Yandex Disk.
What Yandex Maps place data can I extract?
| Field | Meaning |
|---|---|
placeId | Stable Yandex Maps business identifier |
name | Public place or business name |
description | Short locality or source description |
address | Public address |
country | Country returned by Yandex |
categories | Business categories |
phone | Primary public phone number |
phones | All returned public phone numbers |
website | Public website, when present |
rating | Average Yandex Maps rating |
reviewCount | Rating or review count |
priceCategory | Source price label, when present |
isOpen | Current open status, when present |
workingHours | Human-readable hours summary |
latitude | Place latitude |
longitude | Place longitude |
yandexUrl | Canonical Yandex Maps place URL |
searchQuery | Query that found the place |
searchLocation | Area supplied with the query |
scrapedAt | Collection timestamp |
Yandex does not expose every field for every listing. Missing values are returned as null or an empty array rather than invented.
How to scrape Yandex Maps places
- Open the Actor in Apify Console.
- Add at least one item to Search queries and areas.
- Enter a category, service, brand, or place type in
query. - Add a city, district, region, or address in
location. - Optionally add map-center coordinates and span for tighter geographic context.
- Set
maxItemsfor the total dataset size. - Set
maxItemsPerQueryto balance several searches. - Choose the locale that best matches the target market.
- Click Start.
- Open the Dataset tab and export JSON, CSV, Excel, XML, or RSS.
A small real input:
{"searchQueries": [{"query": "coffee shops","location": "Berlin","coordinates": "13.405,52.52","span": "0.2,0.2"}],"maxItems": 20,"maxItemsPerQuery": 20,"locale": "en_US","regionId": 10174}
Input parameters
searchQueries
Required array of search objects.
Each object supports:
query— required business category, brand, service, or place type;location— optional city, district, region, or address;coordinates— optional map center aslongitude,latitude;span— optional viewport size aslongitudeSpan,latitudeSpan.
Use both location text and coordinates when a city name is ambiguous.
maxItems
Maximum unique places saved across all queries.
- default:
100; - minimum:
1; - maximum:
10000.
maxItemsPerQuery
Maximum places accepted from each query.
This is useful when one broad query would otherwise consume the whole global limit.
- default:
20; - minimum:
1; - maximum:
1000.
locale
Controls source language and country formatting.
Supported presets:
en_US;ru_RU;tr_TR;kk_KZ.
regionId
Numeric Yandex region context.
Most users can rely on location text and coordinates. Set the region ID when you already know the appropriate Yandex region or need repeatable regional context.
Output example
This shape comes from a current local run against a real Berlin coffee search; identifying details are shortened for documentation:
{"placeId": "12313932984","name": "Coffee Bike Berlin Coffee Tom","description": "Berlin, Schönhauser Allee, 58A","address": "Berlin, Schönhauser Allee, 58A","country": "Germany","categories": ["Coffee shop"],"phone": "+493080932154","phones": ["+493080932154"],"website": null,"rating": null,"reviewCount": null,"priceCategory": null,"isOpen": null,"workingHours": null,"latitude": null,"longitude": null,"yandexUrl": "https://yandex.com/maps/org/12313932984/","searchQuery": "coffee shops","searchLocation": "Berlin","source": "Yandex Maps","scrapedAt": "2026-08-09T20:09:24.249Z"}
The default dataset is the primary output, so standard Apify integrations work without custom storage names.
How much does it cost to extract Yandex Maps places?
Pricing uses one start event per run plus one item event for each unique place saved.
At the FREE tier:
- start: $0.01 per run;
- place: $0.0045172 per saved place.
Examples at FREE-tier prices:
| Saved places | Estimated Actor charge |
|---|---|
| 10 | $0.0552 |
| 100 | $0.4617 |
| 1,000 | $4.5272 |
Paid Apify plans receive lower item prices. The BRONZE tier is $0.01 per start and $0.003928 per place.
Failed, duplicate, and rejected place records do not receive an item charge. Apify may separately apply normal platform limits or account policies.
Recurring local-market refresh workflow
To monitor a market without claiming that the Actor performs change detection itself:
- save a Task with stable queries and limits;
- schedule the Task daily, weekly, or monthly;
- export each run's dataset to your database or cloud storage;
- join records by
placeId; - compare rating, review count, address, phone, website, and category fields;
- alert in your own workflow when values change.
This approach separates reliable extraction from business-specific change rules.
Lead-list and spreadsheet workflow
For a simple prospecting export:
- search one service category per area;
- keep
maxItemsPerQueryequal across cities; - run the Actor;
- export the dataset as CSV or Excel;
- filter rows with non-null
phoneorwebsite; - review applicable outreach and privacy rules before contact.
The Actor extracts public listing data; it does not validate phone ownership, email addresses, or consent.
Tips for better area coverage
- Use the local language for the category when Yandex coverage is stronger in that language.
- Put the city or district in
location, not only in the query. - Add
coordinatesandspanfor precise view-based searches. - Split large countries into several city or district searches.
- Keep recurring Task inputs stable so dataset comparisons remain meaningful.
- Use
maxItemsPerQueryto prevent broad queries from dominating multi-city runs. - Expect nearby or category-adjacent businesses when Yandex's ranking considers them relevant.
Limits and failure behavior
Yandex Maps is an evolving third-party source.
Important limitations:
- search ranking and available fields can change;
- some places have no public phone, website, rating, hours, or coordinates;
- an area query is relevance-ranked, not a guarantee of exhaustive geographic coverage;
- source pagination can stop before a requested maximum;
- temporary rate limits or session challenges can interrupt a run;
- identical businesses may occasionally have separate Yandex place IDs;
- the Actor does not scrape reviews, photos, menus, or historical snapshots;
- it does not perform geofencing after extraction beyond the supplied source search context.
Transient network, HTTP 429, and server errors receive bounded retries. Persistent upstream failures make the run fail instead of returning a misleading empty success.
Integrations
Connect results through:
- Google Sheets;
- Microsoft Excel exports;
- webhooks;
- Zapier;
- Make;
- Slack notifications;
- cloud storage;
- SQL warehouses;
- Python or JavaScript data pipelines;
- the Apify API;
- Apify MCP tools.
Use placeId as the preferred key when merging recurring datasets.
Use the API with cURL
Replace APIFY_TOKEN with your token:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~yandex-maps-places-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": [{"query":"pharmacies","location":"Almaty"}],"maxItems": 25,"locale": "kk_KZ","regionId": 162}'
Fetch dataset items after the run succeeds:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=APIFY_TOKEN"
Use the API with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/yandex-maps-places-scraper').call({searchQueries: [{ query: 'coworking spaces', location: 'Moscow' },{ query: 'coworking spaces', location: 'Almaty' }],maxItems: 40,maxItemsPerQuery: 20,locale: 'en_US'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use the API with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/yandex-maps-places-scraper').call(run_input={'searchQueries': [{'query': 'car repair', 'location': 'Istanbul'}],'maxItems': 50,'locale': 'tr_TR'})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
Use Yandex Maps Places Scraper with MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/yandex-maps-places-scraper"
Claude Desktop MCP setup
Add this remote server in Claude Desktop's MCP configuration.
Cursor MCP setup
Use the same server object in Cursor's MCP settings.
VS Code MCP setup
Add the same remote MCP URL through your VS Code MCP extension or workspace configuration.
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/yandex-maps-places-scraper"}}}
Example prompts showing MCP usage:
- “Find 20 coffee shops on Yandex Maps in Berlin and return phone numbers.”
- “Export pharmacies in Almaty to a structured dataset.”
- “Run my three-city coworking search and summarize listings with websites.”
Responsible and legal use
Yandex Maps contains public business information, but public availability does not remove legal obligations.
You are responsible for:
- following Yandex's applicable terms and policies;
- complying with database, privacy, marketing, and consumer laws;
- collecting only data needed for a legitimate purpose;
- securing exported datasets;
- honoring deletion, correction, and opt-out requirements where applicable;
- avoiding spam, harassment, discrimination, or invasive profiling;
- reviewing outreach rules before using phone numbers for contact.
This Actor does not bypass logins and does not require user credentials.
Troubleshooting
Why did I receive fewer places than maxItems?
maxItems is a ceiling, not a promise. The source may return fewer relevant results, repeat the same place, or stop pagination for that query.
Try a broader category, a larger span, or several district-level searches.
Why are phone, website, rating, or coordinates null?
Yandex did not provide that field in the search result. The Actor preserves missing values instead of guessing.
Try a more specific search or open yandexUrl to inspect the public listing.
Why did the run fail after retries?
Yandex may be rate-limiting requests or changing its session response.
Inspect the run log. Retry later with a smaller workload rather than launching many simultaneous runs.
How do I avoid duplicates across runs?
Store placeId in your destination and upsert on that field. Deduplication inside one run is automatic.
FAQ
Does this Actor need a Yandex API key?
No. It reads the same structured public search data used by the Yandex Maps web experience.
Does it collect reviews?
No. Use Yandex Maps Reviews Scraper for individual review records.
Can I search several cities in one run?
Yes. Add one search object per category and area, then control balance with maxItemsPerQuery.
Can I schedule recurring scans?
Yes. Save the input as an Apify Task and attach a schedule. Compare datasets downstream by placeId.
Is every search geographically exhaustive?
No. Yandex ranks results by relevance and viewport context. For better coverage, split a large area into multiple searches.
Can I export to CSV or Excel?
Yes. Open the Dataset tab and choose the preferred format, or request it through the dataset API.
Related Automation Lab Actors
- Yandex Maps Reviews Scraper — extract individual public reviews for known places.
- Yandex Maps Lead Finder — use a lead-focused Yandex Maps workflow.
- Google Maps Scraper — compare listings on another maps source when your workflow supports cross-source matching.
Each source has different IDs, coverage, ranking, and field availability. Do not assume records from different maps platforms are identical without an explicit matching step.