TMDB API alternative
Look for a TMDB API alternative when you want a paid agreement, a request limit you can plan around, or more data in each reply. amodb speaks the TMDB v3 protocol for reads, so you change the base URL and the key. Writes and a few paths are not offered. Stay on TMDB if its free terms fit.
Which API to pick
TMDB offers a free API for qualifying use under its own terms, with API v3 keys and v4 tokens. Read those terms for commercial use and attribution before you ship. Pick an alternative when you want a paid agreement, a limit you can plan around, or more data in each reply. amodb is an independent API that speaks the TMDB v3 protocol for reads, so a switch means a new base URL and a new key. It is read only, and a few TMDB paths are not offered, as listed below.
Stay on TMDB if the free terms fit your project and nothing in the next section applies to you.
Signals that you need an alternative
Five checks help you decide. Run them against your own traffic and your own contract, not against a feature list.
| Signal | What to test | How amodb answers |
|---|---|---|
| Commercial terms | Read the terms of the API you use today for commercial use and attribution | Paid plans, prepaid, no automatic renewal |
| Peak traffic | Count requests in your busiest minute | A fixed limit of 20, 40 or 120 requests per minute per key |
| Data per screen | List the extra calls behind one title page | append_to_response also takes ratings, moods, soundtracks, wikidata and showtimes |
| Interface language | Check each language you ship | 14 languages, anything else falls back to en |
| Exit cost | Count the lines of code that name a vendor | Same paths and JSON on the served endpoints, so leaving is also a base URL change |
Cache hits count too. The key check and the rate limit run before the edge cache, so a repeated request still uses one of your requests per minute. Plan for total requests, not for cache misses.
Feature comparison
| Feature | TMDB | amodb |
|---|---|---|
| Pricing model | Free API for qualifying use under its own terms | Prepaid periods of 1, 3, 6, 12 or 24 months |
| Free tier | Yes, for qualifying use | None, and no trial |
| Authentication | v3 key in api_key, or a v4 token as Bearer | api_key or Bearer, key of 32 hex characters |
| Response format | JSON | JSON in TMDB v3 shape |
| Languages | Check their docs | 14 interface languages |
| Movies | Yes | Yes |
| TV | Yes | Yes, with seasons and episodes |
| People | Yes | Yes |
| Images | Yes, from its own image host | img.amodb.dev, same size tokens, no key |
| Ratings | TMDB user score, check their docs for other sources | TMDB score plus IMDb, Kinopoisk, Metacritic and Rotten Tomatoes where known |
| Write methods | Account, list and rating methods | Not offered, they answer 405 |
| Rate limit | Check their docs | 20, 40 or 120 per minute per key |
| Commercial use | Check their terms for commercial use and attribution | Sold as a paid API, see pricing |
| Compatibility | Defines the v3 protocol | Most v3 read paths, plus OMDb |
Where amodb differs
- Limits you can read. Every keyed reply carries
X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Resetin seconds. A 429 addsRetry-After. The numbers are explained on rate limits. - Extra blocks in one call. Ratings from five sources, mood meters, soundtracks, Wikidata facts and cinema showtimes arrive through
append_to_response, so one title page can use a single request. - More external id sources.
/3/findresolvesimdb_id,tvdb_id,wikidata_idandkinopoisk_id, and alsofacebook_id,twitter_idandinstagram_id. See find by external id. - OMDb on the same key.
https://api.amodb.dev/omdb/answers OMDb style calls with anapikeyparameter, which helps when two systems of yours use different protocols. - Known cache times. Details and credits stay 6 hours at the edge, trending and discover 30 minutes, search 10 minutes, configuration 24 hours and images 30 days.
Where TMDB is a better fit
- Free projects. If your use qualifies under the free terms, TMDB costs nothing and amodb cannot match that.
- User write methods. TMDB offers account, session, rating and list write methods. amodb answers them with 405 and status_code 37, so an app that lets people sign in and rate titles should keep TMDB for that part.
- Changes feeds. TMDB lists the ids that changed. amodb has no such feed, so you refresh on your own schedule.
- Languages beyond 14. amodb does not serve German, Japanese or Korean interface text and falls back to English. Original titles still arrive in
original_titleandoriginal_name. For other languages on TMDB, check their docs. - Terms you have already accepted. If legal review is done for TMDB, a switch costs you another review.
What amodb does not offer
Check your code against this list before cutover. The full table is on amodb vs TMDB.
| TMDB call | amodb answer |
|---|---|
| Account, session, rating and list writes | 405, status_code 37 |
| Changes, aggregate credits, credit and review lookups, episode group contents | 404, status_code 34 |
| Person translations, collection, company and network images and translations | 404, status_code 34 |
| Reviews list on a movie or series | 200, empty for most titles |
| Season images, videos and translations | 200, empty |
| Season and episode external ids | 200, all null |
Two behaviors are quiet. An append_to_response name that amodb does not know, such as aggregate_credits, is ignored without an error. The include_adult parameter is ignored too, because adult titles and people are never served.
Migrate to amodb
- Choose a plan on pricing and create a key in your account dashboard.
- Replace the base URL and the key in one place, as below.
- Read
images.secure_base_urlfrom/3/configurationso image links useimg.amodb.dev. - Remove calls to write methods and to the paths in the table above.
- Handle 429 by waiting the
Retry-Afterseconds.
const config = {
// before: baseUrl held your current TMDB v3 base URL
baseUrl: 'https://api.amodb.dev/3',
apiKey: process.env.AMODB_KEY,
};
const res = await fetch(`${config.baseUrl}/movie/550?language=en-US`, {
headers: { Authorization: `Bearer ${config.apiKey}` },
});
if (!res.ok) throw new Error(`request failed with status ${res.status}`);
const movie = await res.json();
console.log(movie.title, movie.release_date);Run your existing tests against both base URLs before cutover. A shared shape does not guarantee identical values, so compare a sample of your own titles. The full walkthrough is in the quickstart, and a head to head table is on amodb vs TMDB.
Error handling carries over
Failed calls return the TMDB body {"success": false, "status_code": N, "status_message": "..."}, so code that branches on status_code needs no rewrite.
| HTTP | status_code | Typical cause |
|---|---|---|
| 401 | 7 | Key missing or mistyped |
| 401 | 10 | Key suspended |
| 402 | 36 | Prepaid period ended |
| 404 | 34 | Id not found, or a path amodb does not offer |
| 405 | 37 | A write method your code still calls |
| 429 | 25 | More requests than the plan allows in 60 seconds |
Treat 402 as a signal to renew by hand, because nothing renews automatically. The complete list is on errors.
Pricing
amodb is prepaid. Choose a period of 1, 3, 6, 12 or 24 months, which takes 0, 10, 20, 30 or 40 percent off, and one of three plans at 20, 40 or 120 requests per minute. Every plan gets all data and nothing renews automatically. There is no free tier and no trial. Current amounts are on pricing.
Questions and answers
Is amodb a drop-in replacement for the TMDB API?
For most read endpoints, yes. Paths, query parameters and JSON fields follow TMDB v3, and both api_key and Bearer authentication work. Write methods return 405 with status_code 37. Changes feeds, aggregate credits, credit and review lookups and a few other paths return 404 with status_code 34.
Will my TMDB image URLs keep working?
The path shape and size tokens stay the same, but the host is img.amodb.dev and no key is needed. Read images.secure_base_url from the configuration endpoint instead of hard coding a host, and your image code needs no other change.
Does amodb accept a Bearer header like TMDB?
Yes. Send Authorization: Bearer with your amodb key, or pass the api_key query parameter. The key is 32 lowercase hex characters, the same shape as a TMDB v3 key.
How does the cost compare with the free TMDB API?
TMDB offers a free API for qualifying use under its own terms. amodb has no free tier and no trial. You prepay 1 to 24 months on one of three plans, and the pricing page lists current amounts.
Which limit should I plan for?
Match your busiest minute. The plans allow 20, 40 or 120 requests per minute per key in a sliding 60 second window, and every plan returns all data. Response headers show how many requests remain.