# Kinopoisk API alternative

> Kinopoisk is a Russian-language movie site and does not publish a general open API. Developers often turn to third-party services, so check their docs. amodb is a paid API that returns Russian titles with language=ru-RU, finds a title by Kinopoisk id, and includes the Kinopoisk score where known.

## What an alternative can and cannot give you

Kinopoisk is a Russian-language movie site, and it does not publish a general open API. Developers often use third-party services instead, each with its own terms, so check their docs. amodb is an independent API and not a Kinopoisk service. It covers three needs that Russian-language projects often have: titles and overviews in Russian, a lookup by Kinopoisk id, and the Kinopoisk score next to other scores where it is known.

## Building blocks

| You need                     | How                                            | What comes back                                |
| ---------------------------- | ---------------------------------------------- | ---------------------------------------------- |
| Russian title and overview   | `language=ru-RU` on any detail call            | `title` in Russian, `original_title` unchanged |
| A title from a Kinopoisk id  | `GET /3/find/361?external_source=kinopoisk_id` | `movie_results` with id 550                    |
| The Kinopoisk id of a title  | `GET /3/movie/550/external_ids`                | `kinopoisk_id` as a string, `"361"` here       |
| The Kinopoisk score          | `GET /3/movie/550/ratings`                     | `kinopoisk` with `value` and `votes`, or null  |
| Ukrainian or Belarusian text | `language=uk-UA` or `language=be-BY`           | Localized fields, English where none exists    |

The next block shows one detail response in Russian with `append_to_response=ratings`. It is a real reply for Fight Club (id 550), cut to the fields used here and with the overview shortened.

```json
{
  "id": 550,
  "original_title": "Fight Club",
  "overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из му...",
  "release_date": "1999-10-15",
  "tagline": "«Интриги. Хаос. Мыло»",
  "title": "Бойцовский клуб",
  "ratings": {
    "imdb": {
      "value": 8.8,
      "votes": 2669989
    },
    "kinopoisk": {
      "value": 8.7,
      "votes": null
    },
    "metacritic": {
      "value": 67,
      "votes": null
    },
    "rotten_tomatoes": {
      "value": 81,
      "votes": null
    },
    "tmdb": {
      "value": 8.437,
      "votes": 33039
    }
  }
}
```

