# Movie and TV data, TMDB and OMDb compatible

> amodb is a paid movie and TV metadata API. It keeps the TMDB v3 and OMDb paths, parameters and JSON, so an existing client works after a base URL change. One key covers both styles, 14 languages and posters on img.amodb.dev. Every plan includes all data; plans differ only in requests per minute.

## Change the base URL, keep your code

amodb answers on the same paths as TMDB v3. A request for movie 550 returns the same JSON fields your client already parses: `id`, `title`, `genres`, `release_date`, `poster_path` and the rest.

Send your key as `api_key` in the query or as an `Authorization: Bearer` header. Both work on every endpoint.

```bash
curl "https://api.amodb.dev/3/movie/550?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const res = await fetch("https://api.amodb.dev/3/movie/550?language=en-US", {
  headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
});
const movie = await res.json();
console.log(movie.title, movie.release_date);
```

```python
import os
import requests

res = requests.get(
    "https://api.amodb.dev/3/movie/550",
    params={"language": "en-US"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
movie = res.json()
print(movie["title"], movie["release_date"])
```

```json
{
  "id": 550,
  "imdb_id": "tt0137523",
  "title": "Fight Club",
  "release_date": "1999-10-15",
  "runtime": 139,
  "genres": [{ "id": 18, "name": "Drama" }],
  "vote_average": 8.4,
  "poster_path": "/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg"
}
```

## One key for OMDb style lookups

The OMDb compatible endpoint lives at `https://api.amodb.dev/omdb/`. It takes `i`, `t`, `s`, `type`, `y`, `plot` and `page`, and returns `Title`, `Year`, `imdbRating`, `Ratings` and the other OMDb fields.

The `Poster` field points to `img.amodb.dev`, so posters load from the same service. Errors keep the OMDb shape: `{"Response":"False","Error":"..."}`.

```bash
curl "https://api.amodb.dev/omdb/?i=tt0137523&plot=short&apikey=$AMODB_KEY"
```

```js
const url = new URL("https://api.amodb.dev/omdb/");
url.searchParams.set("t", "Fight Club");
url.searchParams.set("y", "1999");
url.searchParams.set("apikey", process.env.AMODB_KEY);

const film = await (await fetch(url)).json();
console.log(film.Title, film.imdbRating);
```

```python
import os
import requests

film = requests.get(
    "https://api.amodb.dev/omdb/",
    params={"i": "tt0137523", "apikey": os.environ["AMODB_KEY"]},
    timeout=10,
).json()
print(film["Title"], film["imdbRating"])
```

```json
{
  "Title": "Fight Club",
  "Year": "1999",
  "Runtime": "139 min",
  "Director": "David Fincher",
  "imdbRating": "8.8",
  "imdbID": "tt0137523",
  "Poster": "https://img.amodb.dev/t/p/w300/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg",
  "Response": "True"
}
```

## Data that TMDB v3 does not return

Every key can call the amodb extensions on the same base URL. Add them with `append_to_response` or call them on their own.

- **Mood meters**: How tense, dark or witty a show feels, from 0 to 100, with one extra call.
- **Ratings in one call**: IMDb, TMDB and three more scores with vote counts, from one endpoint.
- **Rate limit you can see**: Every response tells you how many requests are left this minute.
- **One id, 14 languages**: The same movie in every language amodb serves. Unknown tags fall back to English.
- **Every TMDB image size**: From w92 thumbnails to original files on img.amodb.dev. No key needed.
- **Find by any external id**: Send an IMDb id or another external id and get the TMDB record back.
- **Cinema showtimes**: Showtimes by country for titles in cinemas, when they are known.
- **Soundtracks**: The songs used in a movie or a show, on the same base URL.

## Titles and overviews in 14 languages

Pass a TMDB style tag such as `ru-RU` or `pt-BR` in `language`. amodb serves 14 base languages and falls back to English for any other tag, so a request never fails because of a language.

