# Alternativa all'API TVmaze

> TVmaze copre solo le serie TV, è gratuito, limitato per indirizzo IP e i suoi dati sono sotto licenza con attribuzione. Controlla la loro documentazione per i dettagli. amodb è un'API a pagamento per serie TV, film e persone, con limiti contati per chiave e percorsi TMDB v3. Scegli in base all'ambito e al budget.

## Scegli in base all'ambito e al budget

TVmaze copre solo le serie TV. È un'API pubblica gratuita con limiti per indirizzo IP, e i suoi dati sono sotto licenza con attribuzione, quindi controlla la loro documentazione per i dettagli. amodb è a pagamento e copre serie TV, film e persone. Se la tua app è un tracker di serie TV e una fonte gratuita soddisfa le tue esigenze, TVmaze è un inizio sensato. Se mostri anche film, pagine del cast o locandine in più lingue, una sola chiave amodb sostituisce più fonti.

## Cosa significa ogni ambito per la tua app

| La tua app mostra      | TVmaze                      | amodb                                           |
| ---------------------- | --------------------------- | ----------------------------------------------- |
| Una pagina di serie TV | Sì                          | `GET /3/tv/{series_id}`                         |
| Un elenco di episodi   | Sì                          | `GET /3/tv/{series_id}/season/{season_number}`  |
| Una pagina di film     | Nessun film                 | `GET /3/movie/{movie_id}`                       |
| Una pagina di attore   | Vedi la loro documentazione | `GET /3/person/{person_id}` e crediti combinati |
| Serie in onda oggi     | Vedi la loro documentazione | `GET /3/tv/airing_today`                        |
| Una trama tradotta     | Vedi la loro documentazione | Parametro `language`, 14 lingue                 |
| Punteggi da più siti   | Vedi la loro documentazione | Estensione `/ratings`                           |

La riga dei film decide la maggior parte dei casi. Se non hai pagine di film, l'ambito in più non ha valore per te.

## Lacune da controllare prima di migrare

Gli endpoint di stagioni ed episodi seguono la struttura TMDB, e alcune loro parti tornano vuote. Prova le schermate che li usano.

- **Cast di un episodio.** Su un episodio, `cast` è un array vuoto. `guest_stars` e `crew` sono compilati, e la chiamata `/credits` della serie contiene il cast principale.
- **Extra delle stagioni.** `images`, `videos` e `translations` di una stagione sono vuoti, quindi la locandina di una stagione viene dalla scheda della stagione e non da un elenco di immagini.
- **ID esterni.** Gli `external_ids` di stagioni ed episodi sono tutti nulli. Associa gli episodi ai tuoi record con `season_number` ed `episode_number`.
- **Autori.** `created_by` di una serie è vuoto per la maggior parte delle serie.
- **Nessun feed delle modifiche.** amodb non ha un endpoint che elenchi le serie modificate da una certa data.

## Confronto delle funzionalità

