# API фільмаў для пошуку, дэталяў і рэйтынгаў

> Платнае API фільмаў amodb працуе па адрасе 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/be/search/). |
| Асноўны запіс            | `GET /3/movie/{movie_id}`    | Назвы, апісанне, працягласць, жанры, дата выхаду. Гл. [фільмы](https://amodb.dev/be/movies/).                 |
| Акцёры і здымачная група | `append_to_response=credits` | Палі апісаны на старонцы [удзельнікі](https://amodb.dev/be/credits/).                                         |
| Трэйлеры                 | `append_to_response=videos`  | Вяртае масіў `results` з палямі `key`, `site` і `type`.                                                       |
| Ацэнкі                   | `append_to_response=ratings` | Пяць крыніц, кожная ў выглядзе `{ value, votes }` або null. Гл. [рэйтынгі](https://amodb.dev/be/ratings/).    |
| Адказ у стылі OMDb       | `GET /omdb/?t=Inception`     | Тыя ж палі, што ў OMDb. Гл. [эндпоінт OMDb](https://amodb.dev/be/omdb-endpoint/).                             |

## Пачніце за 3 крокі

1. Абярыце тарыфны план на старонцы [цэны](https://amodb.dev/be/pricing/). Планы адрозніваюцца толькі абмежаваннем: 20, 40 або 120 запытаў у хвіліну.
2. Стварыце ключ у асабістым кабінеце. Ключ уяўляе сабой 32 шаснаццатковыя сімвалы ў ніжнім рэгістры.
3. Выклічце эндпоінт, перадаўшы ключ у параметры `api_key` або ў загалоўку `Authorization: Bearer`. Гл. [аўтэнтыфікацыя](https://amodb.dev/be/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` звязвае вашы даныя з іншымі сістэмамі. Правілы пошуку апісаны на старонцы [пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/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/be/errors/).

## Як застацца ў межах ліміту запытаў

Пошук і выклік дэталяў каштуюць па адным запыце. Пры 20 запытах у хвіліну гэта дзесяць пошукаў назвы ў хвіліну, пры 120 запытах у хвіліну гэта шэсцьдзесят. Трапленне ў edge-кэш усё роўна ўлічваецца, бо праверка ключа і ліміту запытаў адбываецца да кэшу. Трымайце ўласны кэш для паўторных пошукаў і глядзіце на `X-RateLimit-Remaining`, каб бачыць, колькі запытаў застаецца ў бягучай хвіліне. Калі прыходзіць 429, пачакайце столькі секунд, колькі вызначае `Retry-After`. Ліміты па тарыфах апісаны на старонцы [ліміты запытаў](https://amodb.dev/be/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/be/pricing/) і зрабіце першы выклік праз некалькі хвілін.

## Пытанні і адказы

### Ці сумяшчальнае гэта API фільмаў з TMDB?

Так, для эндпоінтаў чытання, якія патрэбныя дадатку з фільмамі. Шляхі, параметры запыту і JSON адпавядаюць TMDB v3 па адрасе https://api.amodb.dev/3, таму дастаткова змяніць базавы URL і ўжыць ключ amodb. Метады запісу для account, session, rating і list вяртаюць 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/be/movies/): API дэталяў фільма з тымі ж шляхамі і JSON, што ў TMDB v3. Адзін фільм па id, а акцёры, рэйтынгі і настрой праз append_to_response, на 14 мовах.
- [API пошуку](https://amodb.dev/be/search/): API пошуку з шляхамі і JSON як у TMDB v3. Фільмы, серыялы, персоны, калекцыі, кампаніі і ключавыя словы па тэксце, з фільтрамі па годзе і старонкамі.
- [Рэйтынгі фільмаў і серыялаў](https://amodb.dev/be/ratings/): API рэйтынгаў фільмаў вяртае ацэнкі IMDb, Kinopoisk, Metacritic, Rotten Tomatoes і TMDB для назвы адным выклікам, з null для крыніцы, якая невядомая.
- [Пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/find-by-external-id/): Шукайце фільм, серыял або персону па IMDb, TVDB, Wikidata ці Kinopoisk id праз эндпоінт find TMDB і чытайце вонкавыя id і факты Wikidata для назвы.
- [Хуткі старт](https://amodb.dev/be/quickstart/): Першы выклік да amodb: атрымайце ключ, запытайце дэталі фільма ў curl, JavaScript, Python, PHP або Go і загрузіце постэр з img.amodb.dev. Менш за 2 хвіліны.
- [Альтэрнатыва TMDB API](https://amodb.dev/be/tmdb-api-alternative/): Шукаеце альтэрнатыву TMDB API? Параўнайце ўмовы, ліміты, мовы і рэйтынгі, потым перайдзіце на платнае API з шляхамі чытання TMDB v3 і JSON. Гл. прабелы.

Абноўлена: 2026-10-18. Source: https://amodb.dev/be/movie-api/
