# API de filme pentru căutare, detalii și evaluări

> amodb este un API de filme cu plată, la https://api.amodb.dev/3, cu aceleași căi și același JSON ca TMDB v3. Cauți un titlu cu /search/movie, apoi citești filmul cu append_to_response ca să primești distribuția, trailerele și evaluările într-o singură cerere. Răspunsurile vin în 14 limbi, de la 20 de cereri pe minut.

## Un API de filme care vorbește TMDB v3 și OMDb

amodb este un API de filme independent. Vorbește același protocol ca TMDB v3 și OMDb, așa că un client scris pentru oricare dintre ele funcționează după ce schimbi URL-ul de bază în `https://api.amodb.dev/3` (sau `https://api.amodb.dev/omdb/` pentru apelurile în stil OMDb). Găsești un film cu `/search/movie`, apoi îl citești cu `/movie/{movie_id}` și `append_to_response`.

Ce primești:

- JSON în structura TMDB v3, cu aceleași căi și aceiași parametri de interogare.
- Titluri și descrieri în 14 limbi, alese cu `language`.
- Distribuție, echipă, trailere, cuvinte-cheie, imagini și date de lansare prin `append_to_response`.
- Evaluări de la IMDb, Kinopoisk, Metacritic, Rotten Tomatoes și TMDB, acolo unde se știu.
- Postere de la `https://img.amodb.dev/t/p/{size}/{file}`, fără cheie.

## Ce date primești

