# API film per ricerca, dettagli e valutazioni

> amodb è un'API film a pagamento su https://api.amodb.dev/3, con gli stessi percorsi e lo stesso JSON di TMDB v3. Cerca un titolo con /search/movie, poi leggi il film con append_to_response per ottenere cast, trailer e valutazioni in una sola richiesta. Le risposte arrivano in 14 lingue, da 20 richieste al minuto.

## Un'API film che parla TMDB v3 e OMDb

amodb è un'API film indipendente. Parla lo stesso protocollo di TMDB v3 e OMDb, quindi un client scritto per l'uno o per l'altro funziona dopo che hai cambiato l'URL di base in `https://api.amodb.dev/3` (oppure `https://api.amodb.dev/omdb/` per le chiamate in stile OMDb). Trovi un film con `/search/movie`, poi lo leggi con `/movie/{movie_id}` e `append_to_response`.

Cosa ottieni:

- JSON nel formato TMDB v3, con gli stessi percorsi e gli stessi parametri di query.
- Titoli e trame in 14 lingue, scelte con `language`.
- Cast, troupe, trailer, parole chiave, immagini e date di uscita tramite `append_to_response`.
- Valutazioni da IMDb, Kinopoisk, Metacritic, Rotten Tomatoes e TMDB, quando sono note.
- Locandine da `https://img.amodb.dev/t/p/{size}/{file}`, senza chiave.

## Quali dati ottieni

