Yandex Maps API

Get Yandex Maps data with one API

The Yandex Maps API returns Russian and CIS local-business data as clean JSON.

Y
/yandex-maps/v1

5 active endpoints. Every call is 1 credit.

  • POST/yandex-maps/v1/search
  • POST/yandex-maps/v1/detail
  • POST/yandex-maps/v1/reviews
  • POST/yandex-maps/v1/nearby
  • POST/yandex-maps/v1/geocode

What Yandex Maps endpoints does ReefAPI ship?

5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

5 endpoints

search

1 cr

Search Yandex Maps for businesses by text/category.

required
text
optional
city, region_id, ll, z

detail

1 cr

Full business card for one org by org_id (or a Yandex Maps org URL).

required
optional
org_id, url

reviews

1 cr

Paginated public customer reviews for an org.

required
org_id
optional
page

nearby

1 cr

Find businesses of a category around a coordinate.

required
ll, text
optional
z

geocode

1 cr

Geocode an address/place name to coordinates via Yandex.

required
address
optional

Every parameter, every allowed value →

Yandex Maps API

3 of 5 endpoints, ready to run

View docs ↗

Search Yandex Maps for businesses by text/category.

1 credit1 required · 2 optional
POST/yandex-maps/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Yandex Maps API works

Yandex Maps is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 185 engines.

02
Call
POST /yandex-maps/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

How a Yandex Maps org is identified, and which text is localized

This engine reads the Turkish surface of Yandex Maps, so almost every human-readable label comes back in Turkish while the ids and slugs stay stable. Two things trip callers up: there are two separate review counters that mean different things, and a rating of 0.0 is not a rating. Everything below came from live calls on 2026-08-27.

FieldFormatMeasured example
org_idNumeric string, 9-12 digits, no prefix, the number in /maps/org/<seoname>/<org_id>/"1242233919" (Kofemaniya, Moscow), "138235130252", "173477046228". It is always a string in the response; do not parse it as an integer.
ratingFloat 0-5 with one decimal. 0.0 means nobody has voted, not zero stars4.7 for Kofemaniya. In a Berlin cafe search 22 of 25 orgs came back 0.0 with rating_count 0; in a New York search, 24 of 25.
rating_count vs review_countStar votes against written reviews, and rating_count is the larger of the twoKofemaniya: rating_count 7809, review_count 2264. A small Kilis coffee shop: rating_count 3, review_count 0.
categories[]{id, name, seoname} where name is localized Turkish and seoname is a stable English slug{"id":"184106390","name":"Kafe","seoname":"cafe"}. Other measured slugs: coffee_shop, coffee_store, tea_shop, restaurant, pharmacy, fast_food, advertising_agency.
statusString; measured values "open" and "permanent-closed"A 25-org Moscow search returned 24 "open" and 1 "permanent-closed".
hours_textA single free-text Turkish string, or null when the card has none"günlük, 09:00-23:00" and "günlük, 24 saat açık". It is not a structured schedule, so parse it or display it as-is.
reviews[].ratingInteger 1-5, unlike the org-level rating which is a floatOne 50-review page for Kofemaniya broke down as 37 fives, 5 threes, 4 twos and 4 ones.
reviews[].dateISO 8601 UTC with milliseconds and a Z"2026-05-16T10:43:03.043Z". review_id sits alongside it as a 30-33 character mixed-case token, not a number.
geocode result{name, address, latitude, longitude, type, uri} where uri is Yandex's own object reference"Taksim Meydanı" resolved to 41.037437, 28.985607 with type "toponym" and uri "ymapsbm1://geo?data=<base64>".

ll is "lon,lat", longitude first, the reverse order of the latitude and longitude fields the response gives back. It is also the only geo anchor that held up under test: a search with region_id=103705 and city=istanbul returned coffee shops in Kilis, roughly 900 km from Istanbul, while the same query anchored with ll=28.985,41.036 stayed inside Beyoğlu.

What people build with Yandex Maps

The jobs this data is most often used for.

5

endpoints

1

credit per call

01

