# amodb vs TMDB

> amodb mantiene las rutas, los parámetros y el JSON de TMDB v3 en la mayoría de las lecturas, así que un cliente solo necesita otra URL base y otra clave. Las escrituras responden 405 y no hay cambios, créditos agregados ni consulta de reseñas. Difieren también los términos, los 14 idiomas, cinco extensiones y los límites por clave.

## La comparación en breve

amodb es una API independiente que habla el mismo protocolo que TMDB v3. Un cliente escrito para TMDB lee de amodb después de cambiar la URL base y la clave, siempre que no llame a una ruta de la tabla de no ofrecidas que aparece más abajo. La decisión depende entonces de los términos, los extras y unas pocas carencias. TMDB ofrece una API gratuita para usos que cumplan sus condiciones. amodb es una API de pago, de solo lectura, con 14 idiomas, cinco bloques de datos adicionales y un límite contado por clave.

## Paridad de endpoints

Cada fila muestra una ruta de lectura de TMDB v3 y cómo se comporta en `https://api.amodb.dev/3`.

| Área                        | Ruta de TMDB v3                          | En amodb                                                                                                                                    |
| --------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Detalles de película        | `/movie/{movie_id}`                      | Igual, con cinco valores más en `append_to_response`                                                                                        |
| Detalles de serie           | `/tv/{series_id}`                        | Igual, pero sin el campo `type`, y `created_by` está vacío en la mayoría de las series                                                      |
| Temporadas y episodios      | `/tv/{series_id}/season/{season_number}` | Misma forma. Las imágenes, los vídeos y las traducciones de temporada están vacíos, y los `external_ids` de temporadas y episodios son null |
| Personas                    | `/person/{person_id}`                    | Igual, con `combined_credits`, `movie_credits`, `tv_credits`, `external_ids` y `images` (solo perfiles)                                     |
| Créditos                    | `/movie/{movie_id}/credits`              | Igual. En los episodios, `cast` está vacío                                                                                                  |
| Búsqueda                    | `/search/multi`                          | Igual, con caché de 10 minutos                                                                                                              |
| Descubrir                   | `/discover/movie`                        | Igual, con caché de 30 minutos                                                                                                              |
| Tendencias                  | `/trending/{media_type}/{time_window}`   | Igual, con caché de 30 minutos                                                                                                              |
| Listas                      | `/movie/popular`                         | Igual, con `page` de 1 a 500                                                                                                                |
| Imágenes                    | `/movie/{movie_id}/images`               | Misma forma, los archivos se cargan desde `img.amodb.dev`                                                                                   |
| Vídeos                      | `/movie/{movie_id}/videos`               | Igual                                                                                                                                       |
| Traducciones                | `/movie/{movie_id}/translations`         | Igual, con 14 idiomas servidos                                                                                                              |
| Palabras clave              | `/movie/{movie_id}/keywords`             | Igual                                                                                                                                       |
| Reseñas                     | `/movie/{movie_id}/reviews`              | Responde 200, pero solo unos pocos títulos tienen reseñas, así que una lista vacía es lo normal                                             |
| Colecciones                 | `/collection/{collection_id}`            | Igual, con `parts` ordenado por fecha de estreno                                                                                            |
| Productoras y cadenas de TV | `/company/{company_id}`                  | Mismas claves. El `description` de una productora está vacío y `parent_company` es null                                                     |
| Géneros                     | `/genre/movie/list`                      | Igual                                                                                                                                       |
| Configuración               | `/configuration`                         | Mismas claves, el host de imágenes es `img.amodb.dev`                                                                                       |
| Buscar por ID externo       | `/find/{external_id}`                    | Mismo endpoint, más `kinopoisk_id`. `tv_episode_results` y `tv_season_results` siempre están vacíos                                         |
| Grupos de episodios         | `/tv/{series_id}/episode_groups`         | Lista los grupos de una serie, sin su contenido                                                                                             |

## Lo que amodb no ofrece

