# API filmów do wyszukiwania, szczegółów i ocen

> amodb to płatne API filmów pod adresem https://api.amodb.dev/3 z tymi samymi ścieżkami i JSON co TMDB v3. Wyszukaj tytuł przez /search/movie, potem pobierz film z append_to_response, by dostać obsadę, zwiastuny i oceny w jednym żądaniu. Odpowiedzi są w 14 językach, od 20 żądań na minutę.

## API filmów, które mówi językiem TMDB v3 i OMDb

amodb to niezależne API filmów. Mówi tym samym protokołem co TMDB v3 i OMDb, więc klient napisany dla któregokolwiek z nich działa po zmianie bazowego URL na `https://api.amodb.dev/3` (albo `https://api.amodb.dev/omdb/` dla wywołań w stylu OMDb). Film znajdziesz przez `/search/movie`, a potem odczytasz go przez `/movie/{movie_id}` i `append_to_response`.

Co dostajesz:

- JSON w kształcie TMDB v3, z tymi samymi ścieżkami i parametrami zapytania.
- Tytuły i opisy w 14 językach, wybierane przez `language`.
- Obsadę, ekipę, zwiastuny, słowa kluczowe, obrazy i daty premier przez `append_to_response`.
- Oceny ze źródeł IMDb, Kinopoisk, Metacritic, Rotten Tomatoes i TMDB, gdy są znane.
- Plakaty z `https://img.amodb.dev/t/p/{size}/{file}`, bez klucza.

## Jakie dane dostajesz

