# Alternativa a la API de OMDb

> OMDb es una API pequeña de un registro por llamada, con clave gratuita y un tope diario de 1,000 (consulta su sitio). amodb responde i, t, s, type, y, plot y page en /omdb/ con los mismos campos del cuerpo, te limita por minuto y añade endpoints TMDB v3 con una sola clave. Solo JSON, sin XML ni episodios.

## Elige según la forma de tus llamadas

Elige OMDb cuando quieras un registro pequeño por título y su clave gratuita cubra tu volumen. Elige amodb cuando te quedes corto, o cuando quieras el mismo estilo de solicitud de OMDb junto a créditos, imágenes y traducciones con una sola clave. OMDb devuelve JSON o XML, usa un parámetro `apikey` y ofrece una clave gratuita con un tope diario de 1,000 solicitudes (consulta su sitio) más un nivel de colaborador de pago. amodb es solo de pago y responde a los principales parámetros de OMDb además de TMDB v3.

## Qué se mantiene igual

El endpoint de OMDb está en `https://api.amodb.dev/omdb/`, y la barra final es opcional. Tu código de análisis actual no debería necesitar cambios para estos elementos.

| Elemento de OMDb  | En amodb                                                                                                        |
| ----------------- | --------------------------------------------------------------------------------------------------------------- |
| `apikey`          | El mismo parámetro, con tu clave de amodb                                                                       |
| `i` y `t`         | Búsqueda por id de IMDb o por título                                                                            |
| `s` y `page`      | Búsqueda con 10 resultados por página y un recuento `totalResults`, con `page` hasta 100                        |
| `type` y `y`      | Filtro por `movie` o `series` y por año                                                                         |
| `plot`            | `short` o `full`                                                                                                |
| `r`               | Solo se acepta `json`                                                                                           |
| Campos del cuerpo | Con los nombres de OMDb, de `Title` a `Response`                                                                |
| `Ratings`         | Un array de pares `Source` y `Value` para Internet Movie Database, Rotten Tomatoes y Metacritic, cuando existen |
| Errores           | `{"Response":"False","Error":"..."}` con el texto de OMDb, en una respuesta HTTP 200                            |

## Lo que no se traslada

- **XML.** Una solicitud con `r=xml` devuelve 400 con `{"Response":"False","Error":"Only r=json is supported."}`.
- **Temporadas y episodios.** `Season` y `Episode` se ignoran, y `type=episode` no encuentra nada. Una solicitud con `i=tt0903747&Season=1` devuelve el registro de la serie, no una temporada. Usa `/3/tv/{id}/season/{n}` para los episodios.
- **Otros parámetros.** `callback` se ignora.
- **Campos sin datos.** `DVD`, `Production` y `Website` son siempre `"N/A"`. Los registros de series tienen `totalSeasons` y omiten `DVD`, `BoxOffice`, `Production` y `Website`.
- **Pósteres.** El campo `Poster` apunta a `https://img.amodb.dev/t/p/w300/...` en lugar de a otro host. Cambia `w300` por `w780` para obtener una imagen mayor de la misma ruta, y las imágenes no necesitan clave.

