# Alternative à l'API TVmaze

> TVmaze ne couvre que les séries, son usage est gratuit, limité par adresse IP, et ses données sont sous licence d'attribution. Consultez leur documentation pour les détails. amodb est une API payante pour séries, films et personnes, avec des limites comptées par clé et des chemins TMDB v3. Choisissez selon la portée et le budget.

## Choisir selon la portée et le budget

TVmaze ne couvre que les séries. C'est une API publique gratuite avec des limites par adresse IP, et ses données sont sous licence d'attribution : consultez leur documentation pour les détails. amodb est payant et couvre séries, films et personnes. Si votre application est un suivi de séries et qu'une source gratuite répond à vos besoins, TVmaze est un départ raisonnable. Si vous affichez aussi des films, des pages de distribution ou des affiches en plusieurs langues, une seule clé amodb remplace plusieurs sources.

## Ce que chaque portée signifie pour votre application

| Votre application affiche        | TVmaze                  | amodb                                           |
| -------------------------------- | ----------------------- | ----------------------------------------------- |
| Une page de série                | Oui                     | `GET /3/tv/{series_id}`                         |
| Une liste d'épisodes             | Oui                     | `GET /3/tv/{series_id}/season/{season_number}`  |
| Une page de film                 | Pas de films            | `GET /3/movie/{movie_id}`                       |
| Une page d'acteur                | Voir leur documentation | `GET /3/person/{person_id}` et crédits combinés |
| Les séries diffusées aujourd'hui | Voir leur documentation | `GET /3/tv/airing_today`                        |
| Un résumé traduit                | Voir leur documentation | Paramètre `language`, 14 langues                |
| Les notes de plusieurs sites     | Voir leur documentation | Extension `/ratings`                            |

La ligne des films tranche la plupart des cas. Si vous n'avez pas de pages de films, la portée supplémentaire ne vous apporte rien.

## Écarts à vérifier avant de migrer

Les points de terminaison de saisons et d'épisodes suivent la forme TMDB, et quelques-unes de leurs parties reviennent vides. Testez les écrans qui les utilisent.

- **Distribution d'un épisode.** Sur un épisode, `cast` est un tableau vide. `guest_stars` et `crew` sont remplis, et l'appel `/credits` de la série contient la distribution principale.
- **Extras de saison.** Les `images`, `videos` et `translations` d'une saison sont vides : l'affiche d'une saison vient donc de la fiche de saison et non d'une liste d'images.
- **Identifiants externes.** Les `external_ids` des saisons et des épisodes sont tous nuls. Associez les épisodes à vos propres données par `season_number` et `episode_number`.
- **Créateurs.** `created_by` sur une série est vide pour la plupart des séries.
- **Pas de flux de changements.** amodb n'a pas de point de terminaison qui liste les séries modifiées depuis une date.

## Comparatif des fonctionnalités

| Fonctionnalité    | TVmaze                                                      | amodb                                                             |
| ----------------- | ----------------------------------------------------------- | ----------------------------------------------------------------- |
| Modèle tarifaire  | API publique d'usage gratuit                                | Prépayé, de 1 à 24 mois par achat                                 |
| Offre gratuite    | Oui, toute l'API publique                                   | Aucune, et pas d'essai                                            |
| Authentification  | Voir leur documentation                                     | `api_key` ou en-tête Bearer                                       |
| Format de réponse | JSON, voir leur documentation                               | JSON au format TMDB v3                                            |
| Langues           | Voir leur documentation                                     | 14 langues d'interface                                            |
| Films             | Non                                                         | Oui                                                               |
| Séries            | Oui, son seul objectif                                      | Oui                                                               |
| Personnes         | Voir leur documentation                                     | Oui                                                               |
| Images            | Voir leur documentation                                     | `img.amodb.dev`, dix jetons de taille                             |
| Notes             | Voir leur documentation                                     | Cinq sources quand elles sont connues                             |
| Limite de débit   | Par adresse IP, voir leur documentation pour les chiffres   | 20, 40 ou 120 par minute et par clé                               |
| Usage commercial  | Données sous licence d'attribution, voir leur documentation | Offres payantes, voir les [tarifs](https://amodb.dev/fr/pricing/) |
| Compatibilité     | Sa propre API                                               | Lectures TMDB v3 et OMDb                                          |

## Ce qui distingue amodb