| Czego potrzebujesz     | Wywołanie                    | Uwagi                                                                                                              |
| ---------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Znaleźć film po tytule | `GET /3/search/movie?query=` | Z paginacją, do 20 wyników na stronę, cache na edge 10 minut. Zobacz [wyszukiwanie](https://amodb.dev/pl/search/). |
| Podstawowy rekord      | `GET /3/movie/{movie_id}`    | Tytuły, opis, czas trwania, gatunki, data premiery. Zobacz [filmy](https://amodb.dev/pl/movies/).                  |
| Obsada i ekipa         | `append_to_response=credits` | Pola opisuje strona [obsada i ekipa](https://amodb.dev/pl/credits/).                                               |
| Zwiastuny              | `append_to_response=videos`  | Zwraca tablicę `results` z `key`, `site` i `type`.                                                                 |
| Oceny                  | `append_to_response=ratings` | Pięć źródeł, każde `{ value, votes }` lub null. Zobacz [oceny](https://amodb.dev/pl/ratings/).                     |
| Odpowiedź w stylu OMDb | `GET /omdb/?t=Inception`     | Te same pola treści co w OMDb. Zobacz [endpoint OMDb](https://amodb.dev/pl/omdb-endpoint/).                        |

## Start w 3 krokach

1. Wybierz plan na stronie [cennik](https://amodb.dev/pl/pricing/). Plany różnią się tylko tempem: 20, 40 lub 120 żądań na minutę.
2. Utwórz klucz w panelu konta. Klucz to 32 małe znaki szesnastkowe.
3. Wywołaj endpoint z kluczem w parametrze `api_key` albo w nagłówku `Authorization: Bearer`. Zobacz [uwierzytelnianie](https://amodb.dev/pl/authentication/).

## Przykładowe żądanie

Przykład znajduje Inception po tytule, bierze pierwszy wynik i w kolejnym wywołaniu pobiera film z obsadą, zwiastunami i ocenami. W sumie to dwa żądania.

```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);
```

Przycięta odpowiedź. Z rekordu filmu zostały tylko niektóre pola, `credits` jest przycięte do jednego aktora i reżysera, a blok `videos` pominięto.

```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
    }
  }
}
```

## Sposoby znajdowania filmu

Wybierz wywołanie, które pasuje do tego, co już masz.

| Zaczynasz od                             | Wywołanie                                       | Wynik                                                            |
| ---------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------- |
| Tytułu wpisanego przez użytkownika       | `GET /3/search/movie?query=`                    | tablica `results` z `id`, `title`, `release_date`, `poster_path` |
| ID z IMDb, na przykład `tt0133093`       | `GET /3/find/tt0133093?external_source=imdb_id` | tablica `movie_results`                                          |
| Numerycznego ID filmu, na przykład `603` | `GET /3/movie/603`                              | Pełny rekord                                                     |
| Istniejącego klienta OMDb                | `GET /omdb/?i=tt0133093`                        | Treść OMDb z `Title`, `Year`, `Ratings`                          |

Zapisuj oba ID. Numeryczne `id` jest kluczem do wszystkich innych wywołań, a `imdb_id` łączy twoje dane z innymi systemami. Zasady wyszukiwania opisuje strona [wyszukiwanie po zewnętrznym ID](https://amodb.dev/pl/find-by-external-id/).

## Puste pola i nieudane wyszukiwania

Prawdziwe dane o filmach mają luki, więc napisz dla nich kod wyświetlania. Wyszukiwanie bez wyniku to nie błąd: zwraca HTTP 200 z pustą tablicą `results`. Nieznane ID to błąd.

| Przypadek                  | Co widzisz             | Co zrobić                              |
| -------------------------- | ---------------------- | -------------------------------------- |
| Brak wyniku                | 200 i `"results": []`  | Pokaż „brak dopasowania”, nie ponawiaj |
| Nieznane ID filmu          | 404 z `status_code` 34 | Usuń ID ze swojej listy                |
| Brakujący lub błędny klucz | 401 z `status_code` 7  | Zatrzymaj się i popraw klucz           |
| Pusty `overview`           | Pusty ciąg             | Poproś ponownie z `language=en-US`     |
| Nieznana ocena             | `null` w `ratings`     | Ukryj tę plakietkę                     |
| Brak daty premiery         | Puste `release_date`   | Posortuj tytuł na końcu                |

Pełna lista błędów jest na stronie [błędy](https://amodb.dev/pl/errors/).

## Jak zmieścić się w limicie żądań

Wyszukiwanie i wywołanie szczegółów kosztują po jednym żądaniu. Przy 20 żądaniach na minutę to dziesięć wyszukań tytułów na minutę, przy 120 żądaniach na minutę sześćdziesiąt. Trafienie w cache na edge nadal się liczy, bo sprawdzenie klucza i limitu odbywa się przed cache. Trzymaj własny cache dla powtarzanych wyszukań, a z `X-RateLimit-Remaining` odczytasz, ile minuty zostało. Przy 429 poczekaj tyle sekund, ile podaje `Retry-After`. Limity według planów są na stronie [limity żądań](https://amodb.dev/pl/rate-limits/).

## Jak wypada w porównaniu

| Możliwość                              | Własny scraping stron                      | API metadanych z darmowym planem            | amodb                                               |
| -------------------------------------- | ------------------------------------------ | ------------------------------------------- | --------------------------------------------------- |
| Format odpowiedzi                      | HTML, który musisz parsować                | JSON                                        | JSON w kształcie TMDB v3                            |
| Stabilność schematu                    | Psuje się, gdy zmienia się znacznik strony | Ustala dostawca                             | Stałe ścieżki i pola, mogą pojawić się nowe pola    |
| Warunki dostępu                        | Obowiązuje regulamin każdej strony         | Darmowy plan z warunkami użycia, sprawdź je | Płatny, przedpłacony, bez darmowego planu           |
| Limit żądań                            | Nic, na czym można polegać                 | Ustala dostawca                             | 20, 40 lub 120 żądań na minutę na klucz             |
| Oceny z wielu źródeł                   | Jeden scraper na stronę                    | Różnie, sprawdź dokumentację                | `ratings` w tym samym wywołaniu, null, gdy nieznane |
| Języki                                 | Co oferuje dana strona                     | Różnie                                      | 14, wybierane przez `language`                      |
| Ponowne użycie klientów TMDB v3 i OMDb | Nie                                        | Tylko jeśli używa tego samego protokołu     | Tak, zmień bazowy URL                               |

## Cennik

Dostęp jest przedpłacony na 1, 3, 6, 12 lub 24 miesiące, ze zniżką 0, 10, 20, 30 i 40 procent za dłuższe okresy. Nie ma automatycznego odnawiania ani darmowego planu. Każdy plan dostaje wszystkie dane, a plany różnią się tylko tempem: 20, 40 lub 120 żądań na minutę. Wybierz plan na stronie [cennik](https://amodb.dev/pl/pricing/) i wykonaj pierwsze wywołanie w kilka minut.

## Pytania i odpowiedzi

### Czy to API filmów jest zgodne z TMDB?

Tak, dla endpointów odczytu, których potrzebuje aplikacja filmowa. Ścieżki, parametry zapytania i JSON odpowiadają TMDB v3 pod https://api.amodb.dev/3, więc zmieniasz bazowy URL i używasz swojego klucza amodb. Metody zapisu konta, sesji, ocen i list zwracają 405 z status_code 37. Kanały zmian, aggregate_credits oraz wyszukiwanie wpisów obsady i recenzji zwracają 404.

### Czy mogę znaleźć film po ID z IMDb?

Tak. Wywołaj /3/find/tt0133093?external_source=imdb_id i odczytaj movie_results albo użyj endpointu w stylu OMDb pod /omdb/?i=tt0133093. Oba przyjmują ten sam klucz co wywołania w stylu TMDB.

### Ile żądań potrzebuje strona jednego filmu?

Co najwyżej dwa: jedno wyszukiwanie, by dostać ID, i jedno wywołanie /movie/{id} z append_to_response=credits,videos,ratings. Jeśli już przechowujesz ID, wystarczy jedno żądanie.

### Jakie języki zwraca API filmów?

Czternaście: angielski, rosyjski, ukraiński, białoruski, chiński, portugalski, bułgarski, hebrajski, czeski, rumuński, francuski, polski, włoski i hiszpański. Przekaż w language tag TMDB, na przykład pt-BR. Każdy inny tag wraca do angielskiego.

### Czy jest darmowy plan albo wersja próbna?

Nie. Dostęp jest przedpłacony na 1, 3, 6, 12 lub 24 miesiące, ze zniżkami 0, 10, 20, 30 i 40 procent. Nie ma automatycznego odnawiania. Plany z 20, 40 i 120 żądaniami na minutę są na stronie z cennikiem.

## Powiązane strony

- [API szczegółów filmu](https://amodb.dev/pl/movies/): API szczegółów filmu z tymi samymi ścieżkami i JSON co TMDB v3. Pobierz film po ID, dołącz obsadę, oceny i nastroje przez append_to_response, 14 języków.
- [API wyszukiwania](https://amodb.dev/pl/search/): API wyszukiwania z tymi samymi ścieżkami i JSON co TMDB v3. Znajdź filmy, seriale, osoby, kolekcje, firmy i słowa kluczowe po tekście, z filtrem roku.
- [Oceny filmów i seriali](https://amodb.dev/pl/ratings/): API ocen filmów zwraca wyniki z IMDb, Kinopoisk, Metacritic, Rotten Tomatoes i TMDB dla tytułu jednym wywołaniem, z null dla każdego nieznanego źródła.
- [Wyszukiwanie po zewnętrznym ID](https://amodb.dev/pl/find-by-external-id/): Znajdź film, serial lub osobę po ID z IMDb, TVDB, Wikidata lub Kinopoisk przez endpoint find z TMDB oraz odczytaj zewnętrzne ID i fakty z Wikidata o tytule.
- [Szybki start](https://amodb.dev/pl/quickstart/): Pierwsze wywołanie amodb: zdobądź klucz, pobierz szczegóły filmu w curl, JavaScript, Python, PHP lub Go, potem załaduj plakat z img.amodb.dev. Poniżej 2 minut.
- [Alternatywa dla API TMDB](https://amodb.dev/pl/tmdb-api-alternative/): Szukasz alternatywy dla API TMDB? Sprawdź warunki, limity, języki i oceny, potem przejdź na płatne API z większością ścieżek odczytu i JSON z TMDB v3.

Zaktualizowano: 2026-10-18. Source: https://amodb.dev/pl/movie-api/