| Ai nevoie de               | Apel                         | Observații                                                                                                            |
| -------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Găsești un film după titlu | `GET /3/search/movie?query=` | Paginat, până la 20 de rezultate pe pagină, cache la margine 10 minute. Vezi [căutare](https://amodb.dev/ro/search/). |
| Fișa de bază               | `GET /3/movie/{movie_id}`    | Titluri, descriere, durată, genuri, data lansării. Vezi [filme](https://amodb.dev/ro/movies/).                        |
| Distribuție și echipă      | `append_to_response=credits` | Câmpurile sunt descrise la [credite](https://amodb.dev/ro/credits/).                                                  |
| Trailere                   | `append_to_response=videos`  | Întoarce array-ul `results` cu `key`, `site` și `type`.                                                               |
| Scoruri                    | `append_to_response=ratings` | Cinci surse, fiecare `{ value, votes }` sau null. Vezi [evaluări](https://amodb.dev/ro/ratings/).                     |
| Un răspuns în stil OMDb    | `GET /omdb/?t=Inception`     | Aceleași câmpuri de corp ca OMDb. Vezi [endpoint-ul OMDb](https://amodb.dev/ro/omdb-endpoint/).                       |

## Începe în 3 pași

1. Alege un plan la [prețuri](https://amodb.dev/ro/pricing/). Planurile diferă doar prin ritm: 20, 40 sau 120 de cereri pe minut.
2. Creează o cheie în panoul contului tău. O cheie are 32 de caractere hexazecimale minuscule.
3. Apelează endpoint-ul cu cheia în parametrul `api_key` sau într-un antet `Authorization: Bearer`. Vezi [autentificare](https://amodb.dev/ro/authentication/).

## Exemplu de cerere

Exemplul găsește Inception după titlu, ia prima potrivire și citește filmul cu distribuție, trailere și evaluări într-un singur apel în plus. Asta înseamnă două cereri în total.

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

Răspunsul scurtat. Sunt păstrate doar unele câmpuri ale fișei filmului, `credits` este tăiat la un membru al distribuției și regizor, iar blocul `videos` este omis.

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

## Moduri de a găsi un film

Alege apelul care se potrivește cu ceea ce ai deja.

| Pornești de la                     | Apel                                            | Rezultat                                                           |
| ---------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------ |
| Un titlu tastat de un utilizator   | `GET /3/search/movie?query=`                    | array-ul `results` cu `id`, `title`, `release_date`, `poster_path` |
| Un ID IMDb precum `tt0133093`      | `GET /3/find/tt0133093?external_source=imdb_id` | array-ul `movie_results`                                           |
| Un ID numeric de film precum `603` | `GET /3/movie/603`                              | Fișa completă                                                      |
| Un client OMDb existent            | `GET /omdb/?i=tt0133093`                        | Corp OMDb cu `Title`, `Year`, `Ratings`                            |

Păstrează ambele ID-uri. Valoarea numerică `id` este cheia pentru fiecare alt apel, iar `imdb_id` leagă datele tale de alte sisteme. Regulile de căutare sunt la [căutare după ID extern](https://amodb.dev/ro/find-by-external-id/).

## Câmpuri goale și căutări eșuate

Datele reale despre filme au goluri, așa că scrie codul de afișare ținând cont de ele. O căutare fără rezultat nu este o eroare: întoarce HTTP 200 cu un array `results` gol. Un ID necunoscut este o eroare.

| Caz                        | Ce vezi                 | Ce faci                               |
| -------------------------- | ----------------------- | ------------------------------------- |
| Nicio potrivire în căutare | 200 și `"results": []`  | Arată „nicio potrivire”, nu reîncerca |
| ID de film necunoscut      | 404 cu `status_code` 34 | Scoate ID-ul din lista ta             |
| Cheie lipsă sau greșită    | 401 cu `status_code` 7  | Oprește-te și corectează cheia        |
| `overview` gol             | Un șir gol              | Cere din nou cu `language=en-US`      |
| Scor necunoscut            | `null` în `ratings`     | Ascunde insigna respectivă            |
| Fără dată de lansare       | `release_date` gol      | Sortează titlul la sfârșit            |

Lista completă de erori este la [erori](https://amodb.dev/ro/errors/).

## Cum rămâi în limita de cereri

O căutare și un apel de detalii costă câte o cerere. La 20 de cereri pe minut înseamnă zece căutări de titluri pe minut, iar la 120 de cereri pe minut înseamnă șaizeci. O lovitură de cache la margine tot se numără, pentru că verificarea cheii și limita de cereri rulează înaintea cache-ului. Ține un cache propriu pentru căutările repetate și citește `X-RateLimit-Remaining` ca să vezi cât a mai rămas din minut. Când primești un 429, așteaptă numărul de secunde din `Retry-After`. Limitele pe plan sunt la [limite de cereri](https://amodb.dev/ro/rate-limits/).

## Cum se compară

| Capacitate                              | Extragi singur paginile                     | API de metadate cu nivel gratuit                    | amodb                                           |
| --------------------------------------- | ------------------------------------------- | --------------------------------------------------- | ----------------------------------------------- |
| Format de răspuns                       | HTML pe care trebuie să-l analizezi         | JSON                                                | JSON în structura TMDB v3                       |
| Stabilitatea schemei                    | Se strică la schimbarea markup-ului paginii | Stabilită de furnizor                               | Căi și câmpuri fixe, pot apărea câmpuri noi     |
| Condiții de acces                       | Se aplică termenii fiecărui site            | Nivel gratuit cu condiții de utilizare, verifică-le | Cu plată, plătit în avans, fără nivel gratuit   |
| Limită de cereri                        | Nimic pe care să te poți baza               | Stabilită de furnizor                               | 20, 40 sau 120 de cereri pe minut pe cheie      |
| Evaluări din mai multe surse            | Un scraper pe site                          | Variază, verifică documentația                      | `ratings` în același apel, null când nu se știe |
| Limbi                                   | Ce oferă fiecare pagină                     | Variază                                             | 14, alese cu `language`                         |
| Reutilizarea clienților TMDB v3 și OMDb | Nu                                          | Doar dacă folosește același protocol                | Da, schimbi URL-ul de bază                      |

## Prețuri

Accesul este plătit în avans pentru 1, 3, 6, 12 sau 24 de luni, cu reduceri de 0, 10, 20, 30 și 40 la sută la perioadele mai lungi. Nu există reînnoire automată și nici nivel gratuit. Fiecare plan primește toate datele, iar planurile diferă doar prin ritm: 20, 40 sau 120 de cereri pe minut. Alege unul la [prețuri](https://amodb.dev/ro/pricing/) și fă primul apel în câteva minute.

## Întrebări și răspunsuri

### Este acest API de filme compatibil cu TMDB?

Da, pentru endpoint-urile de citire de care are nevoie o aplicație cu filme. Căile, parametrii de interogare și JSON-ul se potrivesc cu TMDB v3 la https://api.amodb.dev/3, deci schimbi URL-ul de bază și folosești cheia amodb. Metodele de scriere pentru cont, sesiune, evaluări și liste întorc 405 cu status_code 37. Fluxurile de modificări, aggregate_credits și căutările de credite și recenzii întorc 404.

### Pot căuta un film după ID IMDb?

Da. Apelează /3/find/tt0133093?external_source=imdb_id și citește movie_results, sau folosește endpoint-ul în stil OMDb de la /omdb/?i=tt0133093. Ambele acceptă aceeași cheie ca apelurile în stil TMDB.

### Câte cereri are nevoie o pagină de film?

Cel mult două: o căutare pentru a obține ID-ul, apoi un apel /movie/{id} cu append_to_response=credits,videos,ratings. Dacă îți stochezi deja ID-ul, o singură cerere ajunge.

### În ce limbi răspunde API-ul de filme?

În paisprezece: engleză, rusă, ucraineană, belarusă, chineză, portugheză, bulgară, ebraică, cehă, română, franceză, poloneză, italiană și spaniolă. Transmite în language o etichetă TMDB precum pt-BR. Orice altă etichetă revine la engleză.

### Există un nivel gratuit sau o perioadă de probă?

Nu. Accesul este plătit în avans pentru 1, 3, 6, 12 sau 24 de luni, cu reduceri de 0, 10, 20, 30 și 40 la sută. Nu există reînnoire automată. Planurile de 20, 40 și 120 de cereri pe minut sunt pe pagina de prețuri.

## Pagini conexe

- [API detalii film](https://amodb.dev/ro/movies/): API detalii film cu aceleași căi și același JSON ca TMDB v3. Preia un film după ID, adaugă credite, evaluări și atmosferă cu append_to_response, în 14 limbi.
- [API căutare](https://amodb.dev/ro/search/): API căutare cu căile și JSON-ul TMDB v3. Găsește filme, seriale, persoane, colecții, companii și cuvinte-cheie după text, cu filtre de an și paginare.
- [Evaluări pentru filme și TV](https://amodb.dev/ro/ratings/): API evaluări filme ce întoarce scorurile IMDb, Kinopoisk, Metacritic, Rotten Tomatoes și TMDB pentru un titlu într-un apel, cu null pentru sursele necunoscute.
- [Căutare după ID extern](https://amodb.dev/ro/find-by-external-id/): Caută un film, serial sau o persoană după ID IMDb, TVDB, Wikidata sau Kinopoisk cu endpoint-ul find și citește ID-urile externe și faptele Wikidata.
- [Ghid rapid](https://amodb.dev/ro/quickstart/): Fă primul apel amodb: ia o cheie, cere detaliile unui film în curl, JavaScript, Python, PHP sau Go, apoi încarcă posterul de pe img.amodb.dev. Sub 2 minute.
- [Alternativă la API-ul TMDB](https://amodb.dev/ro/tmdb-api-alternative/): Cauți o alternativă TMDB API? Verifică termeni, limite, limbi și evaluări, apoi treci la un API cu plată care păstrează majoritatea căilor de citire TMDB v3.

Actualizat: 2026-10-18. Source: https://amodb.dev/ro/movie-api/