Estas llamadas de TMDB v3 no tienen equivalente. Las rutas desconocidas responden 404 con `status_code` 34, y los métodos de escritura responden 405 con `status_code` 37.

| Llamada de TMDB v3                                                                                                          | Respuesta de amodb    |
| --------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `/movie/changes`, `/tv/changes`, `/person/changes` y `changes` bajo un id                                                   | 404, `status_code` 34 |
| `aggregate_credits` bajo una serie o una temporada                                                                          | 404, `status_code` 34 |
| `/credit/{credit_id}` y `/review/{review_id}`                                                                               | 404, `status_code` 34 |
| `/tv/episode_group/{id}`                                                                                                    | 404, `status_code` 34 |
| `/person/{person_id}/translations`, `tagged_images` y `/person/latest`                                                      | 404, `status_code` 34 |
| `images`, `translations` y `alternative_names` de colecciones, productoras y cadenas                                        | 404, `status_code` 34 |
| `/configuration/timezones`                                                                                                  | 404, `status_code` 34 |
| Todo lo que cuelga de `account`, `authentication`, `guest_session` y `list`, y cualquier ruta `/rating` o `/account_states` | 405, `status_code` 37 |

Si añades `aggregate_credits` o `changes` a `append_to_response`, amodb ignora ese nombre sin devolver error, así que la clave simplemente no aparece en el cuerpo.

## Comparación de funciones

