# API фильмов для поиска, данных и рейтингов

> amodb, платный API фильмов по адресу https://api.amodb.dev/3, использует те же пути и JSON, что TMDB v3. Найдите фильм через /search/movie, затем прочитайте его с append_to_response и получите актеров, трейлеры и рейтинги одним запросом. Ответы приходят на 14 языках, от 20 запросов в минуту.

## API фильмов с протоколами TMDB v3 и OMDb

amodb является независимым API фильмов. Он использует тот же протокол, что TMDB v3 и OMDb, поэтому клиент, написанный для любого из них, работает после смены базового URL на `https://api.amodb.dev/3` (или на `https://api.amodb.dev/omdb/` для вызовов в стиле OMDb). Фильм вы находите через `/search/movie`, затем читаете его через `/movie/{movie_id}` и `append_to_response`.

Что вы получаете:

- JSON в формате TMDB v3 с теми же путями и параметрами запроса.
- Названия и описания на 14 языках, выбираются через `language`.
- Актерский состав, съемочная группа, трейлеры, ключевые слова, изображения и даты выхода через `append_to_response`.
- Рейтинги IMDb, Kinopoisk, Metacritic, Rotten Tomatoes и TMDB, где они известны.
- Постеры с `https://img.amodb.dev/t/p/{size}/{file}`, без ключа.

## Какие данные вы получаете