Local apps call search to list businesses across CIS regions.

02

Reputation tools use reviews to monitor ratings.

03

Lead-gen uses search and nearby to build local business lists.

What Yandex Maps data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 185 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/yandex-maps/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"text":"kahve","region_id":"103705","city":"istanbul"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/yandex-maps/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "text": "kahve",
  "region_id": "103705",
  "city": "istanbul"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Yandex Maps.

Get a free key →
How does this differ from the google-maps engine?

Different id space and different strengths. There is no cross-walk between a Yandex org_id and a Google place id, so you cannot join the two without matching on name and coordinates. On coverage: Moscow and Istanbul searches returned phones on nearly every row and real ratings on most, while Berlin and New York searches also returned 25 genuine orgs with street addresses and coordinates but ratings of 0.0 on 22 of 25 and 24 of 25 respectively. Outside Russia and Turkey you get the place, not the reputation data.

Is a rating of 0.0 a bad business?

No, it is the empty state. Every org we saw with rating 0.0 also had rating_count 0, meaning nobody has voted. The engine returns 0.0 rather than null, so a naive average or a "rating below 2" filter will silently pick up unrated places. Gate on rating_count greater than 0 before you use rating at all.

Why do rating_count and review_count disagree?

They count different things. rating_count is how many people tapped a star rating; review_count is how many wrote text. Kofemaniya returned 7809 and 2264, roughly one written review for every three ratings. The reviews action pages against review_count, not rating_count, so use review_count when working out how many pages exist.

Does nearby really return the closest businesses first?

It returns nearby businesses, but not in distance order. A live nearby call for "eczane" around 28.985,41.036 returned six pharmacies at roughly 1.52, 0.37, 2.12, 2.06, 2.43 and 3.21 km from the center, in that order. Sort client-side from the latitude and longitude on each row. nearby also returns far fewer rows than search, six against search's usual 25, so it narrows the area and not just the ordering.

How many review pages can I pull?

50 reviews per page, and meta tells you the ceiling: for Kofemaniya, review_count 2264 with total_pages 46, plus has_more and next_page. Reviews are not sorted by date, the first three on page 1 being dated 2026-05-16, 2026-08-25 and 2026-07-16, so if you need the newest, pull the pages and sort yourself. business_reply is the owner's response text or null; on that page 49 of 50 reviews had one.

What does detail give me that search does not?

Seven extra fields plus an undocumented one: description, country, locality, street, house, photo_count, features and geo_id. A detail call on org_id 1242233919 returned country "Russian Federation", locality "Moscow", street "Kutuzovsky Avenue", house "17", photo_count 283 and geo_id 116997. One caveat worth knowing before you build on it: description was just the address restated ("Kutuzovsky Avenue No:17, Moscow"), not an about-the-business blurb.

What is inside features on a detail response?

An array of {name, value} pairs pulled from the amenities panel, where name is Turkish and value is either a string or a real boolean. The Kofemaniya card returned 20 of them, including {"name":"ortalama hesap","value":"1500-2500 ₽"} and {"name":"yemek teslimatı","value":true}. Because the names are free text in Turkish, match on them defensively rather than assuming a fixed key set.

Which fields are safe to key on if I do not read Turkish?

org_id, latitude, longitude, categories[].seoname and status all stay in a stable machine form. name, address, hours_text, author_level and every features[].name come back localized, for example author_level "9. seviye şehir uzmanı", which is Yandex's city-expert level with the level number at the front of the string.

What is the Yandex Maps API?

Yandex Maps API is a ReefAPI endpoint group for yandex maps It returns live JSON through POST requests under /yandex-maps/v1.

Is the Yandex Maps API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Yandex Maps calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Yandex Maps login or account?

No login to Yandex Maps is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Yandex Maps data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Yandex Maps API use?

Yandex Maps actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Yandex Maps from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call yandex-maps actions with the same key, credit pool and JSON envelope used by normal REST requests.

14 Reputation & Reviews APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Yandex Maps, you are one call away from the rest of the category — no second contract, no second integration.

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 184 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts.