Yandex Maps Scraper: Places, Phones & Reviews avatar

Yandex Maps Scraper: Places, Phones & Reviews

Pricing

from $1.89 / 1,000 business places

Go to Apify Store
Yandex Maps Scraper: Places, Phones & Reviews

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

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Features

Limited permissions

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.

Yandex Maps Scraper: a search, city or business link goes in; places, phones, ratings and reviews come out as a table

Table of contents

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.

👉 Try it now: open the input form

How it works

  1. You give the Actor search terms, cities, business IDs or Yandex Maps links.
  2. The Actor reads the public pages, removes duplicate businesses and applies your filters and limits.
  3. The Actor saves rows to a Dataset. It also saves a run report in RUN_SUMMARY with counts, the final status and the reason for any early stop.

👉 Try it now: open the input form

Quick start

Input form with the search term, the city, the row limit and the start button marked as boxes 1, 2, 3 and 4

  1. Open the Input tab. Enter what to search in Search terms (box 1). The form starts with кафе.

  2. Enter a place in City or area (box 2). The form starts with Алматы.

  3. Keep Maximum result rows at 10 for a first test (box 3).

  4. Click the green Start button at the bottom of the page (box 4). It can also read Save & start.

  5. Open the Output tab and check Business name, Category, Rating, Written reviews count, Address, Phone and Website in the Places view (box 5).

    Output table with business names, ratings, addresses, phones and websites from a test run

Expected result: up to 10 rows, one per business. Each row has status: "complete" when the Actor read everything that you asked for.

👉 Try it now: open the input form

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Build a local lead listquery, locations, includeReviews: false, enrichBusinessDataPlacename, phone, website, email, addressCSV or Excel export, CRM import
Study customer reviewsmode: reviews, businessIds, reviewSort: allReviewrating, text, date, businessCommentText analysis in a spreadsheet or BI tool
Find reviews without a replymode: reviews, startUrls, replyFilter: unansweredReviewreviewId, rating, text, urlSlack or Notion summary
Track ratings each weekmode: monitor, query, location, stateNamePlacechangeType, rating, reviewsCountApify schedule, webhook
Compare a market by cityquery, locations, filterRating, categoryPlacecategory, rating, reviewsCount, cityBI tool, spreadsheet