| Función               | TMDB                                                                     | amodb                                                                 |
| --------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| Modelo de precios     | Gratis para usos que cumplan sus condiciones, según los términos de TMDB | Prepago, de 1 a 24 meses por compra                                   |
| Nivel gratuito        | Sí, para usos que cumplan sus condiciones                                | Ninguno, y sin periodo de prueba                                      |
| Autenticación         | Clave v3 en `api_key`, o token v4 como Bearer                            | `api_key` o Bearer con una clave hexadecimal de 32 caracteres         |
| Formato de respuesta  | JSON                                                                     | JSON, con los mismos campos en las rutas que sirve                    |
| Idiomas               | Consulta su documentación                                                | 14 servidos, las demás etiquetas recurren a `en`                      |
| Películas             | Sí                                                                       | Sí                                                                    |
| TV                    | Sí                                                                       | Sí                                                                    |
| Personas              | Sí                                                                       | Sí                                                                    |
| Imágenes              | Sí                                                                       | `img.amodb.dev`, tamaños de `w92` a `original`                        |
| Puntuaciones          | Puntuación de usuarios de TMDB, otras fuentes: consulta su documentación | Cinco fuentes en un solo objeto cuando se conocen                     |
| Métodos de escritura  | Métodos de cuenta, listas y puntuación                                   | Ninguno, responden 405                                                |
| Límite de solicitudes | Consulta su documentación                                                | 20, 40 o 120 por minuto por clave                                     |
| Uso comercial         | Consulta sus términos sobre uso comercial y atribución                   | Planes de pago, consulta los [precios](https://amodb.dev/es/pricing/) |
| Compatibilidad        | Define TMDB v3                                                           | La mayoría de las rutas de lectura de TMDB v3 y una ruta OMDb         |

## Diferencias en detalle

- **Términos.** TMDB te pide que leas sus términos sobre uso comercial y atribución. amodb se vende por periodo prepago, sin renovación automática, sin nivel gratuito y sin periodo de prueba.
- **Idiomas.** amodb sirve en, ru, uk, be, zh, pt, bg, he, cs, ro, fr, pl, it y es. Acepta etiquetas de TMDB como `ru-RU` y `pt-BR`. El alemán, el japonés y el coreano recurren a `en`, mientras que `original_title` conserva el título de origen. Para la cobertura de idiomas de TMDB, consulta su documentación. Consulta [idiomas](https://amodb.dev/es/languages/).
- **Extensiones.** `append_to_response` también admite `moods`, `soundtracks`, `ratings`, `wikidata` y `showtimes`, y cada una tiene su propia ruta bajo películas y series.
- **IDs externos.** `/3/find` resuelve `imdb_id`, `tvdb_id`, `wikidata_id`, `kinopoisk_id`, `facebook_id`, `twitter_id` e `instagram_id`. Las fuentes `freebase_mid`, `freebase_id`, `tvrage_id`, `tiktok_id` y `youtube_id` se aceptan, pero devuelven arrays vacíos. Un `external_source` ausente o desconocido responde 400 con `status_code` 22.
- **Vacíos por diseño.** Las imágenes, los vídeos y las traducciones de temporada y el `description` de una productora siempre están vacíos. Las reseñas y el `created_by` de una serie se rellenan solo en unos pocos títulos. Los `external_ids` de temporadas y episodios son todos null.
- **Títulos para adultos.** `include_adult` se ignora. Los títulos y las personas para adultos nunca se sirven y responden 404.
- **Imágenes.** La ruta de la CDN es `https://img.amodb.dev/t/p/{size}/{file}`. No hace falta clave y los archivos se guardan en caché 30 días.
- **Límites.** La ventana es de 60 segundos deslizantes por clave. Las cabeceras muestran el recuento restante, y los aciertos de caché también cuentan porque la comprobación del límite se ejecuta primero.
- **Independencia.** El catálogo procede de fuentes públicas y abiertas y de nuestro propio enriquecimiento. Compartir la misma forma no garantiza valores idénticos en todos los campos de todos los títulos.

## Dónde encaja mejor TMDB

- **Uso gratuito que cumple las condiciones.** No hace falta pagar, y amodb no puede igualarlo.
- **Escrituras.** Puntuar un título, crear una lista y las sesiones de cuenta funcionan en TMDB. En amodb devuelven 405.
- **Feeds de cambios.** TMDB lista los ids que cambiaron. amodb no tiene un feed así, así que actualizas con tu propio calendario.
- **Créditos agregados y consulta de créditos.** Ambos responden 404 en amodb. Usa `/credits` en el título.
- **Más idiomas.** Si tu interfaz necesita un idioma fuera de los 14, consulta primero TMDB.
- **Aprobación ya obtenida.** Un equipo que ya superó la revisión legal de TMDB debe sopesar lo que cuesta una segunda revisión.

## Migrar a amodb

El cambio es de una línea por solicitud.

```bash
# before: TMDB_BASE is your current TMDB v3 base URL
curl -s "$TMDB_BASE/movie/550?api_key=$TMDB_KEY"

# after
curl -s "https://api.amodb.dev/3/movie/550?api_key=$AMODB_KEY"
```

Antes del cambio definitivo, compara la forma de algunas respuestas lado a lado. Este script imprime las claves de primer nivel que un lado devuelve y el otro no.

```js
async function topLevelKeys(base, key, path) {
  const res = await fetch(`${base}${path}?api_key=${key}`);
  if (!res.ok) throw new Error(`${path} returned ${res.status}`);
  return Object.keys(await res.json()).sort();
}

for (const path of ['/movie/550', '/tv/1396', '/person/31']) {
  const current = await topLevelKeys(process.env.TMDB_BASE, process.env.TMDB_KEY, path);
  const next = await topLevelKeys('https://api.amodb.dev/3', process.env.AMODB_KEY, path);
  const missing = current.filter((k) => !next.includes(k));
  console.log(path, missing.length ? `missing: ${missing.join(', ')}` : 'same keys');
}
```

Los campos opcionales pueden diferir en un título concreto, así que interpreta una clave ausente como una pista que investigar, no como un veredicto. Después sigue esta lista:

1. Elige un plan en [precios](https://amodb.dev/es/pricing/) y crea una clave en el panel de tu cuenta.
2. Mueve la URL base y la clave a la configuración.
3. Lee `images.secure_base_url` desde `/3/configuration`.
4. Busca en tu código las llamadas de escritura y las rutas de la tabla de no ofrecidas. Deja las escrituras en TMDB y sustituye el resto.
5. Añade un manejador de 429 que espere los segundos de `Retry-After`. Consulta [límites de solicitudes](https://amodb.dev/es/rate-limits/) y [errores](https://amodb.dev/es/errors/).

## Precios

amodb es prepago. Elige 1, 3, 6, 12 o 24 meses, que aplican un descuento del 0, 10, 20, 30 o 40 por ciento, y uno de tres planes de 20, 40 o 120 solicitudes por minuto. Todos los planes devuelven todos los datos y ninguno se renueva solo. Consulta [precios](https://amodb.dev/es/pricing/) para ver los importes.

## Preguntas y respuestas

### ¿Están disponibles en amodb todos los endpoints de lectura de TMDB v3?

No. La mayoría de las rutas de lectura conservan la misma ruta, los mismos parámetros de consulta y la misma forma del JSON, y la tabla de paridad de esta página las agrupa por área. Las escrituras responden 405 con status_code 37. Los feeds de cambios, los créditos agregados, la consulta de créditos y reseñas por id, el contenido de los grupos de episodios y las traducciones de personas responden 404 con status_code 34.

### ¿Qué cambia en mi código al pasar de TMDB?

Tres cosas: la URL base pasa a ser https://api.amodb.dev/3, la clave pasa a ser tu clave de amodb y las URL de imágenes usan img.amodb.dev. Lee la base de imágenes desde el endpoint de configuración. Las rutas siguen igual, salvo las llamadas que se indican como no ofrecidas.

### ¿Los ids de películas y series seguirán siendo los mismos?

Los ids siguen la numeración de TMDB. Fight Club es 550 y Breaking Bad es 1396 en ambos. Los valores de algunos campos pueden diferir en ciertos títulos, así que compara una muestra de tu propio catálogo antes del cambio definitivo.

### ¿Puedo usar los dos servicios a la vez?

Sí. Como el protocolo es el mismo, puedes conservar TMDB para las funciones de cuenta y listas, los feeds de cambios y los créditos agregados, y usar amodb para leer el catálogo. Guarda dos URL base y dos claves en tu configuración.

### ¿Qué servicio es más barato?

TMDB ofrece una API gratuita para usos que cumplan sus condiciones, así que no cuesta nada si las cumples. amodb es de pago desde la primera solicitud, con periodos prepago de 1 a 24 meses y un descuento de hasta el 40 por ciento.

## Páginas relacionadas

- [Alternativa a la API de TMDB](https://amodb.dev/es/tmdb-api-alternative/): ¿Buscas una alternativa a TMDB? Revisa términos, límites, idiomas y puntuaciones, y pasa a una API de pago con la mayoría de lecturas y el JSON de TMDB v3.
- [API de base de datos de películas para tu propio catálogo](https://amodb.dev/es/movie-database-api/): API de base de datos de películas para tu copia local: películas, personas, productoras, colecciones y palabras clave con ids enlazados y ventanas de fechas.
- [Buscar por id externo](https://amodb.dev/es/find-by-external-id/): Busca una película, serie o persona por id de IMDb, TVDB, Wikidata o Kinopoisk con el endpoint find de TMDB, y lee los ids externos y los datos de Wikidata.
- [Autenticación](https://amodb.dev/es/authentication/): Cómo enviar tu clave de amodb: api_key en la consulta, un encabezado Bearer o apikey en llamadas OMDb. Formato, almacenamiento, rotación y errores 401.
- [Límites de solicitudes](https://amodb.dev/es/rate-limits/): amodb limita cada clave por solicitudes por minuto en una ventana deslizante de 60 segundos: 20, 40 o 120 según el plan. Lee los encabezados y gestiona el 429.
- [Precios](https://amodb.dev/es/pricing/): Los planes de amodb se diferencian solo en solicitudes por minuto: 20, 40 o 120. Todos incluyen todos los datos de TMDB v3 y OMDb. Prepago y sin renovación.

Actualizado: 2026-10-18. Source: https://amodb.dev/es/amodb-vs-tmdb/