| Ti serve                   | Chiamata                     | Note                                                                                                          |
| -------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------- |
| Trovare un film per titolo | `GET /3/search/movie?query=` | Paginato, fino a 20 risultati per pagina, cache edge 10 minuti. Vedi [ricerca](https://amodb.dev/it/search/). |
| La scheda di base          | `GET /3/movie/{movie_id}`    | Titoli, trama, durata, generi, data di uscita. Vedi [film](https://amodb.dev/it/movies/).                     |
| Cast e troupe              | `append_to_response=credits` | I campi sono descritti nella pagina [crediti](https://amodb.dev/it/credits/).                                 |
| Trailer                    | `append_to_response=videos`  | Restituisce l'array `results` con `key`, `site` e `type`.                                                     |
| Punteggi                   | `append_to_response=ratings` | Cinque fonti, ciascuna `{ value, votes }` o null. Vedi [valutazioni](https://amodb.dev/it/ratings/).          |
| Una risposta in stile OMDb | `GET /omdb/?t=Inception`     | Stessi campi del corpo di OMDb. Vedi [endpoint OMDb](https://amodb.dev/it/omdb-endpoint/).                    |

## Parti in 3 passaggi

1. Scegli un piano nella pagina dei [prezzi](https://amodb.dev/it/pricing/). I piani differiscono solo per la frequenza: 20, 40 o 120 richieste al minuto.
2. Crea una chiave nella dashboard del tuo account. Una chiave è di 32 caratteri esadecimali minuscoli.
3. Chiama l'endpoint con la chiave nel parametro `api_key` o in un header `Authorization: Bearer`. Vedi [autenticazione](https://amodb.dev/it/authentication/).

## Esempio di richiesta

L'esempio trova Inception per titolo, prende il primo risultato e legge il film con cast, trailer e valutazioni in un'altra chiamata. In totale sono due richieste.

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

La risposta ridotta. Della scheda del film sono tenuti solo alcuni campi, `credits` è tagliato a un membro del cast e al regista, e il blocco `videos` è omesso.

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

## Modi per trovare un film

Scegli la chiamata che corrisponde a ciò che hai già.

| Parti da                          | Chiamata                                        | Risultato                                                        |
| --------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------- |
| Un titolo digitato da un utente   | `GET /3/search/movie?query=`                    | Array `results` con `id`, `title`, `release_date`, `poster_path` |
| Un ID IMDb come `tt0133093`       | `GET /3/find/tt0133093?external_source=imdb_id` | Array `movie_results`                                            |
| Un ID numerico di film come `603` | `GET /3/movie/603`                              | La scheda completa                                               |
| Un client OMDb esistente          | `GET /omdb/?i=tt0133093`                        | Corpo OMDb con `Title`, `Year`, `Ratings`                        |

Salva entrambi gli ID. L'`id` numerico è la chiave per ogni altra chiamata, e `imdb_id` collega i tuoi dati ad altri sistemi. Le regole di ricerca sono nella pagina [ricerca per ID esterno](https://amodb.dev/it/find-by-external-id/).

## Campi vuoti e ricerche fallite

I dati reali sui film hanno delle lacune, quindi scrivi il codice di visualizzazione tenendone conto. Una ricerca senza risultati non è un errore: restituisce HTTP 200 con un array `results` vuoto. Un ID sconosciuto è un errore.

| Caso                        | Cosa vedi                | Cosa fare                                |
| --------------------------- | ------------------------ | ---------------------------------------- |
| Nessun risultato di ricerca | 200 e `"results": []`    | Mostra «nessun risultato», non riprovare |
| ID del film sconosciuto     | 404 con `status_code` 34 | Rimuovi l'ID dalla tua lista             |
| Chiave mancante o errata    | 401 con `status_code` 7  | Fermati e correggi la chiave             |
| `overview` vuoto            | Una stringa vuota        | Richiedi di nuovo con `language=en-US`   |
| Punteggio sconosciuto       | `null` dentro `ratings`  | Nascondi quel badge                      |
| Nessuna data di uscita      | `release_date` vuoto     | Metti il titolo in fondo all'ordinamento |

L'elenco completo degli errori è nella pagina [errori](https://amodb.dev/it/errors/).

## Restare nel limite di richieste

Una ricerca e una chiamata di dettagli costano una richiesta ciascuna. A 20 richieste al minuto sono dieci ricerche di titoli al minuto, a 120 richieste al minuto sono sessanta. Una risposta dalla cache edge conta comunque, perché il controllo della chiave e il limite di richieste vengono prima della cache. Tieni una cache tua per le ricerche ripetute e leggi `X-RateLimit-Remaining` per vedere quanto resta del minuto. Quando ricevi un 429, attendi i secondi di `Retry-After`. I limiti per piano sono nella pagina [limiti di richieste](https://amodb.dev/it/rate-limits/).

## Confronto

| Funzionalità                    | Fare scraping delle pagine da solo            | API di metadati con piano gratuito                 | amodb                                                 |
| ------------------------------- | --------------------------------------------- | -------------------------------------------------- | ----------------------------------------------------- |
| Formato della risposta          | HTML da analizzare                            | JSON                                               | JSON nel formato TMDB v3                              |
| Stabilità dello schema          | Si rompe quando cambia il markup delle pagine | Stabilita dal fornitore                            | Percorsi e campi fissi, possono comparire nuovi campi |
| Condizioni di accesso           | Valgono le condizioni di ogni sito            | Piano gratuito con condizioni d'uso, da verificare | A pagamento, prepagato, nessun piano gratuito         |
| Limite di richieste             | Nulla su cui contare                          | Stabilito dal fornitore                            | 20, 40 o 120 richieste al minuto per chiave           |
| Valutazioni da più fonti        | Uno scraper per sito                          | Varia, vedi la documentazione                      | `ratings` nella stessa chiamata, null quando non note |
| Lingue                          | Quelle offerte da ogni pagina                 | Varia                                              | 14, scelte con `language`                             |
| Riuso dei client TMDB v3 e OMDb | No                                            | Solo se usa lo stesso protocollo                   | Sì, cambia l'URL di base                              |

## Prezzi

L'accesso è prepagato per 1, 3, 6, 12 o 24 mesi, con uno sconto di 0, 10, 20, 30 e 40 per cento sui periodi più lunghi. Non c'è rinnovo automatico né un piano gratuito. Ogni piano dà accesso a tutti i dati, e i piani differiscono solo per la frequenza: 20, 40 o 120 richieste al minuto. Scegline uno nella pagina dei [prezzi](https://amodb.dev/it/pricing/) e fai la tua prima chiamata in pochi minuti.

## Domande e risposte

### Questa API film è compatibile con TMDB?

Sì per gli endpoint di lettura di cui ha bisogno un'app di film. Percorsi, parametri di query e JSON corrispondono a TMDB v3 su https://api.amodb.dev/3: cambi l'URL di base e usi la tua chiave amodb. I metodi di scrittura per account, sessioni, valutazioni e liste restituiscono 405 con status_code 37. I feed delle modifiche, aggregate_credits e le ricerche di crediti e recensioni restituiscono 404.

### Posso cercare un film tramite l'ID IMDb?

Sì. Chiama /3/find/tt0133093?external_source=imdb_id e leggi movie_results, oppure usa l'endpoint in stile OMDb su /omdb/?i=tt0133093. Entrambi accettano la stessa chiave delle chiamate in stile TMDB.

### Quante richieste servono per la pagina di un film?

Al massimo due: una ricerca per ottenere l'ID, poi una chiamata /movie/{id} con append_to_response=credits,videos,ratings. Se salvi già l'ID, basta una sola richiesta.

### Quali lingue restituisce l'API film?

Quattordici: inglese, russo, ucraino, bielorusso, cinese, portoghese, bulgaro, ebraico, ceco, rumeno, francese, polacco, italiano e spagnolo. Passa un tag TMDB come pt-BR in language. Qualsiasi altro tag ripiega sull'inglese.

### C'è un piano gratuito o una prova?

No. L'accesso è prepagato per 1, 3, 6, 12 o 24 mesi, con sconti di 0, 10, 20, 30 e 40 per cento. Non c'è rinnovo automatico. I piani da 20, 40 e 120 richieste al minuto sono nella pagina dei prezzi.

## Pagine correlate

- [API dei dettagli del film](https://amodb.dev/it/movies/): API dettagli film con gli stessi percorsi e JSON di TMDB v3. Ottieni un film per ID, aggiungi crediti, valutazioni e mood con append_to_response, in 14 lingue.
- [API di ricerca](https://amodb.dev/it/search/): API di ricerca con percorsi e JSON di TMDB v3. Trova film, serie, persone, collezioni, società e parole chiave per testo, con filtri anno e paginazione.
- [Valutazioni di film e serie TV](https://amodb.dev/it/ratings/): API valutazioni film: punteggi IMDb, Kinopoisk, Metacritic, Rotten Tomatoes e TMDB di un titolo in una chiamata, con null per le fonti non note.
- [Ricerca per ID esterno](https://amodb.dev/it/find-by-external-id/): Cerca un film, una serie o una persona per ID IMDb, TVDB, Wikidata o Kinopoisk con l'endpoint find di TMDB, e leggi ID esterni e dati Wikidata di un titolo.
- [Avvio rapido](https://amodb.dev/it/quickstart/): Fai la prima chiamata ad amodb: ottieni una chiave, richiedi i dettagli di un film in curl, JavaScript, Python, PHP o Go, carica la locandina. Meno di 2 minuti.
- [Alternativa all'API TMDB](https://amodb.dev/it/tmdb-api-alternative/): Cerchi un'alternativa all'API TMDB? Confronta condizioni, limiti e lingue, poi passa a un'API a pagamento che mantiene i percorsi di lettura TMDB v3.

Aggiornato: 2026-10-18. Source: https://amodb.dev/it/movie-api/