👉 Try it now: open the input form

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

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
modeData to collectstringno"places"places, reviews, monitorChoose business places, separate review rows, or changes in ratings and review counts.placesStart with places. Use reviews for one row per review.
querySearch termsarraynoprefill ["кафе"]list of stringsOne or more business names or types. Results are shared across the run limit.["кафе"]Use the words people type on Yandex Maps.
locationCity or areastringnodefault and prefill "Алматы"textCity 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.
locationsSeveral citiesarraynoemptylist of stringsSearch the same terms in each city. Duplicate businesses are returned once.["Алматы","Астана"]Add areas to find more businesses than one search window gives.
categoryBusiness categorystringnoemptytextAdd a business category as another search term.РесторанUse it when a term alone is too broad.
businessIdsBusiness IDsarraynoemptylist of stringsNumeric organization IDs from Yandex Maps business page URLs.["85901801207"]Use it for known businesses. It skips search.
startUrlsBusiness page URLsarraynoemptylist of stringsHTTPS 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.
maxItemsMaximum result rowsintegernoprefill 101 to 10000Total 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.10Keep 10 for a first test. Raise timeout and charge limit for big runs.
maxResultsMaximum results (compatibility)integernoempty1 to 10000Optional older name for Maximum result rows. If you set it, it overrides Maximum result rows.10Avoid it in new inputs. Use maxItems.
includeReviewsInclude reviews in placesbooleannotruetrue, falseAdd review text, dates, ratings, replies and public reviewer information to each business.falseTurn it off for phone and website lists. The run needs fewer lookups.
maxReviewsReviews per businessintegerno500 to 2400Maximum 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.50Inside a place, 50 is the top value. Use reviews mode for more.
reviewSortReview orderstringno"relevance"relevance, newest, oldest, highestRating, lowestRating, allUse 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.newestUse all for the widest review window.
reviewMinRatingMinimum review ratingnumbernoempty1 to 5Keep reviews with at least this many stars.4Use it to study unhappy or happy customers.
reviewMaxRatingMaximum review ratingnumbernoempty1 to 5Keep reviews with at most this many stars.2Set 2 to read only low ratings.
reviewsFromReviews updated fromstringnoemptytextKeep reviews updated on or after this date. Use an ISO date or timestamp.2026-01-01Use it for a period report.
reviewsToReviews updated tostringnoemptytextKeep reviews updated through this date. A date without a time includes the full UTC day.2026-06-30Use it with reviewsFrom.
onlyWithTextReviews with text onlybooleannofalsetrue, falseSkip ratings that have no review text.trueUse it when you analyse text.
replyFilterOwner reply filterstringno"all"all, replied, unansweredKeep all reviews, reviews with an owner reply, or reviews without a reply.unansweredUse unanswered to find reviews that still need a reply.
languageBusiness data languagestringno"ru"ru, en, tr, uk, kkLanguage for addresses, categories, hours and feature names. Review text keeps its original language.enKeep ru unless you need another business data language.
maxPhotosPhotos per businessintegerno00 to 1000Maximum public photo links to return. Images are not downloaded.10Keep 0 unless you need photo links.
maxPostsPosts per businessintegerno00 to 1000Maximum public business news posts to return.5Keep 0 unless you need posts. More posts add lookups.
includeMenuFull menu or price listbooleannofalsetrue, falseRead the public menu tab and include item names, prices, currencies and photo links.trueUse it for restaurants and cafes.
enrichBusinessDataExtra business detailsbooleannofalsetrue, falseRead the full menu and try role-based email addresses on the business website. Website checks are best effort; see emailStatus.trueUse it for leads. It adds a best-effort website check.
excludeBusinessIdsBusiness IDs to skiparraynoemptylist of stringsSkip organizations you already collected. Skipped rows have no result charge.["85901801207"]Use it when you extend an earlier list.
onlyNewOnly new resultsbooleannofalsetrue, falseReturn only new places or reviews using saved history. Monitor mode already returns changes and takes precedence over this option.trueUse it with a schedule to get new rows only.
stateNameHistory store namestringno"yandex-maps-scraper-history"text in the format shownUse the same name to continue a history. Start the name with yandex-maps-scraper-.yandex-maps-scraper-almatyUse one name for each list you track.
radiusKmSearch radiusnumbernoempty0.1 to 500Radius in kilometres around Search center. The source searches a matching map rectangle.2Use it with coordinates for a walking or delivery zone.
coordinatesSearch centerstringnoemptytextLongitude,latitude. Example: 76.94,43.25. Overrides the city map center.76.94,43.25Use it for an exact point. Format: longitude,latitude.
viewportSpanSearch area sizestringnoemptytextWidth,height in longitude and latitude degrees. Example: 0.1,0.1.0.1,0.1Use a small area to split a big city.
filterRatingMinimum business ratingstringno""empty, gt4.9, gt4.7, gt4.5, gt4.0, gt3.5, gt3.0Return businesses with at least this rating.gt4.5Use it to ask the source for rated places only.
minRatingMinimum place starsnumbernoempty0 to 5Keep businesses with this rating or higher.4Use it to drop low ratings from saved rows.
filterOpenNowOpen nowbooleannofalsetrue, falseKeep businesses currently open.trueResults depend on the time of the run.
filterOpen24hOpen 24 hoursbooleannofalsetrue, falseKeep businesses open around the clock.trueUse it to narrow the list. It can return fewer rows.
filterDeliveryFood deliverybooleannofalsetrue, falseKeep businesses offering food delivery.trueUse it to narrow the list. It can return fewer rows.
filterTakeawayTakeawaybooleannofalsetrue, falseKeep businesses offering takeaway.trueUse it to narrow the list. It can return fewer rows.
filterWifiWi-Fibooleannofalsetrue, falseKeep businesses with Wi-Fi.trueUse it to narrow the list. It can return fewer rows.
filterCardPaymentCard paymentsbooleannofalsetrue, falseKeep businesses that accept card payments.trueUse it to narrow the list. It can return fewer rows.
filterParkingParkingbooleannofalsetrue, falseKeep businesses with parking.trueUse it to narrow the list. It can return fewer rows.
filterPetFriendlyPets allowedbooleannofalsetrue, falseKeep businesses that allow pets.trueUse it to narrow the list. It can return fewer rows.
filterWheelchairAccessWheelchair accessbooleannofalsetrue, falseKeep businesses marked as wheelchair accessible.trueUse it to narrow the list. It can return fewer rows.
filterGoodPlaceGood Place awardbooleannofalsetrue, falseKeep businesses with the Yandex Good Place award.trueUse it to narrow the list. It can return fewer rows.
filterMichelinMichelin placesbooleannofalsetrue, falseKeep businesses with a Michelin mark.trueUse it to narrow the list. It can return fewer rows.
filterBusinessLunchBusiness lunchbooleannofalsetrue, falseKeep businesses offering a business lunch.trueUse it to narrow the list. It can return fewer rows.
filterSummerTerraceSummer terracebooleannofalsetrue, falseKeep businesses with a summer terrace.trueUse it to narrow the list. It can return fewer rows.
filterCuisineCuisinesarraynoemptylist of stringsCuisine IDs, such as italian_cuisine or japanese_cuisine.["italian_cuisine"]Use it to narrow the list. It can return fewer rows.
filterPriceCategoryPrice levelsarraynoemptylist of stringsSource price level IDs, such as price_reasonable.["price_reasonable"]Use it to narrow the list. It can return fewer rows.
filterCategoriesCategory IDsarraynoemptylist of stringsSource business category IDs. A business may match any selected category.["184106390"]Use it to narrow the list. It can return fewer rows.
filterChainIdChain IDsarraynoemptylist of stringsKeep branches of these numeric chain IDs.["67768784863"]Use it with searchScope: country for one chain.
customFiltersOther source filtersarraynoemptylist of stringsAdvanced 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.
filterPriceMinMinimum average billintegernoempty0 or moreKeep businesses with a stated average bill at or above this amount in local currency.500Use it with the local currency of the area.
filterPriceMaxMaximum average billintegernoempty0 or moreKeep businesses with a stated average bill at or below this amount in local currency.3000Use it with the local currency of the area.
sortByPlace orderstringno""empty, distanceUse source relevance order or distance from the given origin.distanceKeep empty for source order.
sortOriginDistance originstringnoemptytextLongitude,latitude used for distance sorting.76.94,43.25Use it with sortBy: distance.
searchScopeSearch coveragestringno"city"city, countrySearch 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.cityUse country only for chain branches in Russia.
deliveryConnectorSend results to (optional)stringnoemptytextYour 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 connectorUse it if your team reads results in Slack or Notion.
deliveryTargetNotion page or channel (optional)stringnoemptytextWhere 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.C0123456789Leave empty to let the connector decide.
reportNewOwnerRepliesNew owner repliesbooleannofalsetrue, falseWith Only new results in reviews mode, also return old reviews that have a new or updated owner reply.trueUse it to follow owner replies on known reviews.
searchTransportSearch routestringno"standard"standard, webPagesStandard search transfers less data. Choose web pages if the source rejects standard search. Result fields and filters are the same.standardKeep standard. Try webPages if the source rejects it.

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
Both limits are setmaxResultsmaxItemsmaxResults winsmaxResults: 5, maxItems: 10 gives up to 5 rowsFewer rows, lower cost
Monitor mode with new-onlymode: monitoronlyNewMonitor mode wins and onlyNew is ignoredmode: monitor, onlyNew: trueSame as monitor mode
Review limit in placesmode: placesmaxReviewsUp to 50 reviews stay inside each place rowmaxReviews: 500 still saves 50Review rows are not charged here; more reviews add lookups
Review limit in reviewsmode: reviewsmaxReviews and maxItemsUp to 2,400 per business, and maxItems counts reviews for the whole runmaxReviews: 2400, maxItems: 100 stops at 100Each review row is charged
Search centercoordinateslocationcoordinates replaces the city center76.94,43.25 with АлматыDifferent result order
City in the termquerylocationA city inside the term may override the areaкафе Москва with АлматыRows may come from the other city
Country scopesearchScope: countryfilterChainId, locationNeeds a chain ID and a Russian location, or the input failssearchScope: country with no chain failsStart fee only when it fails
Two rating filtersfilterRatingminRatingBoth applygt4.5 and 4Fewer rows; lookups are still charged
New-only with repliesonlyNewreportNewOwnerRepliesReviews mode also returns known reviews with a new owner replyBoth trueExtra review rows are charged
Email lookupenrichBusinessDataincludeMenuenrichBusinessData also loads the full menuenrichBusinessData: trueMore 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.