The ratings object always lists the same five keys. Here the Kinopoisk score is 8.7 and its `votes` is `null`, so a Kinopoisk vote count cannot be taken for granted. Details are on the [ratings](https://amodb.dev/ratings/) page.

## Feature comparison

| Feature         | Kinopoisk                                                      | amodb                                                 |
| --------------- | -------------------------------------------------------------- | ----------------------------------------------------- |
| Pricing model   | No general open API, check their docs for third-party services | Prepaid, 1 to 24 months per purchase                  |
| Free tier       | Check their docs                                               | None, and no trial                                    |
| Authentication  | Check their docs                                               | `api_key` or Bearer header                            |
| Response format | Check their docs                                               | JSON in TMDB v3 shape                                 |
| Languages       | Russian-language site                                          | 14 interface languages, Russian among them            |
| Movies          | On the website                                                 | Details, credits, images, videos                      |
| TV              | On the website                                                 | Series, seasons and episodes                          |
| People          | On the website                                                 | Profiles and filmography                              |
| Images          | On the website                                                 | `img.amodb.dev`, no key needed                        |
| Ratings         | Its own audience score on the website                          | Kinopoisk score plus four other sources where known   |
| Rate limit      | Check their docs                                               | 20, 40 or 120 per minute per key                      |
| Commercial use  | Check their docs                                               | Paid plans, see [pricing](https://amodb.dev/pricing/) |
| Compatibility   | No general open API, check their docs                          | TMDB v3 reads and OMDb                                |

## Where amodb differs

- **A documented contract.** Paths, parameters, error bodies and limits are written down, and one key serves every endpoint.
- **Russian next to other languages.** The same call with another `language` value gives the same fields in another language. That helps when your audience reads Russian, Ukrainian and English.
- **Several scores in one object.** You can show the Kinopoisk score beside IMDb, Metacritic and Rotten Tomatoes, each one `null` when it is unknown.
- **Original titles kept.** `original_title` and `original_name` hold the title in its source language, including Japanese and Korean, even though those are not interface languages.

## Where Kinopoisk is a better fit

- **The community itself.** Reviews, lists, user pages and local discussion live on the site. amodb offers none of that, only the score where known.
- **Everything beyond metadata.** For content that is not a metadata field, use the site itself. A metadata API does not carry it.
- **Its own audience score.** The value is produced there first. In amodb it can be `null` for a new or little known title, and the vote count can be `null` even when the score is set.

## Migrate to amodb

Collect the Kinopoisk ids you store, map them once with `/3/find`, and keep the numeric amodb id next to them. After that, request details in Russian and read the score from the same response.

```python
import os
import requests

KEY = os.environ["AMODB_KEY"]
BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {KEY}"}


def get(path, **params):
    r = requests.get(BASE + path, params=params, headers=HEADERS, timeout=10)
    r.raise_for_status()
    return r.json()


found = get("/find/361", external_source="kinopoisk_id")
movie_id = found["movie_results"][0]["id"]
movie = get(f"/movie/{movie_id}", language="ru-RU", append_to_response="ratings")
kp = movie["ratings"]["kinopoisk"]
print(movie["title"], "/", movie["original_title"])
print("Kinopoisk:", kp["value"] if kp else "not known")
```

An empty `movie_results` array means no match for that id. A Kinopoisk id of a series fills `tv_results` instead, so read both arrays when you do not know the kind. Handle a 429 by waiting the `Retry-After` seconds. The language list is on [languages](https://amodb.dev/languages/), and the lookup rules are on [find by external id](https://amodb.dev/find-by-external-id/).

## Handle gaps in Russian text

A text field can be empty when no Russian translation exists for a title. Check for an empty string and request that one title again with `language=en-US`. For posters with Russian lettering, call `/3/movie/550/images?include_image_language=ru,null` and pick from `posters`. The `null` value keeps textless artwork in the list. See [images](https://amodb.dev/images-api/) for sizes.

## Pricing

amodb has no free tier. You prepay 1, 3, 6, 12 or 24 months on one of three plans, and a longer period costs 10, 20, 30 or 40 percent less. The plans allow 20, 40 or 120 requests per minute, return the same data and do not renew automatically. Amounts are on [pricing](https://amodb.dev/pricing/).

## Questions and answers

### Does Kinopoisk have an official public API?

Kinopoisk is a Russian-language movie site and does not publish a general open API. Developers often use third-party services, each with its own terms. Check their docs before you rely on one.

### How do I find a title from a Kinopoisk id on amodb?

Call /3/find with the Kinopoisk id and external_source=kinopoisk_id. For example, 361 resolves to Fight Club, which is id 550, and 404900 resolves to Breaking Bad, id 1396. The result arrives in movie_results or tv_results in the TMDB shape.

### Is the Kinopoisk rating always returned?

No. The kinopoisk key in the ratings object holds value and votes where the score is known, and null otherwise. The value is out of 10 with one decimal. votes can be null even when value is set, so show it only when it is present.

### Which languages can I request besides Russian?

Fourteen in total, including Ukrainian and Belarusian. Send a TMDB tag such as uk-UA or be-BY in the language parameter. Unsupported tags fall back to English, and original titles stay in original_title.

### Do I get the text of Kinopoisk reviews?

No. amodb returns the Kinopoisk score where known. Review text, lists and the community features of the site are not part of the API, and the TMDB style reviews endpoint returns an empty list for most titles.

## Related pages

- [Multilingual movie metadata API](https://amodb.dev/multilingual-movie-metadata-api/): Multilingual movie metadata API with 14 languages. Use TMDB language tags, read all translations, fall back to English and handle Hebrew right-to-left.
- [Movie and TV ratings](https://amodb.dev/ratings/): Movie ratings API that returns IMDb, Kinopoisk, Metacritic, Rotten Tomatoes and TMDB scores for a title in one call, with null for any source not known.
- [Find by external id](https://amodb.dev/find-by-external-id/): Look up a movie, series or person by IMDb, TVDB, Wikidata or Kinopoisk id with the TMDB find endpoint, and read external ids and Wikidata facts for a title.
- [Languages](https://amodb.dev/languages/): amodb serves titles, overviews and names in 14 languages. Pass a TMDB style tag such as ru-RU or pt-BR in language; any other tag falls back to English.
- [IMDb API alternative](https://amodb.dev/imdb-api-alternative/): IMDb has no free general purpose REST API. Look up titles by IMDb id, read the IMDb rating where known and fetch cast, images and trailers from a paid JSON API.
- [Pricing](https://amodb.dev/pricing/): amodb plans differ only in requests per minute: 20, 40 or 120. Every plan includes all TMDB v3 and OMDb compatible data. Prepaid, no renewal, no trial.

Updated: 2026-10-18. Source: https://amodb.dev/kinopoisk-api-alternative/
