How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
кафеin Search terms. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Give this Actor a search term and a city, business IDs or Yandex Maps links. It returns public business places or separate review rows from Yandex Maps, with phones, websites, ratings, hours and review text, and you need no login or API key.
- Places saves one row per business: name, category, rating, address, phone, website, hours, and up to 50 reviews inside the row.
- Reviews saves one row per review: rating, text, date, public reviewer details and the owner reply.
- Monitor saves new businesses and changes in ratings and review counts since the last run.
Good for
- You need a list of local businesses with phones and websites for sales outreach.
- You want to read customer reviews of your business or of other businesses, in Russian, Kazakh or other languages.
- You want a weekly list of new businesses in a city, or of rating changes.
- You want to compare categories or chains across cities in a spreadsheet.
Who uses it
Sales teams
Build a list of local businesses with phones and websites.
Local marketing teams
Read customer reviews of your business or of others.
Market researchers
Compare categories or chains across cities.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Business place | $0.0027 (from $0.00189 on paid Apify plans) | A saved business place, including the selected reviews and public details. |
| Review | $0.0026 (from $0.00182 on paid Apify plans) | One saved review row in reviews mode. |
| Source page | $0.0026 (from $0.00182 on paid Apify plans) | One completed source lookup, including empty searches and unavailable business IDs. Source errors are not charged. |
| Start fee | $0.0001 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
Examples
- One result: about $0.0028.
- 1,000 results: about $2.70.
- Every day 100 results, for 30 days: about $8.10 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 1,800 results.
Prices checked on 8 November 2026. See the current price on Apify.
Questions
Do I need a Yandex account or API key?
No. The Actor reads public data and asks for no login, key or cookies.
Does it collect all reviews of a business?
Not always. Yandex Maps gives a limited window. You can get up to 2,400 per business.
Which countries does it work for?
It works for places that Yandex Maps covers. We tested it in Kazakhstan and Russia.
Can I get more than one search window of results?
Yes, with more searches. Add terms, cities or small map areas with coordinates and viewportSpan. Use excludeBusinessIds to skip businesses that you already have, so that you do not pay for them twice.
Why does a place cost more when reviews are on?
Loading reviews, menus and posts takes more source lookups, and each lookup is charged. Set includeReviews to false if you need only contacts. The cost examples in Pricing show both cases.
Are the data fresh and complete?
Each row shows the public record at the time in fetchedAt. Some businesses do not show phones, sites or hours, so these fields can be null. Check status on each row and in RUN_SUMMARY.
Details
Step by step on Apify
- Open the Input tab. Enter what to search in Search terms (box 1). The form starts with
кафе. - Enter a place in City or area (box 2). The form starts with
Алматы. - Keep Maximum result rows at
10for a first test (box 3). - Click the green Start button at the bottom of the page (box 4). It can also read Save & start.
- Open the Output tab and check Business name, Category, Rating, Written reviews count, Address, Phone and Website in the Places view (box 5).
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Build a local lead list | query, locations, includeReviews: false, enrichBusinessData | Place | name, phone, website, email, address | CSV or Excel export, CRM import |
| Study customer reviews | mode: reviews, businessIds, reviewSort: all | Review | rating, text, date, businessComment | Text analysis in a spreadsheet or BI tool |
| Find reviews without a reply | mode: reviews, startUrls, replyFilter: unanswered | Review | reviewId, rating, text, url | Slack or Notion summary |
| Track ratings each week | mode: monitor, query, location, stateName | Place | changeType, rating, reviewsCount | Apify schedule, webhook |
| Compare a market by city | query, locations, filterRating, category | Place | category, rating, reviewsCount, city | BI tool, spreadsheet |
Tips for better results
- Add more terms, cities or small map areas to get more than one search window.
- Set includeReviews to false if you need only contacts. It costs less.
- Use monitor mode on a schedule to see new businesses and rating changes.
Limits and good to know
- Run size: up to 10,000 rows in a run. Big runs need a longer timeout than the default 300 seconds and a higher charge limit
- Reviews: up to 2,400 per business in reviews mode, and up to 50 inside a place row. Yandex Maps can show fewer than its reported total, so check
reportedReviewsCountandreviewsTruncated. This is not a full review archive - Search windows: the source returns a limited window for each search. A broad term in a big city can end with
SEARCH_WINDOW_LIMIT. Add terms or areas to find more businesses - Country scope: works for chain branches in Russia only, and the result can be incomplete
- Photos and posts: up to 1,000 links per business. The Actor does not download files
- Emails: the optional website check reads up to 3 pages and keeps role-based company addresses such as sales or info mailboxes. Many businesses have none, so see
emailStatus - History: a history store keeps the latest 100,000 entries. A name that you cannot write to moves to a name of this Actor, as the run log says
- Freshness: data shows the public record at
fetchedAt. Yandex Maps can change results, order and fields at any time
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"recordType": "place",
"status": "complete",
"orgId": "85901801207",
"name": "Basilic",
"category": "Кафе",
"rating": 4.7,
"ratingCount": 1937,
"reviewsCount": 635,
"address": "Алматы, улица Желтоксан, 115",
"city": "Алматы",
"phone": "+77783449000",
"website": "https://basilic.kz/",
"lat": 43.252995,
"lng": 76.938589,
"url": "https://yandex.ru/maps/org/basilic/85901801207/",
"workingHoursText": "ежедневно, 8:00 AM–11:00 PM",
"businessStatus": "open",
"email": null,
"reviewsFetched": 50,
"reviewsTruncated": true,
"source": "Yandex Maps",
"searchQuery": "кафе",
"fetchedAt": "2026-11-04T13:22:42.921Z"
}Use it from code
Actor ID: cliqtomedia/yandex-maps-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/yandex-maps-scraper").call(run_input={
"mode": "places",
"query": [
"кафе"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~yandex-maps-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "places", "query": ["кафе"]}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/yandex-maps-scraper")
result = tool.invoke({"run_input": {"mode": "places", "query": ["кафе"]}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (40)
| Field | Type | Meaning |
|---|---|---|
recordType | string | Record type from the public Yandex Maps record. Null or empty when the source does not expose it. |
status | string | Record outcome. See RUN_SUMMARY for run-level limits and errors. |
orgId | string | Organization ID from the public Yandex Maps record. Null or empty when the source does not expose it. |
businessId | string | Organization ID from the public Yandex Maps record. Null or empty when the source does not expose it. |
name | string | Business name from the public Yandex Maps record. Null or empty when the source does not expose it. |
title | string | Business name from the public Yandex Maps record. Null or empty when the source does not expose it. |
description | string | Description from the public Yandex Maps record. Null or empty when the source does not expose it. |
shortTitle | string | Short title from the public Yandex Maps record. Null or empty when the source does not expose it. |
category | string | Category from the public Yandex Maps record. Null or empty when the source does not expose it. |
categories | array | Categories from the public Yandex Maps record. Null or empty when the source does not expose it. |
categoryIds | array | Category ids from the public Yandex Maps record. Null or empty when the source does not expose it. |
rating | number | Business or review rating from 1 to 5. |
ratingCount | number | Number of all star ratings, including ratings without written text. |
reviewsCount | number | Number of written reviews reported by the source. |
reviewCount | number | Written reviews count from the public Yandex Maps record. Null or empty when the source does not expose it. |
address | string | Address from the public Yandex Maps record. Null or empty when the source does not expose it. |
additionalAddress | string | Additional address from the public Yandex Maps record. Null or empty when the source does not expose it. |
country | string | Country from the public Yandex Maps record. Null or empty when the source does not expose it. |
region | string | Region from the public Yandex Maps record. Null or empty when the source does not expose it. |
city | string | City from the public Yandex Maps record. Null or empty when the source does not expose it. |
street | string | Street from the public Yandex Maps record. Null or empty when the source does not expose it. |
house | string | House from the public Yandex Maps record. Null or empty when the source does not expose it. |
postalCode | string | Postal code from the public Yandex Maps record. Null or empty when the source does not expose it. |
phone | string | Phone from the public Yandex Maps record. Null or empty when the source does not expose it. |
phones | array | Phones from the public Yandex Maps record. Null or empty when the source does not expose it. |
website | string | Website from the public Yandex Maps record. Null or empty when the source does not expose it. |
websites | array | Websites from the public Yandex Maps record. Null or empty when the source does not expose it. |
socialLinks | array | Social links from the public Yandex Maps record. Null or empty when the source does not expose it. |
lat | number | Latitude from the public Yandex Maps record. Null or empty when the source does not expose it. |
lng | number | Longitude from the public Yandex Maps record. Null or empty when the source does not expose it. |
latitude | number | Latitude from the public Yandex Maps record. Null or empty when the source does not expose it. |
longitude | number | Longitude from the public Yandex Maps record. Null or empty when the source does not expose it. |
url | string | Url from the public Yandex Maps record. Null or empty when the source does not expose it. |
businessStatus | string | Business status from the public Yandex Maps record. Null or empty when the source does not expose it. |
isOpenNow | boolean | Is open now from the public Yandex Maps record. Null or empty when the source does not expose it. |
workingHoursText | string | Working hours text from the public Yandex Maps record. Null or empty when the source does not expose it. |
schedule | array | Schedule from the public Yandex Maps record. Null or empty when the source does not expose it. |
isVerifiedOwner | boolean | Is verified owner from the public Yandex Maps record. Null or empty when the source does not expose it. |
features | array | Features from the public Yandex Maps record. Null or empty when the source does not expose it. |
featureGroups | array | Feature groups from the public Yandex Maps record. Null or empty when the source does not expose it. |
Input settings (25)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Data to collect | mode | string | "places" |
| Search terms | query | array | ["кафе"] |
| City or area | location | string | "Алматы" |
| Several cities | locations | array | |
| Business category | category | string | |
| Business IDs | businessIds | array | |
| Business page URLs | startUrls | array | |
| Maximum result rows | maxItems | integer | 10 |
| Maximum results (compatibility) | maxResults | integer | |
| Include reviews in places | includeReviews | boolean | true |
| Reviews per business | maxReviews | integer | 50 |
| Review order | reviewSort | string | "relevance" |
| Minimum review rating | reviewMinRating | number | |
| Maximum review rating | reviewMaxRating | number | |
| Reviews updated from | reviewsFrom | string | |
| Reviews updated to | reviewsTo | string | |
| Reviews with text only | onlyWithText | boolean | false |
| Owner reply filter | replyFilter | string | "all" |
| Business data language | language | string | "ru" |
| Photos per business | maxPhotos | integer | 0 |
| Posts per business | maxPosts | integer | 0 |
| Full menu or price list | includeMenu | boolean | false |
| Extra business details | enrichBusinessData | boolean | false |
| Business IDs to skip | excludeBusinessIds | array | |
| Only new results | onlyNew | boolean | false |


