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

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

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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:

  1. opens a coherent Yandex Maps web session;
  2. searches the requested query and area;
  3. follows result pages up to your limits;
  4. normalizes public business data;
  5. deduplicates places by stable Yandex ID;
  6. saves only useful place records;
  7. 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?

FieldMeaning
placeIdStable Yandex Maps business identifier
namePublic place or business name
descriptionShort locality or source description
addressPublic address
countryCountry returned by Yandex
categoriesBusiness categories
phonePrimary public phone number
phonesAll returned public phone numbers
websitePublic website, when present
ratingAverage Yandex Maps rating
reviewCountRating or review count
priceCategorySource price label, when present
isOpenCurrent open status, when present
workingHoursHuman-readable hours summary
latitudePlace latitude
longitudePlace longitude
yandexUrlCanonical Yandex Maps place URL
searchQueryQuery that found the place
searchLocationArea supplied with the query
scrapedAtCollection 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

  1. Open the Actor in Apify Console.
  2. Add at least one item to Search queries and areas.
  3. Enter a category, service, brand, or place type in query.
  4. Add a city, district, region, or address in location.
  5. Optionally add map-center coordinates and span for tighter geographic context.
  6. Set maxItems for the total dataset size.
  7. Set maxItemsPerQuery to balance several searches.
  8. Choose the locale that best matches the target market.
  9. Click Start.
  10. 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 as longitude,latitude;
  • span — optional viewport size as longitudeSpan,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 placesEstimated 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:

  1. save a Task with stable queries and limits;
  2. schedule the Task daily, weekly, or monthly;
  3. export each run's dataset to your database or cloud storage;
  4. join records by placeId;
  5. compare rating, review count, address, phone, website, and category fields;
  6. 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:

  1. search one service category per area;
  2. keep maxItemsPerQuery equal across cities;
  3. run the Actor;
  4. export the dataset as CSV or Excel;
  5. filter rows with non-null phone or website;
  6. 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 coordinates and span for precise view-based searches.
  • Split large countries into several city or district searches.
  • Keep recurring Task inputs stable so dataset comparisons remain meaningful.
  • Use maxItemsPerQuery to 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 os
from apify_client import ApifyClient
client = 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.”

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.

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.