# Alternatywa dla API IMDb

> IMDb nie ma darmowego uniwersalnego REST API: jego niekomercyjne zbiory danych to pliki do pobrania, a dostęp komercyjny jest licencjonowany. amodb to płatne API JSON, w którym wyszukasz tytuł po ID z IMDb, odczytasz ocenę IMDb z liczbą głosów, gdy jest znana, i dostaniesz obsadę, obrazy oraz zwiastuny jednym kluczem.

## Dane IMDb przez REST: krótka odpowiedź

IMDb nie ma darmowego uniwersalnego REST API. Jego niekomercyjne zbiory danych to pliki do pobrania, a dostęp komercyjny jest licencjonowany, więc aktualne warunki sprawdź w ich dokumentacji. Jeśli chcesz wywołać endpoint HTTP z ID z IMDb i dostać JSON, amodb robi to w planie płatnym. Jeśli twoja umowa wymaga danych licencjonowanych przez samo IMDb, to porozumienie jest z IMDb, a amodb go nie zastępuje.

## Sposoby użycia ID z IMDb w amodb

Większość potrzeb pokrywa pięć wywołań. Każde zaczyna się od ID, które już masz, albo na nim kończy.

| Masz lub chcesz     | Wywołanie                                       | Dostajesz                                               |
| ------------------- | ----------------------------------------------- | ------------------------------------------------------- |
| Tytuł z ID z IMDb   | `GET /3/find/tt0137523?external_source=imdb_id` | Tablice `movie_results`, `tv_results`, `person_results` |
| ID z IMDb filmu     | `GET /3/movie/550`, pole `imdb_id`              | `tt0137523` dla Fight Club                              |
| ID z IMDb serialu   | `GET /3/tv/1396/external_ids`                   | `imdb_id` obok ID z TVDB                                |
| Wynik IMDb          | `GET /3/movie/550/ratings`                      | `imdb` jako `value` i `votes` albo null                 |
| Rekord w stylu OMDb | `GET /omdb/?i=tt0137523`                        | `imdbRating`, `imdbVotes`, `imdbID`                     |