La lista completa de parámetros y errores está en la página del [endpoint de OMDb](https://amodb.dev/es/omdb-endpoint/).

## Ejemplo de respuesta

Una solicitud con `t=Fight Club` devuelve un objeto plano. La respuesta de abajo es real, con solo el texto de `Plot` abreviado.

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

Los valores son cadenas, como en OMDb, así que convierte tú mismo `imdbRating`, `imdbVotes` y `Runtime`. Cada llamada cuenta como una solicitud para tu límite por minuto, sin importar cuántos campos leas.

## Comparación de funciones

| Función               | OMDb                                                                  | amodb                                                                            |
| --------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Modelo de precios     | Clave gratuita más un nivel de colaborador de pago, consulta su sitio | Periodos prepago, de 1 a 24 meses                                                |
| Nivel gratuito        | Clave gratuita con un tope diario de 1,000, consulta su sitio         | Ninguno, y sin periodo de prueba                                                 |
| Autenticación         | Parámetro `apikey`                                                    | `apikey` en `/omdb/`, `api_key` o Bearer en `/3`                                 |
| Formato de respuesta  | JSON o XML                                                            | JSON                                                                             |
| Idiomas               | Consulta su documentación                                             | 14 idiomas de interfaz en las rutas `/3`                                         |
| Películas             | Sí                                                                    | Sí                                                                               |
| TV                    | Series y episodios, consulta su documentación para ver los campos     | Registros de series en `/omdb/`, temporadas y episodios en las rutas `/3`        |
| Personas              | Nombres como texto en cada registro                                   | Perfiles, filmografía e imágenes en las rutas `/3`                               |
| Imágenes              | Enlace al póster en cada registro                                     | Enlace al póster más listas de imágenes, `img.amodb.dev`                         |
| Puntuaciones          | Campos `Ratings`, `Metascore` e `imdbRating`                          | Los mismos campos, más un objeto `ratings` en las rutas `/3`                     |
| Límite de solicitudes | Tope diario en la clave gratuita, consulta su sitio                   | 20, 40 o 120 por minuto por clave                                                |
| Uso comercial         | Consulta su sitio                                                     | Se vende como API de pago, consulta los [precios](https://amodb.dev/es/pricing/) |
| Compatibilidad        | Define el protocolo de OMDb                                           | Los parámetros de OMDb de arriba y lecturas de TMDB v3                           |

## En qué se diferencia amodb

- **Límites por minuto.** Los planes permiten 20, 40 o 120 solicitudes por minuto en una ventana deslizante de 60 segundos. Cada respuesta con clave lleva `X-RateLimit-Remaining`, así que un trabajo por lotes puede frenarse antes de ver un 429.
- **Un paso más allá de los registros sueltos.** Un registro de OMDb trae el reparto como texto. Con las rutas `/3` puedes pedir el mismo título con créditos, vídeos y traducciones en una sola llamada, y el `imdbID` encuentra el registro mediante `/3/find`.
- **Imágenes más grandes.** Los registros al estilo OMDb dan un solo enlace de póster. El host de imágenes sirve diez tokens de tamaño, de `w92` a `original`.
- **Más fuentes de puntuaciones.** La extensión `/3/movie/{id}/ratings` añade valores de Kinopoisk, Metacritic, Rotten Tomatoes y TMDB cuando se conocen.

## Dónde encaja mejor OMDb

- **Proyectos pequeños o gratuitos.** Una clave gratuita con un tope diario de 1,000 basta para un prototipo o un sitio de aficionado, y amodb no tiene nivel gratuito.
- **Consumidores de XML.** Si un sistema heredado procesa XML, OMDb lo ofrece y amodb no.
- **Consultas de temporadas y episodios.** La ruta `/omdb/` de amodb no tiene modo de temporada ni de episodio, así que un cliente construido sobre ella necesita las rutas `/3`.
- **Simplicidad.** Un endpoint y un puñado de parámetros se aprenden fácilmente. Si eso es todo lo que necesitas, ganas poco con el cambio.

## Migrar a amodb

Solo cambian la URL base y la clave. Deja el resto de la solicitud como está, después de buscar en tu código `r=xml`, `Season`, `Episode` y `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);
```

Sigue comprobando el campo `Response`, como hacías con OMDb. Cuando el valor es la cadena `"False"`, el campo `Error` lleva el mensaje. Para los episodios, asigna el `imdbID` una sola vez con `/3/find` y lee las temporadas desde el lado `/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"
```

Para el lado al estilo TMDB, consulta [autenticación](https://amodb.dev/es/authentication/) y la [guía de inicio rápido](https://amodb.dev/es/quickstart/).

## Precios

amodb es de pago y solo se renueva cuando compras otro periodo. Los tres planes se diferencian únicamente en el límite de solicitudes, de 20, 40 o 120 por minuto, y cada uno devuelve todos los datos. Los periodos son de 1, 3, 6, 12 o 24 meses, y los más largos tienen un descuento del 10 al 40 por ciento. Consulta [precios](https://amodb.dev/es/pricing/) para ver los importes actuales.

## Preguntas y respuestas

### ¿Tengo que reescribir mi cliente de OMDb?

No, si usa i, t, s, type, y, plot y page. Cambia la URL base a https://api.amodb.dev/omdb/ y pon tu clave de amodb en el parámetro apikey. El cuerpo conserva los nombres de campo de OMDb, como imdbRating. Los parámetros Season y Episode y r=xml no se admiten.

### ¿El endpoint OMDb de amodb devuelve XML?

No. Devuelve solo JSON. Una solicitud con r=xml recibe una respuesta 400 con el error Only r=json is supported, así que quita el parámetro r o usa r=json antes de cambiar.

### ¿Puedo consultar temporadas y episodios en el endpoint OMDb?

No. Los parámetros Season y Episode se ignoran, así que una solicitud con i y Season=1 devuelve el registro de la serie, y type=episode no encuentra nada. Lee los episodios desde /3/tv/{id}/season/{n} con la misma clave.

### ¿En qué se diferencia el límite del de la clave gratuita de OMDb?

OMDb documenta un tope diario de 1,000 para su clave gratuita, así que consulta su sitio para ver los términos vigentes. amodb limita las solicitudes por minuto y por clave, con 20, 40 o 120 según el plan.

### ¿De dónde se cargan las imágenes de los pósteres?

El campo Poster apunta a img.amodb.dev en el tamaño w300. Cambia w300 por otro tamaño, como w780, en la misma URL para obtener una imagen mayor. Las imágenes no necesitan clave.

### ¿Puedo usar la misma clave para llamadas al estilo TMDB?

Sí. Una sola clave sirve para /omdb/ y para las rutas /3. Así puedes obtener créditos, tráileres o traducciones de un imdbID sin una segunda suscripción.

## Páginas relacionadas

- [Endpoint compatible con OMDb](https://amodb.dev/es/omdb-endpoint/): Endpoint compatible con la API de OMDb en api.amodb.dev/omdb/. Busca con i o t, explora con s, lee el array Ratings y conserva tu cliente cambiando la URL base.
- [Alternativa a la API de IMDb](https://amodb.dev/es/imdb-api-alternative/): IMDb no ofrece una API REST gratuita general. Busca por id de IMDb, lee su puntuación si se conoce y obtén reparto, imágenes y tráileres en una API de pago.
- [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.
- [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.
- [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/omdb-api-alternative/
