# Alternativa all'API OMDb

> OMDb è una piccola API a record singolo con una chiave gratuita e un limite giornaliero di 1.000 richieste (controlla il loro sito). amodb risponde a i, t, s, type, y, plot e page su /omdb/ con gli stessi campi, ti limita al minuto e aggiunge gli endpoint TMDB v3 con una sola chiave. Solo JSON, niente XML, niente episodi.

## Scegli in base alla forma delle tue chiamate

Scegli OMDb quando vuoi una piccola scheda per titolo e la sua chiave gratuita copre il tuo volume. Scegli amodb quando lo superi, o quando vuoi lo stesso stile di richiesta OMDb insieme a crediti, immagini e traduzioni con una sola chiave. OMDb restituisce JSON o XML, usa un parametro `apikey` e offre una chiave gratuita con un limite giornaliero di 1.000 richieste (controlla il loro sito), più un livello a pagamento per i sostenitori. amodb è solo a pagamento e risponde ai principali parametri OMDb oltre a TMDB v3.

## Cosa resta uguale

L'endpoint OMDb si trova su `https://api.amodb.dev/omdb/`, e la barra finale è facoltativa. Il tuo codice di parsing esistente non dovrebbe richiedere modifiche per questi elementi.

| Elemento OMDb   | Su amodb                                                                                                         |
| --------------- | ---------------------------------------------------------------------------------------------------------------- |
| `apikey`        | Stesso parametro, con la tua chiave amodb                                                                        |
| `i` e `t`       | Ricerca per ID IMDb o per titolo                                                                                 |
| `s` e `page`    | Ricerca con 10 risultati per pagina e un conteggio `totalResults`, `page` fino a 100                             |
| `type` e `y`    | Filtro per `movie` o `series` e per anno                                                                         |
| `plot`          | `short` o `full`                                                                                                 |
| `r`             | Si accetta solo `json`                                                                                           |
| Campi del corpo | Con i nomi di OMDb, da `Title` a `Response`                                                                      |
| `Ratings`       | Un array di coppie `Source` e `Value` per Internet Movie Database, Rotten Tomatoes e Metacritic, quando presenti |
| Errori          | `{"Response":"False","Error":"..."}` con la formulazione di OMDb, in una risposta HTTP 200                       |

## Cosa non viene riportato

- **XML.** Una richiesta con `r=xml` restituisce 400 con `{"Response":"False","Error":"Only r=json is supported."}`.
- **Stagioni ed episodi.** `Season` ed `Episode` vengono ignorati e `type=episode` non trova nulla. Una richiesta con `i=tt0903747&Season=1` restituisce la scheda della serie, non una stagione. Per gli episodi usa `/3/tv/{id}/season/{n}`.
- **Altri parametri.** `callback` viene ignorato.
- **Campi senza dati.** `DVD`, `Production` e `Website` valgono sempre `"N/A"`. Le schede delle serie hanno `totalSeasons` e omettono `DVD`, `BoxOffice`, `Production` e `Website`.
- **Locandine.** Il campo `Poster` punta a `https://img.amodb.dev/t/p/w300/...` invece che a un altro host. Sostituisci `w300` con `w780` per ottenere un'immagine più grande dallo stesso percorso, e per le immagini non serve alcuna chiave.