- **La limite suit la clé.** Tous vos serveurs partagent un seul compteur dans une fenêtre glissante de 60 secondes, et les réponses portent `X-RateLimit-Remaining`. Rien ne dépend de l'adresse d'où part une requête.
- **Films, séries et personnes au même endroit.** Un seul client, un seul format d'erreur et un seul jeu d'en-têtes couvrent toute l'application.
- **Langues.** Titres et résumés reviennent dans l'une des 14 langues, et `original_name` garde le titre d'origine.
- **Un protocole établi.** Les bibliothèques écrites pour les lectures TMDB v3 fonctionnent avec une nouvelle URL de base. Voir la page [API de séries TV](https://amodb.dev/fr/tv-show-api/) pour les points de terminaison de séries.

## Quand TVmaze convient mieux

- **Pas de budget.** L'usage est gratuit : un projet d'étudiant ou un suivi de week-end n'a besoin d'aucun paiement. amodb n'a ni offre gratuite ni essai.
- **Séries uniquement, en restant simple.** Si votre modèle de données ne contient que des séries et des épisodes, une API centrée sur les séries lui correspond.
- **Ses propres conventions.** Les applications déjà construites autour du modèle TVmaze économisent du travail en y restant.

Si vous restez, respectez sa licence d'attribution. Consultez leur documentation pour le libellé.

## Migrer vers amodb

Commencez par un travail d'association. Lisez les identifiants externes que listent vos fiches TVmaze stockées (voir leur documentation pour les noms de champs) et résolvez-les via `/3/find`. Le programme ci-dessous associe un identifiant IMDb à une série et affiche la date du prochain épisode.

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

Le type pointeur de `NextEpisode` gère le `null` que renvoient les séries terminées. Lancez l'association une fois, enregistrez l'identifiant amodb avec chacune de vos fiches, puis appelez `/3/tv/{id}` ensuite. Une réponse 429 vient avec `Retry-After`, et la page [recherche par identifiant externe](https://amodb.dev/fr/find-by-external-id/) liste les autres sources d'identifiants.

## Dimensionner une synchronisation nocturne

Supposons que vous actualisiez 300 séries chaque nuit. Cela fait 300 requêtes, puisqu'un appel de série renvoie une série. À 20 requêtes par minute, le travail prend 15 minutes, à 40 il prend 7,5 minutes, et à 120 il prend 2,5 minutes. Ajoutez `append_to_response=credits,ratings` à chaque appel pour que la distribution et les notes arrivent dans la même requête, au lieu de coûter deux requêtes de plus par série. Lisez `X-RateLimit-Remaining` et faites une pause quand il atteint zéro, puis reprenez après les secondes de `X-RateLimit-Reset`.

## Tarifs

amodb est prépayé et ne se renouvelle jamais tout seul. Choisissez 1, 3, 6, 12 ou 24 mois et une offre de 20, 40 ou 120 requêtes par minute. Les périodes plus longues coûtent 10, 20, 30 ou 40 pour cent de moins, et chaque offre inclut toutes les données. Les montants sont sur les [tarifs](https://amodb.dev/fr/pricing/).

## Questions et réponses

### L'API TVmaze est-elle gratuite ?

TVmaze propose une API publique gratuite avec des limites par adresse IP, et ses données sont sous licence d'attribution. Consultez leur documentation pour les limites actuelles et le texte de la licence. amodb est payant et n'a pas d'offre gratuite.

### amodb couvre-t-il les films en plus des séries ?

Oui. Films, séries, saisons, épisodes et personnes sont sur la même clé et la même URL de base. TVmaze ne couvre que les séries : une page de film dans votre application demande donc une seconde source.

### Comment associer les séries TVmaze aux identifiants amodb ?

Les fiches de séries TVmaze listent des identifiants pour d'autres bases comme IMDb (voir leur documentation pour les champs exacts). Appelez le point de terminaison find avec l'identifiant IMDb et external_source=imdb_id, puis conservez l'id de tv_results.

### Pourquoi une limite par IP est-elle gênante ?

Une limite liée à une adresse IP est partagée par tout ce qui se trouve derrière, comme un groupe de serveurs ou un réseau de bureau. amodb compte les requêtes par clé dans une fenêtre glissante de 60 secondes, d'où que viennent les appels.

### Puis-je afficher la date du prochain épisode d'une série ?

Oui. Les détails d'une série renvoient next_episode_to_air avec air_date, season_number et episode_number, ou null quand rien n'est programmé. La périphérie met les détails en cache 6 heures : actualisez quelques fois par jour.

## Pages liées

- [API de séries TV pour les séries, les saisons et les épisodes](https://amodb.dev/fr/tv-show-api/): API de séries TV avec statut, chaînes, saisons, épisodes et next_episode_to_air. JSON compatible TMDB v3 en 14 langues, dès 20 requêtes par minute.
- [API guide des épisodes](https://amodb.dev/fr/episode-guide-api/): API guide des épisodes avec les points de terminaison saisons et épisodes de TMDB v3 : noms, dates, durées, images et groupes d'épisodes, en 14 langues.
- [API des saisons et épisodes de séries TV](https://amodb.dev/fr/tv-seasons-episodes/): API de saisons et d'épisodes aux chemins et au JSON de TMDB v3. Lisez une saison avec tous ses épisodes, ou un épisode avec date de diffusion, durée et image.
- [Recherche par identifiant externe](https://amodb.dev/fr/find-by-external-id/): Retrouvez un film, une série ou une personne par id IMDb, TVDB, Wikidata ou Kinopoisk avec find de TMDB, puis lisez ids externes et faits Wikidata.
- [Limites de débit](https://amodb.dev/fr/rate-limits/): amodb limite chaque clé en requêtes par minute sur une fenêtre glissante de 60 secondes : 20, 40 ou 120 selon l'offre. Lisez les en-têtes et gérez le 429.
- [Tarifs](https://amodb.dev/fr/pricing/): Les offres amodb ne diffèrent que par les requêtes par minute : 20, 40 ou 120. Toutes incluent les données TMDB v3 et OMDb. Prépayé, sans renouvellement.

Mis à jour: 2026-10-18. Source: https://amodb.dev/fr/tvmaze-api-alternative/