| Code | Language   | Native name | Example tag |
| ---- | ---------- | ----------- | ----------- |
| `en` | English    | English     | `en-US`     |
| `ru` | Russian    | Русский     | `ru-RU`     |
| `uk` | Ukrainian  | Українська  | `uk-UA`     |
| `be` | Belarusian | Беларуская  | `be-BY`     |
| `zh` | Chinese    | 中文          | `zh-CN`     |
| `pt` | Portuguese | Português   | `pt-BR`     |
| `bg` | Bulgarian  | Български   | `bg-BG`     |
| `he` | Hebrew     | עברית       | `he-IL`     |
| `cs` | Czech      | Čeština     | `cs-CZ`     |
| `ro` | Romanian   | Română      | `ro-RO`     |
| `fr` | French     | Français    | `fr-FR`     |
| `pl` | Polish     | Polski      | `pl-PL`     |
| `it` | Italian    | Italiano    | `it-IT`     |
| `es` | Spanish    | Español     | `es-ES`     |

## Plans differ only in requests per minute

Every plan includes every endpoint, all 14 languages, images and the extensions. You pay once for 1, 3, 6, 12, or 24 months, and a longer period costs less per month. There is no free tier and no automatic renewal.

| Feature                       | Lite   | Pro    | Pro+    |
| ----------------------------- | ------ | ------ | ------- |
| Requests per minute           | 20     | 40     | 120     |
| Requests per day at full rate | 28,800 | 57,600 | 172,800 |
| Price for 1 month             | $5.19  | $6.19  | $7.19   |
| Price for 3 months            | $14.01 | $16.71 | $19.41  |
| Price for 6 months            | $24.91 | $29.71 | $34.51  |
| Price for 12 months           | $43.60 | $52    | $60.40  |
| Price for 24 months           | $74.74 | $89.14 | $103.54 |

## Built for production traffic

Popular lists stay cached for 30 minutes, details for 6 hours and `configuration` for 24 hours.
Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. A 429 adds `Retry-After`.
Errors return `success`, `status_code` and `status_message`, so existing error handling keeps working.
Posters and backdrops load from `img.amodb.dev/t/p/{size}/{file}` in every TMDB size, cached for 30 days.

## Questions and answers

### Do I need to change my TMDB client code?

No. Point the base URL to https://api.amodb.dev/3 and use your amodb key as api_key or as a Bearer token. Paths, query parameters and JSON fields stay the same as TMDB v3.

### Does the same key work for OMDb style calls?

Yes. Send it as apikey to https://api.amodb.dev/omdb/. The parameters i, t, s, type, y, plot and page work as in OMDb, and the response uses the OMDb field names.

### Is there a free tier or a trial?

No. amodb is prepaid only. You pick a plan and a period, pay once, and the key works until the period ends. There is no automatic renewal.

### What is the difference between plans?

Only the request rate: 20, 40 or 120 requests per minute. Every plan includes every endpoint, all 14 languages, images and the amodb extensions.

### Which languages are served?

English, Russian, Ukrainian, Belarusian, Chinese, Portuguese, Bulgarian, Hebrew, Czech, Romanian, French, Polish, Italian and Spanish. Pass a TMDB style tag such as ru-RU; any other language falls back to English.

## Related pages

- [Quickstart](https://amodb.dev/quickstart/): Make your first amodb call: get a key, request movie details in curl, JavaScript, Python, PHP or Go, then load the poster from img.amodb.dev. Under 2 minutes.
- [Pricing](https://amodb.dev/pricing/): amodb plans differ only in requests per minute: 20, 40 or 120. Every plan includes all TMDB v3 and OMDb compatible data. Prepaid, no renewal, no trial.
- [Authentication](https://amodb.dev/authentication/): How to send your amodb key: api_key in the query, an Authorization Bearer header, or apikey for OMDb calls. Key format, storage, rotation and the 401 errors.
- [Languages](https://amodb.dev/languages/): amodb serves titles, overviews and names in 14 languages. Pass a TMDB style tag such as ru-RU or pt-BR in language; any other tag falls back to English.

Updated: 2026-10-18. Source: https://amodb.dev/