| Что нужно                 | Вызов                        | Примечания                                                                                                |
| ------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------- |
| Найти фильм по названию   | `GET /3/search/movie?query=` | Постранично, до 20 результатов на странице, edge-кэш 10 минут. См. [поиск](https://amodb.dev/ru/search/). |
| Основная запись           | `GET /3/movie/{movie_id}`    | Названия, описание, длительность, жанры, дата выхода. См. [фильмы](https://amodb.dev/ru/movies/).         |
| Актеры и съемочная группа | `append_to_response=credits` | Поля описаны на странице [актеры и съемочная группа](https://amodb.dev/ru/credits/).                      |
| Трейлеры                  | `append_to_response=videos`  | Возвращает массив `results` с `key`, `site` и `type`.                                                     |
| Оценки                    | `append_to_response=ratings` | Пять источников, у каждого `{ value, votes }` или null. См. [рейтинги](https://amodb.dev/ru/ratings/).    |
| Ответ в стиле OMDb        | `GET /omdb/?t=Inception`     | Те же поля тела, что у OMDb. См. [эндпоинт OMDb](https://amodb.dev/ru/omdb-endpoint/).                    |

## Начало работы в 3 шага

1. Выберите тариф на странице [цены](https://amodb.dev/ru/pricing/). Тарифы различаются только лимитом: 20, 40 или 120 запросов в минуту.
2. Создайте ключ в личном кабинете. Ключ состоит из 32 строчных шестнадцатеричных символов.
3. Вызывайте эндпоинт, передавая ключ в параметре `api_key` или в заголовке `Authorization: Bearer`. См. [аутентификация](https://amodb.dev/ru/authentication/).

## Пример запроса

Пример находит Inception по названию, берет первый результат и читает фильм с актерами, трейлерами и рейтингами еще одним вызовом. Всего получается два запроса.

```bash
# 1. find the id
curl -s "https://api.amodb.dev/3/search/movie?query=inception&language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"

# 2. read the movie with extras
curl -s "https://api.amodb.dev/3/movie/27205?language=en-US&append_to_response=credits,videos,ratings" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };

async function get(path, params) {
  const res = await fetch(`${base}${path}?${new URLSearchParams(params)}`, { headers });
  if (res.status === 429) {
    throw new Error(`Over the limit, retry in ${res.headers.get('Retry-After')} s`);
  }
  if (!res.ok) throw new Error(`amodb returned ${res.status}`);
  return res.json();
}

const found = await get('/search/movie', { query: 'inception', language: 'en-US' });
if (!found.results.length) throw new Error('No match');

const movie = await get(`/movie/${found.results[0].id}`, {
  language: 'en-US',
  append_to_response: 'credits,videos,ratings',
});
const director = movie.credits.crew.find((c) => c.job === 'Director');
console.log(movie.title, movie.release_date, movie.runtime, director?.name);
console.log('IMDb', movie.ratings.imdb?.value);
```

Сокращенный ответ. Из записи фильма оставлены только некоторые поля, `credits` урезан до одного актера и режиссера, а блок `videos` опущен.

```json
{
  "genres": [
    {
      "id": 12,
      "name": "Adventure"
    },
    {
      "id": 28,
      "name": "Action"
    },
    {
      "id": 80,
      "name": "Crime"
    }
  ],
  "id": 27205,
  "imdb_id": "tt1375666",
  "poster_path": "/xlaY2zyzMfkhk0HSC5VUwzoZPU1.jpg",
  "release_date": "2010-07-15",
  "runtime": 148,
  "title": "Inception",
  "credits": {
    "cast": [
      {
        "adult": false,
        "gender": 2,
        "id": 6193,
        "known_for_department": "Acting",
        "name": "Leonardo DiCaprio",
        "original_name": "Leonardo DiCaprio",
        "popularity": 9.3213,
        "profile_path": "/wo2hJpn04vbtmh0B9utCFdsQhxM.jpg",
        "character": "Dom Cobb",
        "credit_id": "52fe4534c3a368484e04de03",
        "order": 0
      }
    ],
    "crew": [
      {
        "adult": false,
        "gender": 2,
        "id": 525,
        "known_for_department": "Directing",
        "name": "Christopher Nolan",
        "original_name": "Christopher Nolan",
        "popularity": 8.578,
        "profile_path": "/xuAIuYSmsUzKlUMBFGVZaWsY3DZ.jpg",
        "credit_id": "5e83ac2ee33f830018359a00",
        "department": "Directing",
        "job": "Director"
      }
    ]
  },
  "ratings": {
    "imdb": {
      "value": 8.8,
      "votes": 2877173
    },
    "kinopoisk": {
      "value": 8.7,
      "votes": null
    },
    "metacritic": {
      "value": 74,
      "votes": null
    },
    "rotten_tomatoes": {
      "value": 86,
      "votes": null
    },
    "tmdb": {
      "value": 8.373,
      "votes": 40457
    }
  }
}
```

## Способы найти фильм

Выберите вызов, который соответствует тому, что у вас уже есть.

| Что у вас есть                     | Вызов                                           | Результат                                                       |
| ---------------------------------- | ----------------------------------------------- | --------------------------------------------------------------- |
| Название, введенное пользователем  | `GET /3/search/movie?query=`                    | Массив `results` с `id`, `title`, `release_date`, `poster_path` |
| IMDb id, например `tt0133093`      | `GET /3/find/tt0133093?external_source=imdb_id` | Массив `movie_results`                                          |
| Числовой id фильма, например `603` | `GET /3/movie/603`                              | Полная запись                                                   |
| Существующий клиент OMDb           | `GET /omdb/?i=tt0133093`                        | Тело OMDb с `Title`, `Year`, `Ratings`                          |

Сохраняйте оба id. Числовой `id` служит ключом для всех остальных вызовов, а `imdb_id` связывает ваши данные с другими системами. Правила поиска описаны на странице [поиск по внешнему ID](https://amodb.dev/ru/find-by-external-id/).

## Пустые поля и неудачные запросы

В реальных данных о фильмах бывают пробелы, поэтому предусмотрите их в коде отображения. Поиск без совпадений не считается ошибкой: он возвращает HTTP 200 с пустым массивом `results`. Неизвестный id считается ошибкой.

| Случай                       | Что вы видите           | Что делать                                     |
| ---------------------------- | ----------------------- | ---------------------------------------------- |
| Поиск ничего не нашел        | 200 и `"results": []`   | Показать «нет совпадений», не повторять запрос |
| Неизвестный id фильма        | 404 с `status_code` 34  | Уберите id из своего списка                    |
| Ключ отсутствует или неверен | 401 с `status_code` 7   | Остановитесь и исправьте ключ                  |
| Пустое `overview`            | Пустая строка           | Повторите запрос с `language=en-US`            |
| Неизвестная оценка           | `null` внутри `ratings` | Скройте этот значок                            |
| Нет даты выхода              | Пустое `release_date`   | Поставьте фильм в конец сортировки             |

Полный список ошибок приведен на странице [ошибки](https://amodb.dev/ru/errors/).

## Как уложиться в лимит запросов

Поиск и запрос данных стоят по одному запросу. При 20 запросах в минуту это десять поисков фильма в минуту, при 120 запросах в минуту шестьдесят. Попадание в edge-кэш тоже засчитывается, потому что проверка ключа и лимит запросов выполняются до кэша. Заведите собственный кэш для повторных запросов и читайте `X-RateLimit-Remaining`, чтобы видеть, сколько осталось от минуты. Получив 429, подождите число секунд из `Retry-After`. Лимиты по тарифам описаны на странице [лимиты запросов](https://amodb.dev/ru/rate-limits/).

## Сравнение

| Возможность                                     | Парсинг страниц самостоятельно          | API метаданных с бесплатным тарифом                      | amodb                                                  |
| ----------------------------------------------- | --------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------ |
| Формат ответа                                   | HTML, который нужно разбирать           | JSON                                                     | JSON в формате TMDB v3                                 |
| Стабильность схемы                              | Ломается при изменении разметки страниц | Определяется провайдером                                 | Фиксированные пути и поля, могут появляться новые поля |
| Условия доступа                                 | Действуют условия каждого сайта         | Бесплатный тариф с условиями использования, проверьте их | Платно, предоплата, без бесплатного тарифа             |
| Лимит запросов                                  | Ничего, на что можно положиться         | Определяется провайдером                                 | 20, 40 или 120 запросов в минуту на ключ               |
| Рейтинги из нескольких источников               | Один парсер на сайт                     | По-разному, смотрите документацию                        | `ratings` в том же вызове, null, если неизвестно       |
| Языки                                           | Что предлагает каждая страница          | По-разному                                               | 14, выбираются через `language`                        |
| Повторное использование клиентов TMDB v3 и OMDb | Нет                                     | Только если используется тот же протокол                 | Да, смените базовый URL                                |

## Цены

Доступ оплачивается заранее на 1, 3, 6, 12 или 24 месяца, скидка на более длинные периоды составляет 0, 10, 20, 30 и 40 процентов. Автоматического продления и бесплатного тарифа нет. Каждый тариф дает все данные, а тарифы различаются только лимитом: 20, 40 или 120 запросов в минуту. Выберите тариф на странице [цены](https://amodb.dev/ru/pricing/) и сделайте первый вызов через несколько минут.

## Вопросы и ответы

### Совместим ли этот API фильмов с TMDB?

Да, для эндпоинтов чтения, которые нужны приложению о фильмах. Пути, параметры запроса и JSON совпадают с TMDB v3 по адресу https://api.amodb.dev/3, так что вы меняете базовый URL и используете ключ amodb. Методы записи для аккаунта, сессий, оценок и списков возвращают 405 с status_code 37. Ленты changes, aggregate_credits, а также запросы credit и review возвращают 404.

### Можно ли найти фильм по IMDb id?

Да. Вызовите /3/find/tt0133093?external_source=imdb_id и прочитайте movie_results или используйте эндпоинт в стиле OMDb /omdb/?i=tt0133093. Оба принимают тот же ключ, что и вызовы в стиле TMDB.

### Сколько запросов нужно странице фильма?

Не больше двух: один поиск, чтобы получить id, затем один вызов /movie/{id} с append_to_response=credits,videos,ratings. Если id у вас уже сохранен, хватит одного запроса.

### Какие языки возвращает API фильмов?

Четырнадцать: английский, русский, украинский, белорусский, китайский, португальский, болгарский, иврит, чешский, румынский, французский, польский, итальянский и испанский. Передайте в language тег TMDB, например pt-BR. Любой другой тег приводит к запасному варианту: английскому.

### Есть ли бесплатный тариф или пробный период?

Нет. Доступ оплачивается заранее на 1, 3, 6, 12 или 24 месяца со скидками 0, 10, 20, 30 и 40 процентов. Автоматического продления нет. Тарифы на 20, 40 и 120 запросов в минуту описаны на странице цен.

## Связанные страницы

- [API деталей фильма](https://amodb.dev/ru/movies/): API деталей фильма с теми же путями и JSON, что в TMDB v3. Получите фильм по ID, добавьте актеров, рейтинги и настроения через append_to_response, на 14 языках.
- [API поиска](https://amodb.dev/ru/search/): API поиска с путями и JSON как в TMDB v3. Находите фильмы, сериалы, людей, коллекции, компании и ключевые слова по тексту, с фильтром по году и пагинацией.
- [Рейтинги фильмов и сериалов](https://amodb.dev/ru/ratings/): API рейтингов фильмов: оценки IMDb, Kinopoisk, Metacritic, Rotten Tomatoes и TMDB для тайтла одним запросом, с null для источника, о котором нет данных.
- [Поиск по внешнему ID](https://amodb.dev/ru/find-by-external-id/): Найдите фильм, сериал или персону по ID IMDb, TVDB, Wikidata или Kinopoisk через эндпоинт find TMDB, а также прочитайте внешние ID и факты Wikidata о проекте.
- [Быстрый старт](https://amodb.dev/ru/quickstart/): Первый вызов amodb: получите ключ, запросите детали фильма через curl, JavaScript, Python, PHP или Go и загрузите постер с img.amodb.dev. Меньше 2 минут.
- [Альтернатива TMDB API](https://amodb.dev/ru/tmdb-api-alternative/): Нужна альтернатива TMDB API? Сверьте условия, лимиты, языки и рейтинги, затем перейдите на платный API, где работает большинство путей чтения и JSON TMDB v3.

Обновлено: 2026-10-18. Source: https://amodb.dev/ru/movie-api/
