Yandex Maps Scraper: Places, Phones & Reviews
Pricing
from $1.89 / 1,000 business places
Yandex Maps Scraper: Places, Phones & Reviews
Collect Yandex Maps places and reviews for local leads and market research. Get phones, websites, ratings, hours and reviews by search, city or business URL. No login or API key needed.
Pricing
from $1.89 / 1,000 business places
Rating
0.0
(0)
Developer
Cliqto Media
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Features
Share
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.
Sales, local marketing and research teams can use it for lead lists and local market checks. The smallest run, 10 cafes in Almaty, took about 20 seconds and costs about $0.06 on the Free plan.

Table of contents
- What it does
- How it works
- Quick start
- Use cases
- Input
- Output
- Pricing
- Limits
- API, export and integrations
- Troubleshooting
- FAQ
- Related Actors
- Support
What it does
This Yandex Maps scraper reads public business pages and search results. It has three modes:
- 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.
It works with Yandex Maps data only. A row keeps null when the source does not show a value, so an empty phone means that the Actor did not find a phone on the public record.
Good fit
- 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.
How it works
- You give the Actor search terms, cities, business IDs or Yandex Maps links.
- The Actor reads the public pages, removes duplicate businesses and applies your filters and limits.
- The Actor saves rows to a Dataset. It also saves a run report in
RUN_SUMMARYwith counts, the final status and the reason for any early stop.
Quick start
-
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).
Expected result: up to 10 rows, one per business. Each row has status: "complete" when the Actor read everything that you asked for.
Use cases
| Buyer job | Input path | Output entity | Key fields | Next integration |
|---|---|---|---|---|
| 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 |
Input
You must give at least one source: query, category, businessIds or startUrls. An empty input fails at once with INVALID_INPUT, and only the start fee is charged. Input lists have no fixed length, but the input size, the run timeout and your charge limit still apply. The Actor returns a business only once per run, even if two searches find it.
Input fields
| Field | Plain name | Type | Required | Default / prefill | Allowed values | Effect | Example | Recommendation |
|---|---|---|---|---|---|---|---|---|
mode | Data to collect | string | no | "places" | places, reviews, monitor | Choose business places, separate review rows, or changes in ratings and review counts. | places | Start with places. Use reviews for one row per review. |
query | Search terms | array | no | prefill ["кафе"] | list of strings | One or more business names or types. Results are shared across the run limit. | ["кафе"] | Use the words people type on Yandex Maps. |
location | City or area | string | no | default and prefill "Алматы" | text | City or area for the search. If you leave it empty, the Actor uses Алматы. A city in a search term may override this area. | Алматы | Use it for one city. Use locations for many. |
locations | Several cities | array | no | empty | list of strings | Search the same terms in each city. Duplicate businesses are returned once. | ["Алматы","Астана"] | Add areas to find more businesses than one search window gives. |
category | Business category | string | no | empty | text | Add a business category as another search term. | Ресторан | Use it when a term alone is too broad. |
businessIds | Business IDs | array | no | empty | list of strings | Numeric organization IDs from Yandex Maps business page URLs. | ["85901801207"] | Use it for known businesses. It skips search. |
startUrls | Business page URLs | array | no | empty | list of strings | HTTPS Yandex Maps organization pages, short links, or search pages. Other websites are rejected. | yandex.ru/maps/org/basilic/85901801207/ | Paste links from the browser. Other sites fail validation. |
maxItems | Maximum result rows | integer | no | prefill 10 | 1 to 10000 | Total result limit for the whole run. In reviews mode this counts reviews. For large searches, turn reviews off and increase the run timeout and maximum charge. Source windows may return fewer rows; use several queries or areas. | 10 | Keep 10 for a first test. Raise timeout and charge limit for big runs. |
maxResults | Maximum results (compatibility) | integer | no | empty | 1 to 10000 | Optional older name for Maximum result rows. If you set it, it overrides Maximum result rows. | 10 | Avoid it in new inputs. Use maxItems. |
includeReviews | Include reviews in places | boolean | no | true | true, false | Add review text, dates, ratings, replies and public reviewer information to each business. | false | Turn it off for phone and website lists. The run needs fewer lookups. |
maxReviews | Reviews per business | integer | no | 50 | 0 to 2400 | Maximum matching reviews per business. In Reviews mode: up to 2400 (Yandex exposes up to 600 per order; All combines four orders). Inside Places and Monitor rows: up to 50 per business, so use Reviews mode for more. A reported source total may be higher than accessible public reviews. | 50 | Inside a place, 50 is the top value. Use reviews mode for more. |
reviewSort | Review order | string | no | "relevance" | relevance, newest, oldest, highestRating, lowestRating, all | Use source relevance, newest or star order. All combines four public source orders. Oldest sorts the accessible source window; rows may be partial when older reviews are outside it. | newest | Use all for the widest review window. |
reviewMinRating | Minimum review rating | number | no | empty | 1 to 5 | Keep reviews with at least this many stars. | 4 | Use it to study unhappy or happy customers. |
reviewMaxRating | Maximum review rating | number | no | empty | 1 to 5 | Keep reviews with at most this many stars. | 2 | Set 2 to read only low ratings. |
reviewsFrom | Reviews updated from | string | no | empty | text | Keep reviews updated on or after this date. Use an ISO date or timestamp. | 2026-01-01 | Use it for a period report. |
reviewsTo | Reviews updated to | string | no | empty | text | Keep reviews updated through this date. A date without a time includes the full UTC day. | 2026-06-30 | Use it with reviewsFrom. |
onlyWithText | Reviews with text only | boolean | no | false | true, false | Skip ratings that have no review text. | true | Use it when you analyse text. |
replyFilter | Owner reply filter | string | no | "all" | all, replied, unanswered | Keep all reviews, reviews with an owner reply, or reviews without a reply. | unanswered | Use unanswered to find reviews that still need a reply. |
language | Business data language | string | no | "ru" | ru, en, tr, uk, kk | Language for addresses, categories, hours and feature names. Review text keeps its original language. | en | Keep ru unless you need another business data language. |
maxPhotos | Photos per business | integer | no | 0 | 0 to 1000 | Maximum public photo links to return. Images are not downloaded. | 10 | Keep 0 unless you need photo links. |
maxPosts | Posts per business | integer | no | 0 | 0 to 1000 | Maximum public business news posts to return. | 5 | Keep 0 unless you need posts. More posts add lookups. |
includeMenu | Full menu or price list | boolean | no | false | true, false | Read the public menu tab and include item names, prices, currencies and photo links. | true | Use it for restaurants and cafes. |
enrichBusinessData | Extra business details | boolean | no | false | true, false | Read the full menu and try role-based email addresses on the business website. Website checks are best effort; see emailStatus. | true | Use it for leads. It adds a best-effort website check. |
excludeBusinessIds | Business IDs to skip | array | no | empty | list of strings | Skip organizations you already collected. Skipped rows have no result charge. | ["85901801207"] | Use it when you extend an earlier list. |
onlyNew | Only new results | boolean | no | false | true, false | Return only new places or reviews using saved history. Monitor mode already returns changes and takes precedence over this option. | true | Use it with a schedule to get new rows only. |
stateName | History store name | string | no | "yandex-maps-scraper-history" | text in the format shown | Use the same name to continue a history. Start the name with yandex-maps-scraper-. | yandex-maps-scraper-almaty | Use one name for each list you track. |
radiusKm | Search radius | number | no | empty | 0.1 to 500 | Radius in kilometres around Search center. The source searches a matching map rectangle. | 2 | Use it with coordinates for a walking or delivery zone. |
coordinates | Search center | string | no | empty | text | Longitude,latitude. Example: 76.94,43.25. Overrides the city map center. | 76.94,43.25 | Use it for an exact point. Format: longitude,latitude. |
viewportSpan | Search area size | string | no | empty | text | Width,height in longitude and latitude degrees. Example: 0.1,0.1. | 0.1,0.1 | Use a small area to split a big city. |
filterRating | Minimum business rating | string | no | "" | empty, gt4.9, gt4.7, gt4.5, gt4.0, gt3.5, gt3.0 | Return businesses with at least this rating. | gt4.5 | Use it to ask the source for rated places only. |
minRating | Minimum place stars | number | no | empty | 0 to 5 | Keep businesses with this rating or higher. | 4 | Use it to drop low ratings from saved rows. |
filterOpenNow | Open now | boolean | no | false | true, false | Keep businesses currently open. | true | Results depend on the time of the run. |
filterOpen24h | Open 24 hours | boolean | no | false | true, false | Keep businesses open around the clock. | true | Use it to narrow the list. It can return fewer rows. |
filterDelivery | Food delivery | boolean | no | false | true, false | Keep businesses offering food delivery. | true | Use it to narrow the list. It can return fewer rows. |
filterTakeaway | Takeaway | boolean | no | false | true, false | Keep businesses offering takeaway. | true | Use it to narrow the list. It can return fewer rows. |
filterWifi | Wi-Fi | boolean | no | false | true, false | Keep businesses with Wi-Fi. | true | Use it to narrow the list. It can return fewer rows. |
filterCardPayment | Card payments | boolean | no | false | true, false | Keep businesses that accept card payments. | true | Use it to narrow the list. It can return fewer rows. |
filterParking | Parking | boolean | no | false | true, false | Keep businesses with parking. | true | Use it to narrow the list. It can return fewer rows. |
filterPetFriendly | Pets allowed | boolean | no | false | true, false | Keep businesses that allow pets. | true | Use it to narrow the list. It can return fewer rows. |
filterWheelchairAccess | Wheelchair access | boolean | no | false | true, false | Keep businesses marked as wheelchair accessible. | true | Use it to narrow the list. It can return fewer rows. |
filterGoodPlace | Good Place award | boolean | no | false | true, false | Keep businesses with the Yandex Good Place award. | true | Use it to narrow the list. It can return fewer rows. |
filterMichelin | Michelin places | boolean | no | false | true, false | Keep businesses with a Michelin mark. | true | Use it to narrow the list. It can return fewer rows. |
filterBusinessLunch | Business lunch | boolean | no | false | true, false | Keep businesses offering a business lunch. | true | Use it to narrow the list. It can return fewer rows. |
filterSummerTerrace | Summer terrace | boolean | no | false | true, false | Keep businesses with a summer terrace. | true | Use it to narrow the list. It can return fewer rows. |
filterCuisine | Cuisines | array | no | empty | list of strings | Cuisine IDs, such as italian_cuisine or japanese_cuisine. | ["italian_cuisine"] | Use it to narrow the list. It can return fewer rows. |
filterPriceCategory | Price levels | array | no | empty | list of strings | Source price level IDs, such as price_reasonable. | ["price_reasonable"] | Use it to narrow the list. It can return fewer rows. |
filterCategories | Category IDs | array | no | empty | list of strings | Source business category IDs. A business may match any selected category. | ["184106390"] | Use it to narrow the list. It can return fewer rows. |
filterChainId | Chain IDs | array | no | empty | list of strings | Keep branches of these numeric chain IDs. | ["67768784863"] | Use it with searchScope: country for one chain. |
customFilters | Other source filters | array | no | empty | list of strings | Advanced source key:value filters. Each entry is sent as a separate filter. | ["wi_fi:1"] | Advanced. Copy a key and value from a Yandex Maps search URL. |
filterPriceMin | Minimum average bill | integer | no | empty | 0 or more | Keep businesses with a stated average bill at or above this amount in local currency. | 500 | Use it with the local currency of the area. |
filterPriceMax | Maximum average bill | integer | no | empty | 0 or more | Keep businesses with a stated average bill at or below this amount in local currency. | 3000 | Use it with the local currency of the area. |
sortBy | Place order | string | no | "" | empty, distance | Use source relevance order or distance from the given origin. | distance | Keep empty for source order. |
sortOrigin | Distance origin | string | no | empty | text | Longitude,latitude used for distance sorting. | 76.94,43.25 | Use it with sortBy: distance. |
searchScope | Search coverage | string | no | "city" | city, country | Search one city, or chain branches across Russian cities and overlapping map areas, including smaller towns. Country mode needs a chain ID and a supported Russian starting city. Coverage is not exhaustive; check the run summary. | city | Use country only for chain branches in Russia. |
deliveryConnector | Send results to (optional) | string | no | empty | text | Your Slack, Notion or other MCP connector. After the run the Actor posts a short summary there. Connect services once in Apify Console → MCP connectors. | your connector | Use it if your team reads results in Slack or Notion. |
deliveryTarget | Notion page or channel (optional) | string | no | empty | text | Where to post the summary: a Notion page link (each run is added on top of that page) or a Slack channel ID. Leave empty to let the connector decide. | C0123456789 | Leave empty to let the connector decide. |
reportNewOwnerReplies | New owner replies | boolean | no | false | true, false | With Only new results in reviews mode, also return old reviews that have a new or updated owner reply. | true | Use it to follow owner replies on known reviews. |
searchTransport | Search route | string | no | "standard" | standard, webPages | Standard search transfers less data. Choose web pages if the source rejects standard search. Result fields and filters are the same. | standard | Keep standard. Try webPages if the source rejects it. |
Interacting settings
| When | Input A | Input B | Effective behavior | Example | Cost/result effect |
|---|---|---|---|---|---|
| Both limits are set | maxResults | maxItems | maxResults wins | maxResults: 5, maxItems: 10 gives up to 5 rows | Fewer rows, lower cost |
| Monitor mode with new-only | mode: monitor | onlyNew | Monitor mode wins and onlyNew is ignored | mode: monitor, onlyNew: true | Same as monitor mode |
| Review limit in places | mode: places | maxReviews | Up to 50 reviews stay inside each place row | maxReviews: 500 still saves 50 | Review rows are not charged here; more reviews add lookups |
| Review limit in reviews | mode: reviews | maxReviews and maxItems | Up to 2,400 per business, and maxItems counts reviews for the whole run | maxReviews: 2400, maxItems: 100 stops at 100 | Each review row is charged |
| Search center | coordinates | location | coordinates replaces the city center | 76.94,43.25 with Алматы | Different result order |
| City in the term | query | location | A city inside the term may override the area | кафе Москва with Алматы | Rows may come from the other city |
| Country scope | searchScope: country | filterChainId, location | Needs a chain ID and a Russian location, or the input fails | searchScope: country with no chain fails | Start fee only when it fails |
| Two rating filters | filterRating | minRating | Both apply | gt4.5 and 4 | Fewer rows; lookups are still charged |
| New-only with replies | onlyNew | reportNewOwnerReplies | Reviews mode also returns known reviews with a new owner reply | Both true | Extra review rows are charged |
| Email lookup | enrichBusinessData | includeMenu | enrichBusinessData also loads the full menu | enrichBusinessData: true | More lookups and more time |
Input examples
Find cafes in one city
{"query": ["кафе"],"location": "Алматы","maxItems": 10}
Expected behavior: the Actor searches one city and stops at 10 businesses.
Expected output: place rows with name, rating, address, phone and website.
Limit or cost note: a test run took about 20 seconds and costs about $0.06 on the Free plan.
Build a phone list in two cities
{"query": ["кафе", "ресторан"],"locations": ["Алматы", "Москва"],"includeReviews": false,"maxItems": 600}
Expected behavior: the Actor works through the terms and cities in order, removes duplicates and stops at maxItems. In our test run, all 600 rows came from the first term and city. To reach the other terms and cities, raise maxItems. Set a longer timeout in Run options for big runs.
Expected output: place rows without nested reviews.
Limit or cost note: a test run with a 900-second timeout saved 600 places in 96 seconds and costs $1.72 on the Free plan.
Collect all reachable reviews of one business
{"mode": "reviews","businessIds": ["85901801207"],"reviewSort": "all","maxReviews": 2400,"maxItems": 2400}
Expected behavior: the Actor combines four review orders and removes duplicate reviews.
Expected output: review rows with reviewId, rating, text, date and businessComment.
Limit or cost note: a test run saved 635 reviews in about 30 seconds and costs $1.78 on the Free plan.
Check for changes each week
{"mode": "monitor","query": ["кафе"],"location": "Алматы","maxItems": 100,"includeReviews": false,"stateName": "yandex-maps-scraper-almaty-cafes"}
Expected behavior: the first run saves every place as new and keeps a history. Later runs with the same stateName save only new places and places with changed ratings or review counts.
Expected output: place rows with changeType.
Limit or cost note: a run with no changes saves no rows and still pays for its lookups.
Output
The Dataset has three views: Places, Reviews and Full record. Empty columns are normal. For example, a place row has no reviewId, and a review row has no phone.
Output fields
| Field | Meaning | Type | Can be empty? | Example / enum | Source / notes |
|---|---|---|---|---|---|
recordType | Record type from the public Yandex Maps record. Null or empty when the source does not expose it. | string | no | place, review | Both row types. |
status | Record outcome. See RUN_SUMMARY for run-level limits and errors. | string | no | complete, not_found, partial, error | Both row types. |
orgId | Organization ID from the public Yandex Maps record. Null or empty when the source does not expose it. | string | no | 85901801207 | Both row types. |
businessId | Organization ID from the public Yandex Maps record. Null or empty when the source does not expose it. | string | no | 85901801207 | Both row types. Same value as orgId. |
name | Business name from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Basilic | Place rows. |
title | Business name from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Basilic | Place rows. Same value as name. |
description | Description from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Алматы, ул. Желтоксан, 115 | Place rows. |
shortTitle | Short title from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Basilic | Place rows. |
category | Category from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Кафе | Place rows. |
categories | Categories from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
categoryIds | Category ids from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
rating | Business or review rating from 1 to 5. | number | yes | 4.7 | Both row types. |
ratingCount | Number of all star ratings, including ratings without written text. | number | yes | 1937 | Place rows. |
reviewsCount | Number of written reviews reported by the source. | number | yes | 635 | Place rows. |
reviewCount | Written reviews count from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 635 | Place rows. Same value as reviewsCount. |
address | Address from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Алматы, улица Желтоксан, 115 | Place rows. |
additionalAddress | Additional address from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | ТЦ Kaisar Plaza, этаж 1 | Place rows. |
country | Country from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Казахстан | Place rows. |
region | Region from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | null | Place rows. |
city | City from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Алматы | Place rows. |
street | Street from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | улица Желтоксан | Place rows. |
house | House from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | 115 | Place rows. |
postalCode | Postal code from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | null | Place rows. |
phone | Phone from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | +77783449000 | Place rows. |
phones | Phones from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
website | Website from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | https://basilic.kz/ | Place rows. |
websites | Websites from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
socialLinks | Social links from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
lat | Latitude from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 43.252995 | Place rows. |
lng | Longitude from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 76.938589 | Place rows. |
latitude | Latitude from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 43.252995 | Place rows. Same value as lat. |
longitude | Longitude from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 76.938589 | Place rows. Same value as lng. |
url | Url from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | https://yandex.ru/maps/org/basilic/859018... | Both row types. |
businessStatus | Business status from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | open | Place rows. |
isOpenNow | Is open now from the public Yandex Maps record. Null or empty when the source does not expose it. | boolean | yes | true | Place rows. |
workingHoursText | Working hours text from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | ежедневно, 8:00 AM–11:00 PM | Place rows. |
schedule | Schedule from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
isVerifiedOwner | Is verified owner from the public Yandex Maps record. Null or empty when the source does not expose it. | boolean | yes | true | Place rows. |
features | Features from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
featureGroups | Feature groups from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
chainId | Chain id from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | 67768784863 | Place rows. |
chainName | Chain name from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Basilic | Place rows. |
chainSlug | Chain slug from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | basilic | Place rows. |
photoCount | Photo count from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 89 | Place rows. |
photos | Photos from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Both row types. Needs maxPhotos in place rows. |
videoCount | Video count from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | null | Place rows. |
logoUrl | Logo url from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | https://avatars.mds.yandex.net/get-altay/... | Place rows. |
nearbyMetro | Nearby metro from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
nearbyStops | Nearby stops from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
bounds | Bounds from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
entrances | Entrances from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
timezoneOffset | Timezone offset from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 18000 | Place rows. |
geoId | Geo id from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 162 | Place rows. |
reviewAspects | Review aspects from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
popularityHistogram | Popularity histogram from the public Yandex Maps record. Null or empty when the source does not expose it. | object | yes | object | Place rows. |
menu | Public menu items with category, name, price, currency and photo link. Empty when unavailable. | array | yes | list | Place rows. Needs includeMenu or enrichBusinessData. |
bookingPartner | Booking partner from the public Yandex Maps record. Null or empty when the source does not expose it. | object | yes | object | Place rows. |
bookingLinks | Booking links from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
sources | Sources from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
reviews | Collected reviews from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. Needs includeReviews. Up to 50 per place. |
posts | Posts from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. Needs maxPosts. |
email | Corporate email addresses published in the business record. Null when not exposed. | string | yes | role-based address from the site | Place rows. Filled only with enrichBusinessData, or when the record has one. |
relatedPlaces | Related places from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
visitsHistogram | Visits histogram from the public Yandex Maps record. Null or empty when the source does not expose it. | object | yes | object | Place rows. |
discoveryCollections | Discovery collections from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Place rows. |
panorama | Panorama from the public Yandex Maps record. Null or empty when the source does not expose it. | object | yes | object | Place rows. |
source | Name of the source service. | string | no | Yandex Maps | Both row types. |
searchQuery | Search term that first found this business. Null for direct IDs and URLs. | string | yes | кафе | Place rows. Null for IDs and URLs. |
fetchedAt | Time this run read the record, in UTC ISO 8601 format. | string | no | 2026-11-04T13:22:42.921Z | Both row types. |
reviewsFetched | Number of matching review objects included with this place. | number | yes | 50 | Place rows. |
reviewsTruncated | True when the source reports more reviews than this run scanned. | boolean | yes | true | Place rows. |
reviewId | Stable source review ID. Use with orgId to deduplicate review rows. | string | yes | AxfPR-_cHHEVFVzLvKkwQajqeNLGl2iwA | Review rows. |
text | Text from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | review text | Review rows. |
date | Time the review was updated, in UTC ISO 8601 format. | string | yes | 2026-08-11T12:38:55.190Z | Review rows. |
authorName | Author name from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | public reviewer name | Review rows. Personal data. See Limits. |
authorId | Author id from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | source ID | Review rows. Personal data. See Limits. |
authorProfileUrl | Author profile url from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | public profile link | Review rows. Personal data. See Limits. |
authorLevel | Author level from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | Дегустатор 3 уровня | Review rows. |
authorAvatarUrl | Author avatar url from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | image link | Review rows. Personal data. See Limits. |
likeCount | Like count from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 0 | Review rows. |
dislikeCount | Dislike count from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | 0 | Review rows. |
businessComment | Business comment from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | owner reply text | Review rows. |
businessCommentDate | Business comment date from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | 2026-08-17T08:47:14.549Z | Review rows. |
videos | Videos from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Review rows. |
textLanguage | Text language from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | ru | Review rows. |
textTranslations | Text translations from the public Yandex Maps record. Null or empty when the source does not expose it. | object | yes | object | Review rows. |
isPinned | Is pinned from the public Yandex Maps record. Null or empty when the source does not expose it. | boolean | yes | false | Review rows. |
photosFetched | Photos fetched from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | null | When the source or an option supplies it. |
photosTruncated | True when more photos were available than the requested photo limit. | boolean | yes | null | When the source or an option supplies it. |
changeType | Change type from the public Yandex Maps record. Null or empty when the source does not expose it. | string | yes | new, changed, owner_reply_changed | When the source or an option supplies it. Monitor mode and reply tracking. |
authorAchievements | Author achievements from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Review rows. |
authorProfessions | Author professions from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Review rows. |
trustedLikeCount | Trusted like count from the public Yandex Maps record. Null or empty when the source does not expose it. | number | yes | null | Review rows. |
keyPhrases | Key phrases from the public Yandex Maps record. Null or empty when the source does not expose it. | array | yes | list | Review rows. |
emailSourceUrl | Business website page checked for role-based contact addresses. Null if no website check was made. | string | yes | contact page URL of the business | When the source or an option supplies it. Only with enrichBusinessData. |
emailStatus | Outcome of the optional business website email lookup. Complete, not_found, or a safe technical error code. | string | yes | complete, not_found, safe error code | When the source or an option supplies it. Only with enrichBusinessData. |
reviewsStopReason | Safe error code if review collection stopped before completion. Saved reviews remain available. | string | yes | SOURCE_ERROR | When the source or an option supplies it. |
reviewHighlight | A review quotation selected by Yandex, when the source exposes one. This is not an AI-generated summary. | string | yes | null | Place rows. A source quote, not an AI summary. |
mainPhotoUrl | Public main business photo URL. | string | yes | https://avatars.mds.yandex.net/get-altay/... | Place rows. |
regionId | Yandex region identifier. | number | yes | 162 | Place rows. |
eventsCount | Number of public business events or posts reported by Yandex. | number | yes | null | Place rows. |
featureNames | Display names for source feature IDs. | object | yes | object | Place rows. |
orgName | Name of the business for this review. | string | yes | Basilic | Review rows. |
orgUrl | Public Yandex Maps business page for this review. | string | yes | https://yandex.ru/maps/org/85901801207/ | Review rows. |
reportedReviewsCount | Source total for this business. The accessible public review window can be smaller. | number | yes | 635 | Review rows. |
distanceKm | Straight-line distance from the requested search or sort point, rounded to three decimals. | number | yes | null | Place rows. Needs coordinates or sortOrigin. |
references | Public source system identifiers for the business. | array | yes | list | Place rows. |
promo | Public business promotion details, when supplied by the source. | object | yes | object | Place rows. |
Output entities and surfaces
| Situation | Dataset/API/KVS/live view | Result shape | User action |
|---|---|---|---|
| Normal item | Dataset views Places and Reviews | One row per business or review, with status: "complete" | Open the view, or export it |
| Domain-empty result | Empty Dataset, RUN_SUMMARY with status: "not_found" | No rows. The run ends as SUCCEEDED | Check the term, the city and the filters |
| Partial result | Dataset rows and RUN_SUMMARY with status: "partial" and a stopReason such as SEARCH_WINDOW_LIMIT, REVIEW_WINDOW_LIMIT, CHARGE_LIMIT or DEADLINE | Saved rows stay. Some rows may have reviewsStopReason | Add areas, raise the timeout or raise the charge limit |
| Technical failure or retry | Run status FAILED, RUN_SUMMARY with stopReason such as SOURCE_ERROR, RATE_LIMIT or INVALID_INPUT, and errors | Rows saved before the failure stay | Fix the input, or start the run again later |
The OUTPUT record has links to the Dataset and to RUN_SUMMARY.
Output example
This trimmed place row comes from the first input example:
{"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"}
The real row has more fields. null means that the public record did not show a value, or that the option for it was off. It does not mean that the business has no such value. An empty Dataset means that the search found nothing. It is not a technical error.
Send results to Slack or Notion
Pick your connector in the optional deliveryConnector field. After the run saves its data, the Actor posts a short summary (up to 25 rows and a link to the full dataset) there. Put a Notion page link or a Slack channel ID in deliveryTarget: in Notion every run is added on top of that one page, so your workspace does not fill up with new pages. A delivery error never fails the run and costs nothing extra. Connect a service once in Apify Console → MCP connectors.
Use case → fields
| Buyer job | Input path | Output entity | Key fields | Next integration |
|---|---|---|---|---|
| Call or email local businesses | query, locations, enrichBusinessData | Place | phone, website, email, emailStatus | CRM import |
| Rate your location against others | businessIds | Place | rating, ratingCount, reviewsCount, reviewAspects | Spreadsheet |
| Read customer problems | mode: reviews, reviewMaxRating | Review | rating, text, date, businessComment | Text analysis |
| Find new competitors | mode: monitor, stateName | Place | changeType, name, address | Slack or Notion summary |
Pricing
Pricing unit
You pay per event. Apify platform usage is included in these prices: the developer pays for it.
| Event | When it is charged | Free | Bronze | Silver | Gold and up |
|---|---|---|---|---|---|
place | One business row saved | $0.0027 | $0.00243 | $0.00216 | $0.00189 |
review | One review row saved in reviews mode | $0.0026 | $0.00234 | $0.00208 | $0.00182 |
source-page | One completed source lookup, including empty searches and unavailable business IDs | $0.0026 | $0.00234 | $0.00208 | $0.00182 |
apify-actor-start | Run start. It scales with run memory, per GB and at least one | $0.0001 | $0.0001 | $0.0001 | $0.0001 |
Reviews inside a place row have no review charge, but loading them adds lookups.
- Valid search with no results: you pay for the lookup and the start, $0.0027 in a test run.
- Filter with no matches: you pay for each lookup and the start, even with no saved rows.
- Monitor run with no changes: you pay for each lookup and the start, $0.0027 in a test run.
- Invalid input: you pay only the start fee, $0.0001.
- Partial or failed run: you pay for rows already saved and lookups already completed. A lookup that ends with a source error is not charged.
Set Maximum cost per run to at least $0.03. When the limit is reached, the Actor stops with stopReason: "CHARGE_LIMIT" and keeps the saved rows.
Cost examples
Measured runs at Free plan prices:
| Scenario | Input scope | Expected item/event count | Base charge | Optional charge | Stop/cap behavior |
|---|---|---|---|---|---|
| First test | кафе, Алматы, 10 rows, reviews on | 10 places, 11 lookups, 1 start | $0.0557 | none | Stops at 10 rows |
| Phone list | 2 terms, 2 cities, reviews off | 600 places, 40 lookups, 1 start | $1.72 | none | Stops at maxItems or at the search window |
| One business, reviews | Reviews mode, reviewSort: all | 635 reviews, 49 lookups, 1 start | $1.78 | none | Stops when the review window ends |
| Search with no results | Valid term, nothing found | 0 rows, 1 lookup, 1 start | $0.0027 | none | Ends as not_found |
| Invalid input | No source given | 1 start | $0.0001 | none | Fails before any lookup |
Limits
- 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. - Personal data: review rows can have public reviewer names, profile links and photos. You are responsible for a lawful use of this data, for example under GDPR or local law.
- Not included: private data, data that needs a login, and any data from other map services.
API, export and integrations
- API: start a run with
POST https://api.apify.com/v2/acts/cliqtomedia~yandex-maps-scraper/runsand your Apify token. The JSON body is the same as the input examples above. Read rows from the run's Dataset, and readRUN_SUMMARYfrom its key-value store. - Export: download a Dataset view as JSON, CSV, Excel, XML or HTML from the Output tab or the API.
- Scheduling: create a schedule in Apify Console with
mode: monitororonlyNew: trueand onestateName. Each run compares with the same history. - Webhooks / no-code: use an Apify webhook on run success to tell another system that new rows are ready. The next system reads the Dataset ID from the run and uses
orgIdorreviewIdas the key. - SDK / MCP / agent: call the Actor by the name
cliqtomedia/yandex-maps-scraperwith the Apify SDK or the MCP server.
Use with AI agents (MCP)
MCP server URL with only this Actor: https://mcp.apify.com?tools=cliqtomedia/yandex-maps-scraper
Smallest useful input:
{"query": ["кафе"],"location": "Алматы","maxItems": 10}
Key output fields:
name: business name.ratingandreviewsCount: business rating and number of written reviews.address: full address as text.phoneandwebsite: public contacts, ornullwhen not shown.url: public Yandex Maps page of the business.
A run of this size took about 20 seconds and costs about $0.06 on the Free plan. Limits: 10,000 rows in a run, 300 seconds default timeout. Check the run's status and stopReason in RUN_SUMMARY to see if the result is partial.
Troubleshooting
The Dataset is empty
Symptom: the run succeeded and has 0 rows.
Likely reason: the source found nothing for this term and area, or your filters removed every result.
Check: RUN_SUMMARY for status, notFound and filtered.
Action: use a simpler term, try the Yandex Maps site with the same words, and remove filters one by one.
I got fewer rows than the limit
Symptom: the run saved fewer rows than maxItems.
Likely reason: the search window ended, duplicates were removed, the timeout came first or the charge limit came first.
Check: stopReason and duplicates in RUN_SUMMARY.
Action: for SEARCH_WINDOW_LIMIT, add terms or areas. For DEADLINE, raise the timeout. For CHARGE_LIMIT, raise the maximum cost.
I got fewer reviews than the business shows
Symptom: reportedReviewsCount is higher than the rows that you got.
Likely reason: the source shows only part of the reviews, or your filters removed some.
Check: stopReason in RUN_SUMMARY and your review filters.
Action: use reviewSort: all and remove filters. If it still ends with REVIEW_WINDOW_LIMIT, these are the reviews that the Actor could reach.
The run failed with INVALID_INPUT
Symptom: the run failed after a second or two with no rows. Likely reason: there is no source in the input, a value has the wrong format, or a link is not a Yandex Maps link. Check: the message in the run log. Action: fix the named field and start the run again. Only the start fee is charged.
The run failed with SOURCE_ERROR
Symptom: the run has status FAILED, and the summary shows SOURCE_ERROR.
Likely reason: the source rejected a request or returned an unexpected page. This is not the same as an empty result.
Check: errors and pendingInputs in RUN_SUMMARY. Saved rows stay in the Dataset.
Action: wait a few minutes and start the run again with the pending inputs. For a search, you can also try searchTransport: webPages.
The email column is empty
Symptom: email is null.
Likely reason: enrichBusinessData is off, the business has no website, or the site shows no role-based address.
Check: emailStatus and emailSourceUrl.
Action: turn on enrichBusinessData. A failed website check does not fail the row.
FAQ
Do I need a Yandex account or API key?
No. The Actor reads public data and asks for no login, key or cookies. You need only an Apify account to run it.
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.
Does it collect every review of a business?
Not always. Yandex Maps gives access to a limited window. With reviewSort: all, the Actor combines four orders and removes duplicates, up to 2,400 reviews. In a test run for a business with 635 reviews it saved all 635. Compare your rows with reportedReviewsCount.
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.
Which countries does it work for?
It works for places that Yandex Maps covers. We tested it in Kazakhstan and Russia. Business data can come in ru, en, tr, uk or kk, and review text keeps its original language.
Related Actors
- OpenStreetMap POI Extractor: Cafes, Shops, Hotels by City: get points of interest from an open map to compare with your list.
- Website Contact Scraper | Contacts & Social Links: find more contacts on the websites from the
websitecolumn. - Bulk Email Verifier: MX, Disposable, Role & Typo Check: check found emails before you send.
- OpenTable Reviews & Restaurants Scraper, No Login: add restaurant reviews from another source.
Support
For a bug, question or feature request, open the Issues tab of this Actor on Apify. Include the run ID, the input mode and the error text if it is not sensitive. Never send tokens, cookies, billing data or private data.