L'elenco completo di parametri ed errori è nella pagina dell'[endpoint OMDb](https://amodb.dev/it/omdb-endpoint/).

## Esempio di risposta

Una richiesta con `t=Fight Club` restituisce un oggetto piatto. La risposta qui sotto è reale, con il solo testo di `Plot` accorciato.

```json
{
  "Title": "Fight Club",
  "Year": "1999",
  "Rated": "R",
  "Released": "15 Oct 1999",
  "Runtime": "139 min",
  "Genre": "Crime, Drama, Thriller",
  "Director": "David Fincher",
  "Writer": "Chuck Palahniuk, Jim Uhls",
  "Actors": "Brad Pitt, Edward Norton, Meat Loaf",
  "Plot": "A nameless first-person narrator attends support groups in an attempt to subdue his emotional state an...",
  "Language": "English",
  "Country": "United States, Germany",
  "Awards": "Nominated for 1 Oscar. 12 wins & 38 nominations total",
  "Poster": "https://img.amodb.dev/t/p/w300/qkrH7rjYKU4KOwwIl6wF6H3ISvm.jpg",
  "Ratings": [
    {
      "Source": "Internet Movie Database",
      "Value": "8.8/10"
    },
    {
      "Source": "Rotten Tomatoes",
      "Value": "81%"
    },
    {
      "Source": "Metacritic",
      "Value": "67/100"
    }
  ],
  "Metascore": "67",
  "imdbRating": "8.8",
  "imdbVotes": "2,669,989",
  "imdbID": "tt0137523",
  "Type": "movie",
  "DVD": "N/A",
  "BoxOffice": "$38,003,039",
  "Production": "N/A",
  "Website": "N/A",
  "Response": "True"
}
```

I valori sono stringhe, come in OMDb, quindi fai tu il parsing di `imdbRating`, `imdbVotes` e `Runtime`. Ogni chiamata conta come una richiesta nel tuo limite al minuto, a prescindere da quanti campi leggi.

## Confronto delle funzionalità

| Funzionalità           | OMDb                                                                            | amodb                                                                        |
| ---------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| Modello di prezzo      | Chiave gratuita più un livello a pagamento per i sostenitori, vedi il loro sito | Periodi prepagati, da 1 a 24 mesi                                            |
| Piano gratuito         | Chiave gratuita con limite giornaliero di 1.000, vedi il loro sito              | Nessuno, e nessuna prova                                                     |
| Autenticazione         | Parametro `apikey`                                                              | `apikey` su `/omdb/`, `api_key` o Bearer su `/3`                             |
| Formato della risposta | JSON o XML                                                                      | JSON                                                                         |
| Lingue                 | Vedi la loro documentazione                                                     | 14 lingue dell'interfaccia sui percorsi `/3`                                 |
| Film                   | Sì                                                                              | Sì                                                                           |
| Serie TV               | Serie ed episodi, per i campi vedi la loro documentazione                       | Schede delle serie su `/omdb/`, stagioni ed episodi sui percorsi `/3`        |
| Persone                | Nomi come testo in ogni scheda                                                  | Profili, filmografia e immagini sui percorsi `/3`                            |
| Immagini               | Link alla locandina in ogni scheda                                              | Link alla locandina più elenchi di immagini, `img.amodb.dev`                 |
| Valutazioni            | Campi `Ratings`, `Metascore` e `imdbRating`                                     | Gli stessi campi, più un oggetto `ratings` sui percorsi `/3`                 |
| Limite di richieste    | Limite giornaliero sulla chiave gratuita, vedi il loro sito                     | 20, 40 o 120 al minuto per chiave                                            |
| Uso commerciale        | Vedi il loro sito                                                               | Venduto come API a pagamento, vedi i [prezzi](https://amodb.dev/it/pricing/) |
| Compatibilità          | Definisce il protocollo OMDb                                                    | Parametri OMDb qui sopra e letture TMDB v3                                   |

## Dove amodb è diverso

- **Limiti al minuto.** I piani consentono 20, 40 o 120 richieste al minuto in una finestra scorrevole di 60 secondi. Ogni risposta con chiave porta `X-RateLimit-Remaining`, così un job batch può rallentare da solo prima di incontrare un 429.
- **Una via d'uscita dalle schede singole.** Una scheda OMDb ha un elenco del cast come testo. Con i percorsi `/3` puoi chiedere lo stesso titolo con crediti, video e traduzioni in una sola chiamata, e l'`imdbID` trova la scheda tramite `/3/find`.
- **Immagini più grandi.** Le schede in stile OMDb danno un solo link alla locandina. L'host delle immagini serve dieci dimensioni, da `w92` a `original`.
- **Più fonti di valutazione.** L'estensione `/3/movie/{id}/ratings` aggiunge i valori di Kinopoisk, Metacritic, Rotten Tomatoes e TMDB quando sono noti.

## Dove OMDb è più adatto

- **Progetti piccoli o gratuiti.** Una chiave gratuita con un limite giornaliero di 1.000 basta per un prototipo o un sito amatoriale, e amodb non ha un piano gratuito.
- **Chi consuma XML.** Se un sistema legacy analizza XML, OMDb lo offre e amodb no.
- **Ricerche di stagioni ed episodi.** La rotta `/omdb/` di amodb non ha una modalità per stagioni o episodi, quindi un client costruito su di essa deve usare i percorsi `/3`.
- **Semplicità.** Un solo endpoint e una manciata di parametri si imparano facilmente. Se ti serve solo questo, passare ad amodb porta poco.

## Migrare ad amodb

Cambiano solo l'URL di base e la chiave. Lascia invariato il resto della richiesta, dopo aver cercato nel tuo codice `r=xml`, `Season`, `Episode` e `type=episode`.

```js
const OMDB_BASE = process.env.OMDB_BASE_URL; // before: your current OMDb base URL
const AMODB_BASE = 'https://api.amodb.dev/omdb/'; // after

async function lookup(title) {
  const url = new URL(AMODB_BASE);
  url.searchParams.set('apikey', process.env.AMODB_KEY);
  url.searchParams.set('t', title);
  url.searchParams.set('plot', 'short');
  const res = await fetch(url);
  const data = await res.json();
  if (data.Response === 'False') throw new Error(data.Error);
  return data;
}

const movie = await lookup('Fight Club');
console.log(movie.Title, movie.Year, movie.imdbRating, movie.Poster);
```

Continua a controllare il campo `Response`, come facevi con OMDb. Quando il valore è la stringa `"False"`, il campo `Error` contiene il messaggio. Per gli episodi, associa l'`imdbID` una volta con `/3/find` e leggi le stagioni dal lato `/3`:

```bash
curl -s "https://api.amodb.dev/3/find/tt0903747?external_source=imdb_id&api_key=$AMODB_KEY"
curl -s "https://api.amodb.dev/3/tv/1396/season/1?api_key=$AMODB_KEY"
```

Per il lato in stile TMDB, vedi l'[autenticazione](https://amodb.dev/it/authentication/) e l'[avvio rapido](https://amodb.dev/it/quickstart/).

## Prezzi

amodb è a pagamento e si rinnova solo quando acquisti un altro periodo. I tre piani si differenziano soltanto per la frequenza, a 20, 40 o 120 richieste al minuto, e ognuno restituisce tutti i dati. I periodi durano 1, 3, 6, 12 o 24 mesi, e quelli più lunghi hanno uno sconto dal 10 al 40 per cento. Controlla i [prezzi](https://amodb.dev/it/pricing/) per gli importi attuali.

## Domande e risposte

### Devo riscrivere il mio client OMDb?

No, se usa i, t, s, type, y, plot e page. Cambia l'URL di base in https://api.amodb.dev/omdb/ e inserisci la tua chiave amodb nel parametro apikey. Il corpo mantiene i nomi dei campi OMDb come imdbRating. I parametri Season ed Episode e r=xml non sono supportati.

### L'endpoint OMDb di amodb restituisce XML?

No. Restituisce solo JSON. Una richiesta con r=xml riceve una risposta 400 con l'errore Only r=json is supported, quindi rimuovi il parametro r o imposta r=json prima di passare.

### Posso cercare stagioni ed episodi sull'endpoint OMDb?

No. I parametri Season ed Episode vengono ignorati: una richiesta con i e Season=1 restituisce la scheda della serie, e type=episode non trova nulla. Leggi gli episodi da /3/tv/{id}/season/{n} con la stessa chiave.

### In cosa il limite è diverso da quello della chiave gratuita OMDb?

OMDb documenta un limite giornaliero di 1.000 richieste per la chiave gratuita, quindi controlla il loro sito per le condizioni attuali. amodb limita le richieste al minuto per chiave, a 20, 40 o 120 a seconda del piano.

### Da dove si caricano le locandine?

Il campo Poster punta a img.amodb.dev nella dimensione w300. Sostituisci w300 con un'altra dimensione come w780 nello stesso URL per ottenere un'immagine più grande. Le immagini non richiedono alcuna chiave.

### Posso usare la stessa chiave per le chiamate in stile TMDB?

Sì. Una sola chiave funziona per /omdb/ e per i percorsi /3. Così puoi recuperare crediti, trailer o traduzioni di un imdbID senza un secondo abbonamento.

## Pagine correlate

- [Endpoint compatibile OMDb](https://amodb.dev/it/omdb-endpoint/): Endpoint compatibile OMDb su api.amodb.dev/omdb/. Cerca con i o t, ricerca con s, leggi l'array Ratings e tieni il tuo client cambiando solo l'URL di base.
- [Alternativa all'API IMDb](https://amodb.dev/it/imdb-api-alternative/): IMDb non ha un'API REST generica gratuita. Cerca un titolo con l'ID IMDb, leggi la valutazione IMDb quando c'è e ottieni cast, immagini e trailer.
- [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.
- [Autenticazione](https://amodb.dev/it/authentication/): Come inviare la chiave amodb: api_key nella query, un header Authorization Bearer o apikey per le chiamate OMDb. Formato, conservazione, rotazione, errori 401.
- [Prezzi](https://amodb.dev/it/pricing/): I piani amodb differiscono solo per le richieste al minuto: 20, 40 o 120. Ogni piano include tutti i dati TMDB v3 e OMDb. Prepagato, senza rinnovo né prova.

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