Każdy wiersz działa z tym samym kluczem. Oceny opisuje strona [oceny](https://amodb.dev/pl/ratings/), a wyszukiwanie po ID strona [wyszukiwanie po zewnętrznym ID](https://amodb.dev/pl/find-by-external-id/).

## Odczyt wyniku IMDb

Endpoint ocen zwraca wynik i liczbę głosów razem. To prawdziwa odpowiedź dla Fight Club (ID 550). Wyniki zmieniają się w czasie.

```json
{
  "id": 550,
  "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
  }
}
```

Dla IMDb `value` jest w skali od 0 do 10 z jednym miejscem po przecinku. Pokaż obok liczbę głosów, a gdy obiekt ma wartość `null`, nie renderuj niczego. W tej odpowiedzi liczbę głosów mają tylko IMDb i TMDB. `votes` może mieć wartość `null` dla każdego źródła, więc sprawdź to przed pokazaniem. Odpowiedź z cache pozostaje ważna 6 godzin na edge, więc częstsze odpytywanie nic nie daje.

## Porównanie funkcji

| Funkcja           | IMDb                                                                                    | amodb                                                        |
| ----------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| Model cenowy      | Licencjonowany dostęp komercyjny, sprawdź ich dokumentację                              | Przedpłata, od 1 do 24 miesięcy                              |
| Darmowy plan      | Brak darmowego uniwersalnego REST API                                                   | Brak, ani wersji próbnej                                     |
| Uwierzytelnianie  | Sprawdź ich dokumentację                                                                | Parametr zapytania `api_key` lub nagłówek Bearer             |
| Format odpowiedzi | Pliki zbiorów danych do pobrania, dla licencjonowanych kanałów sprawdź ich dokumentację | JSON                                                         |
| Języki            | Sprawdź ich dokumentację                                                                | 14 języków interfejsu                                        |
| Filmy             | Pola sprawdź w ich dokumentacji                                                         | Szczegóły, obsada, obrazy, wideo                             |
| Seriale           | Pola sprawdź w ich dokumentacji                                                         | Seriale, sezony, odcinki                                     |
| Osoby             | Pola sprawdź w ich dokumentacji                                                         | Profile, filmografia, obrazy                                 |
| Obrazy            | Sprawdź ich dokumentację                                                                | `img.amodb.dev`, klucz niepotrzebny                          |
| Oceny             | Własny wynik, dostęp sprawdź w ich dokumentacji                                         | Pięć źródeł, w tym IMDb, gdy znane                           |
| Limit żądań       | Sprawdź ich dokumentację                                                                | 20, 40 lub 120 żądań na minutę                               |
| Użycie komercyjne | Licencjonowane, sprawdź ich dokumentację                                                | Płatne plany, zobacz [cennik](https://amodb.dev/pl/pricing/) |
| Zgodność          | Własne formaty, sprawdź ich dokumentację                                                | Odczyty TMDB v3 i protokół OMDb                              |

## Czym amodb się różni

Wywołujesz endpoint zamiast parsować plik. Jedno żądanie zwraca tytuł z obsadą, zwiastunami i ocenami przez `append_to_response`, a kształt odpowiada TMDB v3, więc istniejące biblioteki klienckie działają. Ten sam klucz obsługuje endpoint w stylu OMDb, który utrzymuje przy życiu starszy kod czytający `imdbRating`.

Blok ocen to stały obiekt z pięcioma kluczami. Nieznane źródło ma wartość `null`, a nie brakujący klucz, więc kod czytający `ratings.imdb` nie potrzebuje sprawdzania istnienia obiektu nadrzędnego. Obok wartości może stać liczba głosów, co pozwala ukryć wynik oparty na niewielu głosach. Może też mieć wartość `null`, jak w trzech z pięciu źródeł w powyższym przykładzie.

## Kiedy IMDb pasuje lepiej

- **Źródło wyniku.** IMDb publikuje własne oceny jako pierwsze. amodb zwraca wartość tylko tam, gdzie jest znana, więc nowy lub mało znany tytuł może wrócić z `null`.
- **Funkcje serwisu.** Recenzje użytkowników, listy i listy do obejrzenia żyją w serwisie IMDb. amodb to API metadanych i nie oferuje kont użytkowników.
- **Dane licencjonowane.** Jeśli partner lub umowa wymaga danych licencjonowanych przez IMDb, dostarczyć je może tylko IMDb.
- **Analiza offline.** Niekomercyjne pliki zbiorów danych pasują do masowych badań prowadzonych na własnej maszynie. Warunki sprawdź w ich dokumentacji.

## Przejście na amodb

Najpewniej masz listę ID z IMDb. Zmapuj każde raz na ID amodb, zapisz parę, a potem wywołuj szczegóły po ID numerycznym.

```bash
curl -s "https://api.amodb.dev/3/find/tt0133093?external_source=imdb_id" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```python
import os
import requests

KEY = os.environ["AMODB_KEY"]
imdb_ids = ["tt0137523", "tt0133093", "tt1375666"]

for imdb_id in imdb_ids:
    r = requests.get(
        f"https://api.amodb.dev/3/find/{imdb_id}",
        params={"external_source": "imdb_id"},
        headers={"Authorization": f"Bearer {KEY}"},
        timeout=10,
    )
    r.raise_for_status()
    hits = r.json()["movie_results"]
    print(imdb_id, hits[0]["id"] if hits else None)
```

Trzy powyższe ID mapują się na 550, 603 i 27205, czyli Fight Club, The Matrix i Inception. ID serialu, takie jak `tt0903747`, wraca w `tv_results`, gdzie Breaking Bad ma ID 1396. Pusta tablica oznacza, że dla tego ID nie znaleziono dopasowania.

Zwolnij pętlę. Każde ID to jedno żądanie, a 429 zawiera nagłówek `Retry-After` z liczbą sekund oczekiwania. Inne kody zobacz w [błędy](https://amodb.dev/pl/errors/).

### Bezpieczne zapisywanie ID

- Trzymaj ID z IMDb jako ciągi. Zaczynają się od `tt` i mają zera wiodące, jak w `tt0137523`, a typ liczbowy je gubi.
- Zapisuj ID z IMDb i ID amodb jako parę. Którekolwiek znajduje tytuł ponownie.
- Dla seriali czytaj `tv_results`, a dla filmów `movie_results`. Jedno ID zwykle wypełnia jedną tablicę, a pozostałe zostawia puste.
- Od tej pory żądaj szczegółów po ID amodb, bo wywołanie szczegółów może przez `append_to_response` nieść obsadę, zwiastuny i oceny.

## Cennik

Wybierz jeden z trzech planów z 20, 40 lub 120 żądaniami na minutę i przedpłać 1, 3, 6, 12 lub 24 miesiące. Dłuższe okresy mają zniżkę 10, 20, 30 lub 40 procent. Wszystkie plany zwracają te same dane, nic nie odnawia się samo i nie ma darmowego planu. Kwoty zobacz w [cennik](https://amodb.dev/pl/pricing/).

## Pytania i odpowiedzi

### Czy IMDb oferuje darmowe REST API?

IMDb nie ma darmowego uniwersalnego REST API. Jego niekomercyjne zbiory danych to pliki do pobrania, a dostęp komercyjny jest licencjonowany. Aktualne warunki, formaty i pola sprawdź w ich dokumentacji, zanim zaczniesz na nich polegać.

### Czy mogę w amodb wyszukać tytuł po jego ID z IMDb?

Tak. Wywołaj /3/find/tt0137523 z external_source=imdb_id i odczytaj movie_results, tv_results lub person_results. Endpoint w stylu OMDb też przyjmuje parametr i z ID z IMDb.

### Czy ocena IMDb jest zawsze obecna?

Nie. Obiekt ratings ma zawsze pięć kluczy imdb, kinopoisk, metacritic, rotten_tomatoes i tmdb, ale każdy ma wartość null, gdy wynik jest nieznany. Zanim wyrenderujesz liczbę, obsłuż null.

### Czy dostanę recenzje użytkowników lub listy z IMDb?

Nie. amodb zwraca ID z IMDb oraz wynik IMDb z liczbą głosów, gdy jest znany. Nie hostuje recenzji użytkowników, list ani list do obejrzenia z IMDb. Endpoint recenzji w stylu TMDB odpowiada 200, a większość tytułów zwraca pustą listę.

### Ile trwa zmapowanie listy ID z IMDb?

Jedno żądanie find na ID. Lista 500 ID wymaga 500 żądań, więc w planie z 20 żądaniami na minutę zajmuje to około 25 minut. Zapisz wynik, bo mapowanie rzadko się zmienia.

## Powiązane strony

- [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.
- [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.
- [Endpoint zgodny z OMDb](https://amodb.dev/pl/omdb-endpoint/): Endpoint zgodny z OMDb API pod api.amodb.dev/omdb/. Szukaj przez i lub t, wyszukuj przez s, czytaj tablicę Ratings i zachowaj klienta, zmieniając bazowy URL.
- [Alternatywa dla OMDb API](https://amodb.dev/pl/omdb-api-alternative/): Dzienny limit OMDb to za mało? amodb odpowiada na żądania w stylu OMDb i obsługuje też TMDB v3 na jednym kluczu, bez większych zmian w kodzie klienta.
- [Uwierzytelnianie](https://amodb.dev/pl/authentication/): Jak wysłać klucz amodb: api_key w zapytaniu, nagłówek Authorization Bearer albo apikey dla wywołań OMDb. Format klucza, przechowywanie, rotacja i błędy 401.
- [Limity żądań](https://amodb.dev/pl/rate-limits/): amodb limituje klucz liczbą żądań na minutę w przesuwanym oknie 60 sekund: 20, 40 lub 120 zależnie od planu. Czytaj nagłówki limitu i obsłuż 429 z Retry-After.

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