amodb vs TMDB

amodb keeps TMDB v3 paths, query parameters and JSON for most read endpoints, so a client needs a new base URL and key. Writes answer 405, and changes, aggregate credits and review lookups are not offered. Other differences are terms, 14 languages, five extensions and per-key limits.

The short comparison

amodb is an independent API that speaks the same protocol as TMDB v3. A client written for TMDB reads from amodb after you change the base URL and the key, as long as it does not call a path from the not offered table below. The choice is therefore about terms, extras and a few gaps. TMDB offers a free API for qualifying use under its own terms. amodb is a read only, paid API with 14 languages, five extra data blocks and a limit counted per key.

Endpoint parity

Each row shows a TMDB v3 read path and how it behaves on https://api.amodb.dev/3.

AreaTMDB v3 pathOn amodb
Movie details/movie/{movie_id}Same, with five more append_to_response values
TV details/tv/{series_id}Same, but no type field, and created_by is empty for most series
Seasons and episodes/tv/{series_id}/season/{season_number}Same shape. Season images, videos and translations are empty, and season and episode external_ids are null
People/person/{person_id}Same, with combined_credits, movie_credits, tv_credits, external_ids and images (profiles only)
Credits/movie/{movie_id}/creditsSame. On episodes, cast is empty
Search/search/multiSame, cached 10 minutes
Discover/discover/movieSame, cached 30 minutes
Trending/trending/{media_type}/{time_window}Same, cached 30 minutes
Lists/movie/popularSame, page from 1 to 500
Images/movie/{movie_id}/imagesSame shape, files load from img.amodb.dev
Videos/movie/{movie_id}/videosSame
Translations/movie/{movie_id}/translationsSame, 14 languages served
Keywords/movie/{movie_id}/keywordsSame
Reviews/movie/{movie_id}/reviewsAnswers 200, but only a few titles have reviews, so an empty list is normal
Collections/collection/{collection_id}Same, parts ordered by release date
Companies and networks/company/{company_id}Same keys. A company description is empty and parent_company is null
Genres/genre/movie/listSame
Configuration/configurationSame keys, image host is img.amodb.dev
Find by external id/find/{external_id}Same endpoint, plus kinopoisk_id. tv_episode_results and tv_season_results are always empty
Episode groups/tv/{series_id}/episode_groupsLists the groups of a show, without their contents

Not offered on amodb

These TMDB v3 calls have no equivalent. Unknown paths answer 404 with status_code 34, and write methods answer 405 with status_code 37.

TMDB v3 callamodb answer
/movie/changes, /tv/changes, /person/changes and changes under one id404, status_code 34
aggregate_credits under a series or a season404, status_code 34
/credit/{credit_id} and /review/{review_id}404, status_code 34
/tv/episode_group/{id}404, status_code 34
/person/{person_id}/translations, tagged_images and /person/latest404, status_code 34
images, translations and alternative_names for collections, companies and networks404, status_code 34
/configuration/timezones404, status_code 34
Everything under account, authentication, guest_session and list, and any /rating or /account_states path405, status_code 37

If you add aggregate_credits or changes to append_to_response, amodb ignores the name without an error, so the key is simply missing from the body.

Feature comparison

FeatureTMDBamodb
Pricing modelFree for qualifying use, under TMDB termsPrepaid, 1 to 24 months per purchase
Free tierYes, for qualifying useNone, and no trial
Authenticationv3 key in api_key, or v4 token as Bearerapi_key or Bearer with a 32 character hex key
Response formatJSONJSON, same fields on the paths it serves
LanguagesCheck their docs14 served, other tags fall back to en
MoviesYesYes
TVYesYes
PeopleYesYes
ImagesYesimg.amodb.dev, sizes w92 to original
RatingsTMDB user score, other sources: check their docsFive sources in one object where known
Write methodsAccount, list and rating methodsNone, they answer 405
Rate limitCheck their docs20, 40 or 120 per minute per key
Commercial useCheck their terms for commercial use and attributionPaid plans, see pricing
CompatibilityDefines TMDB v3Most TMDB v3 read paths and an OMDb route