👉 Try it now: open the input form

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

FieldMeaningTypeCan be empty?Example / enumSource / notes
recordTypeRecord type from the public Yandex Maps record. Null or empty when the source does not expose it.stringnoplace, reviewBoth row types.
statusRecord outcome. See RUN_SUMMARY for run-level limits and errors.stringnocomplete, not_found, partial, errorBoth row types.
orgIdOrganization ID from the public Yandex Maps record. Null or empty when the source does not expose it.stringno85901801207Both row types.
businessIdOrganization ID from the public Yandex Maps record. Null or empty when the source does not expose it.stringno85901801207Both row types. Same value as orgId.
nameBusiness name from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesBasilicPlace rows.
titleBusiness name from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesBasilicPlace rows. Same value as name.
descriptionDescription from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesАлматы, ул. Желтоксан, 115Place rows.
shortTitleShort title from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesBasilicPlace rows.
categoryCategory from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesКафеPlace rows.
categoriesCategories from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
categoryIdsCategory ids from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
ratingBusiness or review rating from 1 to 5.numberyes4.7Both row types.
ratingCountNumber of all star ratings, including ratings without written text.numberyes1937Place rows.
reviewsCountNumber of written reviews reported by the source.numberyes635Place rows.
reviewCountWritten reviews count from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes635Place rows. Same value as reviewsCount.
addressAddress from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesАлматы, улица Желтоксан, 115Place rows.
additionalAddressAdditional address from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesТЦ Kaisar Plaza, этаж 1Place rows.
countryCountry from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesКазахстанPlace rows.
regionRegion from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesnullPlace rows.
cityCity from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesАлматыPlace rows.
streetStreet from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesулица ЖелтоксанPlace rows.
houseHouse from the public Yandex Maps record. Null or empty when the source does not expose it.stringyes115Place rows.
postalCodePostal code from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesnullPlace rows.
phonePhone from the public Yandex Maps record. Null or empty when the source does not expose it.stringyes+77783449000Place rows.
phonesPhones from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
websiteWebsite from the public Yandex Maps record. Null or empty when the source does not expose it.stringyeshttps://basilic.kz/Place rows.
websitesWebsites from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
socialLinksSocial links from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
latLatitude from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes43.252995Place rows.
lngLongitude from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes76.938589Place rows.
latitudeLatitude from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes43.252995Place rows. Same value as lat.
longitudeLongitude from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes76.938589Place rows. Same value as lng.
urlUrl from the public Yandex Maps record. Null or empty when the source does not expose it.stringyeshttps://yandex.ru/maps/org/basilic/859018...Both row types.
businessStatusBusiness status from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesopenPlace rows.
isOpenNowIs open now from the public Yandex Maps record. Null or empty when the source does not expose it.booleanyestruePlace rows.
workingHoursTextWorking hours text from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesежедневно, 8:00 AM–11:00 PMPlace rows.
scheduleSchedule from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
isVerifiedOwnerIs verified owner from the public Yandex Maps record. Null or empty when the source does not expose it.booleanyestruePlace rows.
featuresFeatures from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
featureGroupsFeature groups from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
chainIdChain id from the public Yandex Maps record. Null or empty when the source does not expose it.stringyes67768784863Place rows.
chainNameChain name from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesBasilicPlace rows.
chainSlugChain slug from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesbasilicPlace rows.
photoCountPhoto count from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes89Place rows.
photosPhotos from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistBoth row types. Needs maxPhotos in place rows.
videoCountVideo count from the public Yandex Maps record. Null or empty when the source does not expose it.numberyesnullPlace rows.
logoUrlLogo url from the public Yandex Maps record. Null or empty when the source does not expose it.stringyeshttps://avatars.mds.yandex.net/get-altay/...Place rows.
nearbyMetroNearby metro from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
nearbyStopsNearby stops from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
boundsBounds from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
entrancesEntrances from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
timezoneOffsetTimezone offset from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes18000Place rows.
geoIdGeo id from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes162Place rows.
reviewAspectsReview aspects from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
popularityHistogramPopularity histogram from the public Yandex Maps record. Null or empty when the source does not expose it.objectyesobjectPlace rows.
menuPublic menu items with category, name, price, currency and photo link. Empty when unavailable.arrayyeslistPlace rows. Needs includeMenu or enrichBusinessData.
bookingPartnerBooking partner from the public Yandex Maps record. Null or empty when the source does not expose it.objectyesobjectPlace rows.
bookingLinksBooking links from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
sourcesSources from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
reviewsCollected reviews from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows. Needs includeReviews. Up to 50 per place.
postsPosts from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows. Needs maxPosts.
emailCorporate email addresses published in the business record. Null when not exposed.stringyesrole-based address from the sitePlace rows. Filled only with enrichBusinessData, or when the record has one.
relatedPlacesRelated places from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
visitsHistogramVisits histogram from the public Yandex Maps record. Null or empty when the source does not expose it.objectyesobjectPlace rows.
discoveryCollectionsDiscovery collections from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistPlace rows.
panoramaPanorama from the public Yandex Maps record. Null or empty when the source does not expose it.objectyesobjectPlace rows.
sourceName of the source service.stringnoYandex MapsBoth row types.
searchQuerySearch term that first found this business. Null for direct IDs and URLs.stringyesкафеPlace rows. Null for IDs and URLs.
fetchedAtTime this run read the record, in UTC ISO 8601 format.stringno2026-11-04T13:22:42.921ZBoth row types.
reviewsFetchedNumber of matching review objects included with this place.numberyes50Place rows.
reviewsTruncatedTrue when the source reports more reviews than this run scanned.booleanyestruePlace rows.
reviewIdStable source review ID. Use with orgId to deduplicate review rows.stringyesAxfPR-_cHHEVFVzLvKkwQajqeNLGl2iwAReview rows.
textText from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesreview textReview rows.
dateTime the review was updated, in UTC ISO 8601 format.stringyes2026-08-11T12:38:55.190ZReview rows.
authorNameAuthor name from the public Yandex Maps record. Null or empty when the source does not expose it.stringyespublic reviewer nameReview rows. Personal data. See Limits.
authorIdAuthor id from the public Yandex Maps record. Null or empty when the source does not expose it.stringyessource IDReview rows. Personal data. See Limits.
authorProfileUrlAuthor profile url from the public Yandex Maps record. Null or empty when the source does not expose it.stringyespublic profile linkReview rows. Personal data. See Limits.
authorLevelAuthor level from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesДегустатор 3 уровняReview rows.
authorAvatarUrlAuthor avatar url from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesimage linkReview rows. Personal data. See Limits.
likeCountLike count from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes0Review rows.
dislikeCountDislike count from the public Yandex Maps record. Null or empty when the source does not expose it.numberyes0Review rows.
businessCommentBusiness comment from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesowner reply textReview rows.
businessCommentDateBusiness comment date from the public Yandex Maps record. Null or empty when the source does not expose it.stringyes2026-08-17T08:47:14.549ZReview rows.
videosVideos from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistReview rows.
textLanguageText language from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesruReview rows.
textTranslationsText translations from the public Yandex Maps record. Null or empty when the source does not expose it.objectyesobjectReview rows.
isPinnedIs pinned from the public Yandex Maps record. Null or empty when the source does not expose it.booleanyesfalseReview rows.
photosFetchedPhotos fetched from the public Yandex Maps record. Null or empty when the source does not expose it.numberyesnullWhen the source or an option supplies it.
photosTruncatedTrue when more photos were available than the requested photo limit.booleanyesnullWhen the source or an option supplies it.
changeTypeChange type from the public Yandex Maps record. Null or empty when the source does not expose it.stringyesnew, changed, owner_reply_changedWhen the source or an option supplies it. Monitor mode and reply tracking.
authorAchievementsAuthor achievements from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistReview rows.
authorProfessionsAuthor professions from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistReview rows.
trustedLikeCountTrusted like count from the public Yandex Maps record. Null or empty when the source does not expose it.numberyesnullReview rows.
keyPhrasesKey phrases from the public Yandex Maps record. Null or empty when the source does not expose it.arrayyeslistReview rows.
emailSourceUrlBusiness website page checked for role-based contact addresses. Null if no website check was made.stringyescontact page URL of the businessWhen the source or an option supplies it. Only with enrichBusinessData.
emailStatusOutcome of the optional business website email lookup. Complete, not_found, or a safe technical error code.stringyescomplete, not_found, safe error codeWhen the source or an option supplies it. Only with enrichBusinessData.
reviewsStopReasonSafe error code if review collection stopped before completion. Saved reviews remain available.stringyesSOURCE_ERRORWhen the source or an option supplies it.
reviewHighlightA review quotation selected by Yandex, when the source exposes one. This is not an AI-generated summary.stringyesnullPlace rows. A source quote, not an AI summary.
mainPhotoUrlPublic main business photo URL.stringyeshttps://avatars.mds.yandex.net/get-altay/...Place rows.
regionIdYandex region identifier.numberyes162Place rows.
eventsCountNumber of public business events or posts reported by Yandex.numberyesnullPlace rows.
featureNamesDisplay names for source feature IDs.objectyesobjectPlace rows.
orgNameName of the business for this review.stringyesBasilicReview rows.
orgUrlPublic Yandex Maps business page for this review.stringyeshttps://yandex.ru/maps/org/85901801207/Review rows.
reportedReviewsCountSource total for this business. The accessible public review window can be smaller.numberyes635Review rows.
distanceKmStraight-line distance from the requested search or sort point, rounded to three decimals.numberyesnullPlace rows. Needs coordinates or sortOrigin.
referencesPublic source system identifiers for the business.arrayyeslistPlace rows.
promoPublic business promotion details, when supplied by the source.objectyesobjectPlace rows.

