# Yandex Reviews API (yandex.reviews)

- Canonical page: https://everyinfra.com/en/yandex-api/reviews
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "yandex", "action": "reviews", "params": {...}}
- Price: $0.001389 per call ($1.39 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 20, max 200 per call
- Mode: sync; add "mode": "async" for slow tasks

Yandex Reviews reads the reviews of one business on Yandex Maps, given its map page link or numeric business ID as `url`. Every row holds what the reviewer wrote, the score they gave, when they posted it and their display name, plus how many users liked or disliked the review, the owner's reply, and the business's name, ID, overall rating and review count. Chains with branches on the map, agencies managing local reputation and analysts use it to follow sentiment branch by branch and see how owners answer criticism.

Choose the order with `sort`: `newest` for fresh feedback, `lowest_rated` to read complaints first, `top_rated` for praise or `relevance` for Yandex's own ranking; these values belong to reviews and differ from those of Yandex Search and Market. `owner_reply` shows whether and how the business answered, which matters most on low ratings. `language` sets the query language, English by default, and each row's `language` code is the platform's guess, which can be wrong. To find businesses by keyword first, use Yandex Search.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=yandex&action=reviews

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| url | not declared | yes | not declared | Specifies a full Yandex Map place URL or a direct businessId string for the reviews action. This parameter does not accept Yandex Market product links. |
| language | not declared | no | not declared | Sets the fallback interface language for Yandex actions, defaulting to ru for search and en for reviews. Explicitly passing lang on the search action overrides this parameter. |
| sort | enum: lowest_rated / newest / relevance / top_rated | no | not declared | Controls sorting order per Yandex action. Accepts relevance or distance for search; popular or top_rated for market; and newest (default), relevance, top_rated, or lowest_rated for reviews. Values cannot be used across different actions. |
| limit | integer (1–200) | no | 20 | The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
| url | Link to the record on the platform. |
| text | Body text with HTML removed, returned in full and never cut short (on a few platforms the list results themselves carry only an excerpt; the platform's field notes say so). |
| rating | Rating. **The scale varies by platform**: rating_scale on the same row gives the maximum (usually 5; Booking, Douban, iQIYI and NAVER use 10). Convert with rating_scale before comparing across platforms, or the comparison can come out backwards. |
| rating_scale | Maximum of rating in the same row: 5 for five-star scales, 10 for ten-point scales. Present only when the row has a rating. |
| posted_at | Publish time in ISO 8601, UTC (for example 2026-08-07T12:34:56+00:00). Non-standard strings from the platform are passed through as is, so parse defensively. null means the platform does not disclose it. |
| language | Content language code (for example zh, en) as judged by the platform; it can be wrong. |
| like_count | Likes. null means the platform or this capability does not disclose it; it is not 0. |
| dislike_count | platform-native meaning |
| comment_count | Comments. null means not disclosed, not 0. |
| author_name | Author's display name. |
| owner_reply | platform-native meaning |
| business_id | platform-native meaning |
| business_name | platform-native meaning |
| business_rating | platform-native meaning |
| business_review_count | platform-native meaning |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "yandex",
  "action": "reviews",
  "params": {
    "url": "https://yandex.com/maps/org/tanuki/1036014863/reviews/"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "yandex",
        "action": "reviews",
        "params": {
            "url": "https://yandex.com/maps/org/tanuki/1036014863/reviews/",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-09-26T08:56:04Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 20. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "yandex",
  "action": "reviews",
  "results": [
    {
      "id": "fiG_U8XT6pO3RSY1ZJERNYEL7cZavC",
      "url": "https://yandex.com/maps/org/tanuki/1036014863/",
      "text": "все хорошо ",
      "rating": 5,
      "posted_at": "2026-09-25T19:20:48.046000+00:00",
      "language": "RU",
      "like_count": 0,
      "dislike_count": 0,
      "comment_count": 0,
      "author_name": "•••",
      "owner_reply": "",
      "business_id": "1036014863",
      "business_name": "Тануки",
      "business_rating": 5,
      "business_review_count": 11416,
      "platform": "yandex",
      "rating_scale": 5
    },
    {
      "id": "HsGQp2Ee5wuRfg4_tAgpnWVc6q4tEMK",
      "text": "Всем здоровья!\nПосетил уголок японской жизненной силы икигай!\nНамсте",
      "rating": 5,
      "posted_at": "2026-09-25T19:20:26.902000+00:00",
      "language": "RU",
      "like_count": 0,
      "dislike_count": 0,
      "comment_count": 0,
      "author_name": "•••",
      "owner_reply": "",
      "business_id": "1036014863",
      "platform": "yandex",
      "rating_scale": 5
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### Which Yandex link or ID goes in `url`?

The business's Yandex Maps link, such as https://yandex.com/maps/org/tanuki/1036014863/reviews/, or only the numeric business ID it contains, 1036014863 in that link. Links to Yandex Market products point to a different dataset and do not work here.

### Why are `business_rating` and `business_review_count` repeated on every row?

They describe the business as a whole, its overall score and total number of reviews on Yandex Maps, so they are the same for every review of that business. Store them once per business and use them to put a page of reviews in context; the score of each individual review is `rating`, read with `rating_scale`.

### What do the likes and dislikes on a review tell me?

`like_count` and `dislike_count` record how other Yandex users reacted to a review: many likes suggest a view other customers share, and many dislikes suggest they dispute it. Use them to weight reviews when you summarize sentiment. When `like_count` or `comment_count` is null, Yandex is not showing that figure, and it should not be read as zero.

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=yandex
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
