# API de series de TV para temporadas y episodios

> La API de series de TV devuelve una serie en GET /3/tv/{series_id} con su estado, cadenas, lista de temporadas y next_episode_to_air. Los endpoints de temporada y episodio añaden fechas de emisión, duraciones y fotogramas. El JSON coincide con TMDB v3, en 14 idiomas, con planes prepago de 20, 40 o 120 solicitudes por minuto.

## Una API de series de TV con estado, temporadas y próximo episodio

`GET /3/tv/{series_id}` devuelve una serie con su `status`, `networks`, la lista `seasons`, `last_episode_to_air` y `next_episode_to_air`. Los endpoints de temporada y episodio añaden fechas de emisión, duraciones y fotogramas. amodb es una API independiente que habla el protocolo TMDB v3, así que un cliente escrito para TMDB funciona después de cambiar la URL base a `https://api.amodb.dev/3`.

Qué obtienes:

- Registros de series con el número de temporadas y episodios, además de las fechas de la primera y la última emisión.
- Un campo `status` de texto y un indicador `in_production`.
- Cadenas de TV con ids, logotipos y país de origen.
- Una llamada por temporada, que devuelve todos los episodios de esa temporada.
- Listas de series que se emiten hoy o en los próximos 7 días.

## Qué datos obtienes

| Necesitas                   | Llamada                                                                 | Campos clave                                                                                  |
| --------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| Registro de la serie        | `GET /3/tv/{series_id}`                                                 | `name`, `original_name`, `status`, `in_production`, `number_of_seasons`, `number_of_episodes` |
| Siguiente y último episodio | la misma llamada                                                        | `next_episode_to_air`, `last_episode_to_air`                                                  |
| Una temporada               | `GET /3/tv/{series_id}/season/{season_number}`                          | `episodes`, `air_date`, `poster_path`                                                         |
| Un episodio                 | `GET /3/tv/{series_id}/season/{season_number}/episode/{episode_number}` | `name`, `overview`, `runtime`, `still_path`, `air_date`                                       |
| Una cadena de TV            | `GET /3/network/{network_id}`                                           | `name`, `headquarters`, `origin_country`                                                      |