Output entities and surfaces

SituationDataset/API/KVS/live viewResult shapeUser action
Normal itemDataset views Places and ReviewsOne row per business or review, with status: "complete"Open the view, or export it
Domain-empty resultEmpty Dataset, RUN_SUMMARY with status: "not_found"No rows. The run ends as SUCCEEDEDCheck the term, the city and the filters
Partial resultDataset rows and RUN_SUMMARY with status: "partial" and a stopReason such as SEARCH_WINDOW_LIMIT, REVIEW_WINDOW_LIMIT, CHARGE_LIMIT or DEADLINESaved rows stay. Some rows may have reviewsStopReasonAdd areas, raise the timeout or raise the charge limit
Technical failure or retryRun status FAILED, RUN_SUMMARY with stopReason such as SOURCE_ERROR, RATE_LIMIT or INVALID_INPUT, and errorsRows saved before the failure stayFix 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 jobInput pathOutput entityKey fieldsNext integration
Call or email local businessesquery, locations, enrichBusinessDataPlacephone, website, email, emailStatusCRM import
Rate your location against othersbusinessIdsPlacerating, ratingCount, reviewsCount, reviewAspectsSpreadsheet
Read customer problemsmode: reviews, reviewMaxRatingReviewrating, text, date, businessCommentText analysis
Find new competitorsmode: monitor, stateNamePlacechangeType, name, addressSlack or Notion summary