What differs in detail

  • Terms. TMDB asks you to read its terms for commercial use and attribution. amodb is sold by prepaid period, has no automatic renewal, no free tier and no trial.
  • Languages. amodb serves en, ru, uk, be, zh, pt, bg, he, cs, ro, fr, pl, it and es. It accepts TMDB tags such as ru-RU and pt-BR. German, Japanese and Korean fall back to en, while original_title keeps the source title. For TMDB language coverage, check their docs. See languages.
  • Extensions. append_to_response also takes moods, soundtracks, ratings, wikidata and showtimes, and each has its own path under movies and series.
  • External ids. /3/find resolves imdb_id, tvdb_id, wikidata_id, kinopoisk_id, facebook_id, twitter_id and instagram_id. The sources freebase_mid, freebase_id, tvrage_id, tiktok_id and youtube_id are accepted but return empty arrays. A missing or unknown external_source answers 400 with status_code 22.
  • Empty by design. Season images, videos and translations and a company description are always empty. Reviews and created_by on a series are filled for only a few titles. Season and episode external_ids are all null.
  • Adult titles. include_adult is ignored. Adult titles and people are never served and answer 404.
  • Images. The CDN path is https://img.amodb.dev/t/p/{size}/{file}. No key is needed and files cache for 30 days.
  • Limits. The window is a sliding 60 seconds per key. Headers show the remaining count, and cache hits still count because the limit check runs first.
  • Independence. The catalog comes from public and open sources and our own enrichment. A shared shape does not guarantee identical values for every field of every title.

Where TMDB is a better fit

  • Free qualifying use. No payment is needed, and amodb cannot match that.
  • Writes. Rating a title, building a list and account sessions work on TMDB. On amodb they return 405.
  • Changes feeds. TMDB lists the ids that changed. amodb has no such feed, so you refresh on your own schedule.
  • Aggregate credits and credit lookups. Both answer 404 on amodb. Use /credits on the title.
  • Wider language needs. If your UI needs a language outside the 14, check TMDB first.
  • Existing approval. A team that has cleared TMDB with legal review should weigh the cost of a second review.

Migrate to amodb

The change is one line per request.

Shell
# 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"

Before cutover, compare the shape of a few responses side by side. This script prints top level keys that one side returns and the other does not.

JavaScript
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');
}

Optional fields can differ for a given title, so read a missing key as a lead to inspect, not as a verdict. Then work through this list:

  1. Pick a plan on pricing, then create a key in your account dashboard.
  2. Move the base URL and key into configuration.
  3. Read images.secure_base_url from /3/configuration.
  4. Search your code for write calls and for the paths in the not offered table. Keep the writes on TMDB and replace the rest.
  5. Add a 429 handler that waits Retry-After seconds. See rate limits and errors.

Pricing

amodb is prepaid. Pick 1, 3, 6, 12 or 24 months, which take 0, 10, 20, 30 or 40 percent off, and one of three plans at 20, 40 or 120 requests per minute. Every plan returns all data, and none renews on its own. See pricing for amounts.

Questions and answers

Are all TMDB v3 read endpoints available on amodb?

No. Most read paths keep the same path, query parameters and JSON shape, and the parity table on this page groups them by area. Writes answer 405 with status_code 37. Changes feeds, aggregate credits, credit and review lookups, episode group contents and person translations answer 404 with status_code 34.

What changes in my code when I move from TMDB?

Three things: the base URL becomes https://api.amodb.dev/3, the key becomes your amodb key, and image URLs use img.amodb.dev. Read the image base from the configuration endpoint. The paths stay the same, except for the calls listed as not offered.

Will movie and TV ids stay the same?

Ids follow the TMDB numbering. Fight Club is 550 and Breaking Bad is 1396 on both. Values of individual fields can still differ for some titles, so compare a sample from your own catalog before cutover.

Can I use both services together?

Yes. Because the protocol is the same, you can keep TMDB for account and list features, changes feeds and aggregate credits, and use amodb for catalog reads. Keep two base URLs and two keys in your configuration.

Which service is cheaper?

TMDB offers a free API for qualifying use under its own terms, so it costs nothing when you qualify. amodb is paid from the first request, with prepaid periods of 1 to 24 months and a discount up to 40 percent.