| Funzionalità           | TVmaze                                                           | amodb                                                             |
| ---------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------- |
| Modello di prezzo      | API pubblica di uso gratuito                                     | Prepagato, da 1 a 24 mesi per acquisto                            |
| Piano gratuito         | Sì, tutta l'API pubblica                                         | Nessuno, e nessuna prova                                          |
| Autenticazione         | Vedi la loro documentazione                                      | `api_key` o header Bearer                                         |
| Formato della risposta | JSON, vedi la loro documentazione                                | JSON nel formato TMDB v3                                          |
| Lingue                 | Vedi la loro documentazione                                      | 14 lingue dell'interfaccia                                        |
| Film                   | No                                                               | Sì                                                                |
| Serie TV               | Sì, il suo unico focus                                           | Sì                                                                |
| Persone                | Vedi la loro documentazione                                      | Sì                                                                |
| Immagini               | Vedi la loro documentazione                                      | `img.amodb.dev`, dieci token di dimensione                        |
| Valutazioni            | Vedi la loro documentazione                                      | Cinque fonti, quando sono note                                    |
| Limite di richieste    | Per indirizzo IP, per i numeri vedi la loro documentazione       | 20, 40 o 120 al minuto per chiave                                 |
| Uso commerciale        | Dati sotto licenza con attribuzione, vedi la loro documentazione | Piani a pagamento, vedi i [prezzi](https://amodb.dev/it/pricing/) |
| Compatibilità          | La sua API                                                       | Letture TMDB v3 e OMDb                                            |

## Dove amodb è diverso

- **Il limite segue la chiave.** Tutti i tuoi server condividono un solo contatore in una finestra scorrevole di 60 secondi, e le risposte portano `X-RateLimit-Remaining`. Nulla dipende dall'indirizzo da cui parte una richiesta.
- **Film, serie TV e persone in un solo posto.** Un solo client, un solo formato di errore e un solo insieme di header coprono tutta l'app.
- **Lingue.** Titoli e trame tornano in una qualsiasi delle 14 lingue, e `original_name` conserva il titolo nativo.
- **Un protocollo consolidato.** Le librerie scritte per le letture TMDB v3 funzionano con un nuovo URL di base. Vedi la pagina [API per serie TV](https://amodb.dev/it/tv-show-api/) per gli endpoint delle serie.

## Dove TVmaze è più adatto

- **Nessun budget.** L'uso è gratuito, quindi un progetto da studente o un tracker del fine settimana non richiede pagamenti. amodb non ha un piano gratuito né una prova.
- **Solo serie TV, in modo semplice.** Se il tuo modello di dati ha serie ed episodi e nient'altro, un'API incentrata sulle serie TV gli corrisponde.
- **Le sue convenzioni.** Le app già costruite attorno al modello di TVmaze risparmiano lavoro restando.

Se resti, rispetta la sua licenza con attribuzione. Per il testo controlla la loro documentazione.

## Migrare ad amodb

Inizia con un job di associazione. Leggi gli ID esterni elencati dai tuoi record TVmaze salvati (per i nomi dei campi controlla la loro documentazione) e risolvili tramite `/3/find`. Il programma qui sotto associa un ID IMDb a una serie e stampa la data del prossimo episodio.

```go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

type findResult struct {
	TVResults []struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
	} `json:"tv_results"`
}

type episode struct {
	AirDate       string `json:"air_date"`
	SeasonNumber  int    `json:"season_number"`
	EpisodeNumber int    `json:"episode_number"`
}

type series struct {
	Name        string   `json:"name"`
	Status      string   `json:"status"`
	NextEpisode *episode `json:"next_episode_to_air"`
}

var client = &http.Client{Timeout: 10 * time.Second}

func get(path string, out any) error {
	req, err := http.NewRequest(http.MethodGet, "https://api.amodb.dev/3"+path, nil)
	if err != nil {
		return err
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	res, err := client.Do(req)
	if err != nil {
		return err
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		return fmt.Errorf("amodb returned %s", res.Status)
	}
	return json.NewDecoder(res.Body).Decode(out)
}

func main() {
	var found findResult
	if err := get("/find/tt0903747?external_source=imdb_id", &found); err != nil {
		fmt.Println(err)
		return
	}
	if len(found.TVResults) == 0 {
		fmt.Println("no match")
		return
	}
	var s series
	if err := get(fmt.Sprintf("/tv/%d", found.TVResults[0].ID), &s); err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(s.Name, s.Status)
	if s.NextEpisode != nil {
		fmt.Println("next episode:", s.NextEpisode.AirDate)
	}
}
```

Il tipo puntatore di `NextEpisode` gestisce il `null` che restituiscono le serie concluse. Esegui l'associazione una volta, salva l'ID amodb con ciascuno dei tuoi record e da quel momento chiama `/3/tv/{id}`. Un 429 riceve risposta con `Retry-After`, e la pagina [ricerca per ID esterno](https://amodb.dev/it/find-by-external-id/) elenca le altre fonti di ID.

## Dimensionare una sincronizzazione notturna

Supponi di aggiornare 300 serie ogni notte. Sono 300 richieste, perché una chiamata di serie restituisce una serie. A 20 richieste al minuto il job dura 15 minuti, a 40 dura 7,5 minuti e a 120 dura 2,5 minuti. Aggiungi `append_to_response=credits,ratings` a ogni chiamata così cast e punteggi arrivano nella stessa richiesta, invece di costare due richieste in più per ogni serie. Leggi `X-RateLimit-Remaining` e fai una pausa quando arriva a zero, poi riprendi dopo i secondi di `X-RateLimit-Reset`.

## Prezzi

amodb è prepagato e non si rinnova mai da solo. Scegli 1, 3, 6, 12 o 24 mesi e un piano da 20, 40 o 120 richieste al minuto. I periodi più lunghi costano il 10, 20, 30 o 40 per cento in meno, e ogni piano include tutti i dati. Gli importi sono nella pagina dei [prezzi](https://amodb.dev/it/pricing/).

## Domande e risposte

### L'API di TVmaze è gratuita?

TVmaze offre un'API pubblica gratuita con limiti per indirizzo IP, e i suoi dati sono sotto licenza con attribuzione. Controlla la loro documentazione per i limiti attuali e il testo della licenza. amodb è a pagamento e non ha un piano gratuito.

### amodb copre anche i film, oltre alle serie TV?

Sì. Film, serie TV, stagioni, episodi e persone usano la stessa chiave e lo stesso URL di base. TVmaze copre solo le serie TV, quindi una pagina di film nella tua app richiede lì una seconda fonte.

### Come associo le serie di TVmaze agli ID amodb?

Le schede delle serie di TVmaze elencano gli ID di altri database come IMDb (per i campi esatti controlla la loro documentazione). Chiama l'endpoint find con l'ID IMDb e external_source=imdb_id, poi salva l'id da tv_results.

### Perché un limite per IP è un problema?

Un limite legato a un indirizzo IP è condiviso da tutto ciò che sta dietro, come un gruppo di server o una rete d'ufficio. amodb conta le richieste per chiave in una finestra scorrevole di 60 secondi, da qualunque posto arrivino le chiamate.

### Posso mostrare la data del prossimo episodio di una serie?

Sì. I dettagli di una serie restituiscono next_episode_to_air con air_date, season_number ed episode_number, oppure null quando non c'è nulla in programma. L'edge mette in cache i dettagli per 6 ore, quindi aggiorna poche volte al giorno.

## Pagine correlate

- [API per serie TV, stagioni ed episodi](https://amodb.dev/it/tv-show-api/): API serie TV con stato, emittenti, stagioni, episodi e next_episode_to_air. JSON compatibile TMDB v3 in 14 lingue, da 20 richieste al minuto.
- [API guida agli episodi](https://amodb.dev/it/episode-guide-api/): API guida agli episodi con gli endpoint di stagioni ed episodi di TMDB v3: nomi, date, durate, immagini e gruppi di episodi di ogni serie, in 14 lingue.
- [API di stagioni ed episodi delle serie TV](https://amodb.dev/it/tv-seasons-episodes/): API stagioni ed episodi con gli stessi percorsi e JSON di TMDB v3. Leggi una stagione con tutti gli episodi, o un episodio con data, durata e immagine.
- [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.
- [Limiti di richieste](https://amodb.dev/it/rate-limits/): amodb limita ogni chiave per richieste al minuto in una finestra scorrevole di 60 secondi: 20, 40 o 120 in base al piano. Leggi gli header, gestisci il 429.
- [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/tvmaze-api-alternative/