Las listas completas de campos están en [series de TV](https://amodb.dev/es/tv-series/) y [temporadas y episodios](https://amodb.dev/es/tv-seasons-episodes/).

## Empieza en 3 pasos

1. Abre [precios](https://amodb.dev/es/pricing/) y elige el plan con la velocidad de solicitudes que necesitas: 20, 40 o 120 por minuto.
2. Crea una clave de API en el panel de tu cuenta.
3. Envía `GET /3/tv/{series_id}` con `Authorization: Bearer YOUR_API_KEY`, o añade `api_key` como parámetro de consulta.

## Ejemplo de solicitud

El script lee Breaking Bad (id de serie 1396), imprime su estado y el siguiente episodio, y luego lista la temporada 1. Guárdalo como `check.mjs` y ejecútalo con Node 18 o superior.

```bash
curl -s "https://api.amodb.dev/3/tv/1396?language=en-US&append_to_response=ratings" \
  -H "Authorization: Bearer $AMODB_KEY"

curl -s "https://api.amodb.dev/3/tv/1396/season/1?language=en-US" \
  -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) {
  const res = await fetch(`${base}${path}`, { headers });
  if (!res.ok) throw new Error(`amodb returned ${res.status} for ${path}`);
  return res.json();
}

const show = await get('/tv/1396?language=en-US');
const next = show.next_episode_to_air;
console.log(`${show.name}: ${show.status}, ${show.number_of_seasons} seasons`);
console.log(next
  ? `Next: S${next.season_number}E${next.episode_number} on ${next.air_date}`
  : 'No upcoming episode is scheduled');

const season = await get('/tv/1396/season/1?language=en-US');
for (const ep of season.episodes) {
  console.log(`E${ep.episode_number} ${ep.air_date} ${ep.name}`);
}
```

Una respuesta de serie recortada para `language=en-US`. Solo se conservan algunos campos, y `seasons` muestra sus primeras 2 de 6 entradas. Algunos nombres no siguen a `language` en estos datos: el nombre de la temporada 0 está en chino y el `name` dentro de `last_episode_to_air` está en hebreo.

```json
{
  "first_air_date": "2008-01-20",
  "id": 1396,
  "in_production": false,
  "last_air_date": "2013-09-29",
  "last_episode_to_air": {
    "air_date": "2013-09-29",
    "episode_number": 16,
    "episode_type": "standard",
    "id": 62161,
    "name": "פלינה",
    "overview": "הסדרה זוכת הפרסים מגיעה לסיום דרמתי בפרק החותם אותה.",
    "production_code": "",
    "runtime": 56,
    "season_number": 5,
    "show_id": 1396,
    "still_path": "/pA0YwyhvdDXP3BEGL2grrIhq8aM.jpg",
    "vote_average": 0,
    "vote_count": 0
  },
  "name": "Breaking Bad",
  "next_episode_to_air": null,
  "number_of_episodes": 62,
  "number_of_seasons": 5,
  "original_name": "Breaking Bad",
  "seasons": [
    {
      "air_date": "2009-02-17",
      "episode_count": 9,
      "id": 3577,
      "name": "特别篇",
      "overview": "",
      "poster_path": "/ikBSCmgG5Z4jequUUAjKpf1QG3T.jpg",
      "season_number": 0,
      "vote_average": 0
    },
    {
      "air_date": "2008-01-20",
      "episode_count": 7,
      "id": 3572,
      "name": "Season 1",
      "overview": "High school chemistry teacher Walter White's life is suddenly transformed by a dire medical diagn...",
      "poster_path": "/91EIXdWxmp2mHNRsSuDW3WyDJLj.jpg",
      "season_number": 1,
      "vote_average": 0
    }
  ],
  "status": "Ended"
}
```

## Cómo leer el estado y el siguiente episodio

El texto de `status` te dice cómo etiquetar una serie. `next_episode_to_air` es un objeto solo mientras hay un episodio programado, así que es null entre temporadas y también después del final. Comprueba `status` antes de mostrar «finalizada».

| `status`         | Significado                          | Qué mostrar                                               |
| ---------------- | ------------------------------------ | --------------------------------------------------------- |
| Returning Series | Se esperan más episodios             | La fecha de emisión si existe el objeto, si no «renovada» |
| In Production    | Se está produciendo, aún no se emite | «En producción»                                           |
| Planned          | Solo anunciada                       | «Planificada»                                             |
| Pilot            | Solo existe un piloto                | «Piloto»                                                  |
| Ended            | La serie terminó                     | «Finalizada» y `last_air_date`                            |
| Canceled         | Se detuvo antes del final previsto   | «Cancelada»                                               |

Campos dentro de `next_episode_to_air` y `last_episode_to_air`: `air_date`, `season_number`, `episode_number`, `episode_type`, `id`, `show_id`, `name`, `overview`, `runtime` y `still_path`. El texto de `status` también puede venir vacío en algunos títulos, así que ten lista una etiqueta neutral.

Los detalles se guardan en la caché perimetral durante 6 horas, así que pedir la misma serie más de cuatro veces al día devuelve el mismo cuerpo. Consulta una o dos veces al día las series que sigues y actualiza la que abre un usuario.

## Temporadas, episodios y lo que se emite

La temporada 0, cuando una serie la tiene, contiene los especiales. Las temporadas regulares empiezan en 1.

| Llamada                                        | Devuelve                                          | Parámetros                                        |
| ---------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- |
| `GET /3/tv/{series_id}/season/{season_number}` | Registro de la temporada con una lista `episodes` | `language`, `append_to_response`                  |
| `GET /3/tv/airing_today`                       | Series con un episodio que se emite hoy           | `page`, `language`                                |
| `GET /3/tv/on_the_air`                         | Series que se emiten en la próxima semana         | `page`, `language`                                |
| `GET /3/discover/tv`                           | Series filtradas por cadena, estado y más         | `with_networks`, `with_status`, `sort_by`, `page` |

Las listas y los resultados de discover se guardan en caché 30 minutos, así que una solicitud cada media hora basta para una insignia de «se emite pronto». Compara los ids devueltos con las series que siguen tus usuarios. Los detalles de temporadas y episodios están en la página de la [guía de episodios](https://amodb.dev/es/episode-guide-api/).

## Crea una lista de seguimiento con cuentas regresivas

Una pantalla de «series que sigo» necesita un id guardado por serie y una pequeña tarea diaria.

1. Guarda el `id` de la serie cuando un usuario la sigue.
2. Una vez al día, llama a `/3/tv/{series_id}` por cada id seguido y guarda `status`, `next_episode_to_air` y `last_air_date`.
3. Cuando `next_episode_to_air` es un objeto, muestra `air_date` como fecha. No incluye hora del día ni zona horaria, así que no cuentes hacia atrás hasta el minuto.
4. Cuando es null y `status` es Returning Series, muestra «temporada nueva sin programar».
5. Pide la llamada de temporada solo cuando un usuario abre la serie, porque es la respuesta más grande.

Un 404 con `status_code` 34 significa que el id no existe, y un 429 significa que superaste tus solicitudes por minuto: espera `Retry-After` segundos. Con 200 series seguidas, una pasada diaria son 200 solicitudes, unos diez minutos a 20 solicitudes por minuto. Consulta [límites de solicitudes](https://amodb.dev/es/rate-limits/) y [errores](https://amodb.dev/es/errors/).

## Cómo se compara

| Capacidad                            | Hacer scraping de las páginas tú mismo          | API de metadatos con nivel gratuito | amodb                                                        |
| ------------------------------------ | ----------------------------------------------- | ----------------------------------- | ------------------------------------------------------------ |
| Estructura de temporadas y episodios | Reconstruida a partir del diseño de las páginas | Varía, revisa la documentación      | Llamada de temporada con una lista `episodes`                |
| Próxima fecha de emisión             | Extraída de una página de programación          | Varía, revisa la documentación      | `next_episode_to_air`, null cuando no hay ninguno programado |
| Estado de la serie                   | Texto libre en una página                       | Varía, revisa la documentación      | Texto `status` e indicador `in_production`                   |
| Emisiones de esta semana             | Hacer scraping de una programación              | Varía, revisa la documentación      | `/3/tv/on_the_air` y `/3/tv/airing_today`                    |
| Idiomas                              | Los que ofrezca la página                       | Varía                               | 14, elegidos con `language`                                  |
| Términos de acceso                   | Se aplican los términos del sitio               | Nivel gratuito con términos de uso  | De pago, prepago, sin nivel gratuito                         |

## Precios

Paga una vez por 1, 3, 6, 12 o 24 meses. Los periodos más largos tienen un descuento del 10, 20, 30 o 40 por ciento y nada se renueva automáticamente. Todos los planes dan acceso a todos los datos de TV, con 20, 40 o 120 solicitudes por minuto como única diferencia. Consulta [precios](https://amodb.dev/es/pricing/), crea una clave y tu primera llamada de serie cuesta una solicitud.

## Preguntas y respuestas

### ¿Cómo sé si una serie de TV sigue en emisión?

Lee status en /3/tv/{id}. Returning Series significa que se esperan más episodios, mientras que Ended y Canceled significan que no. El campo next_episode_to_air contiene el siguiente episodio programado y es null cuando no hay ninguno.

### ¿Puedo obtener todos los episodios de una serie en una sola solicitud?

Una temporada por llamada. GET /3/tv/{id}/season/{n} devuelve todos los episodios de esa temporada en una lista episodes, así que una serie de cinco temporadas requiere cinco llamadas de temporada más una de serie.

### ¿Qué obtengo de una cadena de TV?

La lista networks de una serie incluye id, name, logo_path y origin_country. GET /3/network/{id} añade detalles, y with_networks en /3/discover/tv lista las series de una cadena.

### ¿Puedo listar las series que se emiten hoy?

Sí. /3/tv/airing_today lista las series con un episodio que se emite hoy y /3/tv/on_the_air cubre los próximos 7 días. Ambas están paginadas, aceptan language y se guardan 30 minutos en la caché perimetral.

### ¿Hay un nivel gratuito para la API de series de TV?

No hay nivel gratuito ni periodo de prueba. Pagas por adelantado 1, 3, 6, 12 o 24 meses y nada se renueva solo. Todos los planes devuelven todos los datos y se diferencian solo en las solicitudes por minuto.

## Páginas relacionadas

- [API de series de TV](https://amodb.dev/es/tv-series/): API de series de TV con las mismas rutas y JSON que TMDB v3. Obtén una serie con temporadas, cadenas y próximo episodio, más clasificaciones y plataformas.
- [API de temporadas y episodios de TV](https://amodb.dev/es/tv-seasons-episodes/): API de temporadas y episodios de TV con las mismas rutas y JSON que TMDB v3. Lee una temporada con todos sus episodios, o un episodio con fecha y duración.
- [API de guía de episodios](https://amodb.dev/es/episode-guide-api/): API de guía de episodios con los endpoints de temporada y episodio de TMDB v3: nombres, fechas, duraciones, imágenes y grupos de episodios, en 14 idiomas.
- [Productoras y cadenas de TV](https://amodb.dev/es/companies-networks/): Consulta productoras y cadenas de TV con rutas TMDB v3. Lee nombre, país y logo por id, y filtra discover por el id de una productora o de una cadena.
- [Endpoints de tendencias y listas](https://amodb.dev/es/trending-lists/): API de películas en tendencia con rutas TMDB v3: rankings diarios y semanales, más cartelera, populares, mejor valoradas y estrenos. Caché de 30 minutos.
- [Inicio rápido](https://amodb.dev/es/quickstart/): Haz tu primera llamada a amodb: consigue una clave, pide los detalles de una película en curl, JavaScript, Python, PHP o Go y carga el póster. En 2 minutos.

Actualizado: 2026-10-18. Source: https://amodb.dev/es/tv-show-api/