👉 Try it now: open the input form

Pricing

Pricing unit

You pay per event. Apify platform usage is included in these prices: the developer pays for it.

EventWhen it is chargedFreeBronzeSilverGold and up
placeOne business row saved$0.0027$0.00243$0.00216$0.00189
reviewOne review row saved in reviews mode$0.0026$0.00234$0.00208$0.00182
source-pageOne completed source lookup, including empty searches and unavailable business IDs$0.0026$0.00234$0.00208$0.00182
apify-actor-startRun 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:

ScenarioInput scopeExpected item/event countBase chargeOptional chargeStop/cap behavior
First testкафе, Алматы, 10 rows, reviews on10 places, 11 lookups, 1 start$0.0557noneStops at 10 rows
Phone list2 terms, 2 cities, reviews off600 places, 40 lookups, 1 start$1.72noneStops at maxItems or at the search window
One business, reviewsReviews mode, reviewSort: all635 reviews, 49 lookups, 1 start$1.78noneStops when the review window ends
Search with no resultsValid term, nothing found0 rows, 1 lookup, 1 start$0.0027noneEnds as not_found
Invalid inputNo source given1 start$0.0001noneFails before any lookup

👉 Try it now: open the input form

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 reportedReviewsCount and reviewsTruncated. 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.

👉 Try it now: open the input form

API, export and integrations

  • API: start a run with POST https://api.apify.com/v2/acts/cliqtomedia~yandex-maps-scraper/runs and your Apify token. The JSON body is the same as the input examples above. Read rows from the run's Dataset, and read RUN_SUMMARY from 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: monitor or onlyNew: true and one stateName. 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 orgId or reviewId as the key.
  • SDK / MCP / agent: call the Actor by the name cliqtomedia/yandex-maps-scraper with 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.
  • rating and reviewsCount: business rating and number of written reviews.
  • address: full address as text.
  • phone and website: public contacts, or null when 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.

👉 Try it now: open the input form

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.

👉 Try it now: open the input form

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.

👉 Try it now: open the input form

👉 Try it now: open the input form

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.

👉 Try it now: open the input form