# amodb 与 TMDB 对比

> amodb 对大多数读取接口保留了 TMDB v3 的路径、查询参数和 JSON，客户端只需换成新的基础 URL 和密钥。写入请求返回 405，变更动态、聚合演职员和评论查询不提供。其他差异在于条款、14 种语言、五项扩展和按密钥计算的限制。

## 简要对比

amodb 是一个独立的 API，使用与 TMDB v3 相同的协议。只要不调用下面“不提供”表格里的路径，为 TMDB 编写的客户端在更换基础 URL 和密钥后就能从 amodb 读取数据。因此选择取决于条款、附加功能和少数缺口。TMDB 对符合条件的使用按其自身条款提供免费 API。amodb 是只读的付费 API，提供 14 种语言、五个额外数据块，限制按密钥计算。

## 接口兼容度

下表每一行给出一个 TMDB v3 读取路径，以及它在 `https://api.amodb.dev/3` 上的表现。

| 领域        | TMDB v3 路径                               | 在 amodb 上                                                                              |
| --------- | ---------------------------------------- | -------------------------------------------------------------------------------------- |
| 电影详情      | `/movie/{movie_id}`                      | 相同，另有五个 `append_to_response` 取值                                                        |
| 电视剧详情     | `/tv/{series_id}`                        | 相同，但没有 `type` 字段，且大多数剧集的 `created_by` 为空                                               |
| 季和集       | `/tv/{series_id}/season/{season_number}` | 结构相同。季的图片、视频和译文为空，季和集的 `external_ids` 为 null                                           |
| 人物        | `/person/{person_id}`                    | 相同，另有 `combined_credits`、`movie_credits`、`tv_credits`、`external_ids` 和 `images`（仅人物照片） |
| 演职员       | `/movie/{movie_id}/credits`              | 相同。单集的 `cast` 为空                                                                       |
| 搜索        | `/search/multi`                          | 相同，缓存 10 分钟                                                                            |
| 发现        | `/discover/movie`                        | 相同，缓存 30 分钟                                                                            |
| 热门趋势      | `/trending/{media_type}/{time_window}`   | 相同，缓存 30 分钟                                                                            |
| 列表        | `/movie/popular`                         | 相同，`page` 取值 1 到 500                                                                   |
| 图片        | `/movie/{movie_id}/images`               | 结构相同，文件从 `img.amodb.dev` 加载                                                            |
| 视频        | `/movie/{movie_id}/videos`               | 相同                                                                                     |
| 译文        | `/movie/{movie_id}/translations`         | 相同，提供 14 种语言                                                                           |
| 关键词       | `/movie/{movie_id}/keywords`             | 相同                                                                                     |
| 评论        | `/movie/{movie_id}/reviews`              | 返回 200，但只有少数作品有评论，因此空列表属于正常情况                                                          |
| 系列合集      | `/collection/{collection_id}`            | 相同，`parts` 按上映日期排序                                                                     |
| 公司和电视网    | `/company/{company_id}`                  | 键相同。公司的 `description` 为空，`parent_company` 为 null                                       |
| 类型        | `/genre/movie/list`                      | 相同                                                                                     |
| 配置        | `/configuration`                         | 键相同，图片主机为 `img.amodb.dev`                                                              |
| 按外部 ID 查找 | `/find/{external_id}`                    | 同一接口，另支持 `kinopoisk_id`。`tv_episode_results` 和 `tv_season_results` 始终为空                |
| 剧集分组      | `/tv/{series_id}/episode_groups`         | 列出一部剧的分组，不含分组内容                                                                        |

## amodb 未提供的功能

这些 TMDB v3 调用没有对应项。未知路径返回 404，`status_code` 为 34；写入方法返回 405，`status_code` 为 37。

| TMDB v3 调用                                                                                       | amodb 的响应            |
| ------------------------------------------------------------------------------------------------ | -------------------- |
| `/movie/changes`、`/tv/changes`、`/person/changes` 以及单个 ID 下的 `changes`                            | 404，`status_code` 34 |
| 剧集或某一季下的 `aggregate_credits`                                                                     | 404，`status_code` 34 |
| `/credit/{credit_id}` 和 `/review/{review_id}`                                                    | 404，`status_code` 34 |
| `/tv/episode_group/{id}`                                                                         | 404，`status_code` 34 |
| `/person/{person_id}/translations`、`tagged_images` 和 `/person/latest`                            | 404，`status_code` 34 |
| 系列合集、公司和电视网的 `images`、`translations` 和 `alternative_names`                                       | 404，`status_code` 34 |
| `/configuration/timezones`                                                                       | 404，`status_code` 34 |
| `account`、`authentication`、`guest_session` 和 `list` 下的全部内容，以及任何 `/rating` 或 `/account_states` 路径 | 405，`status_code` 37 |

如果你把 `aggregate_credits` 或 `changes` 加到 `append_to_response`，amodb 会忽略这个名称且不报错，因此响应体中就是缺少对应的键。

## 功能对比

| 功能   | TMDB                                  | amodb                                     |
| ---- | ------------------------------------- | ----------------------------------------- |
| 定价模式 | 符合条件的使用免费，遵循 TMDB 条款                  | 预付，每次购买 1 至 24 个月                         |
| 免费额度 | 有，限符合条件的使用                            | 无，也没有试用                                   |
| 认证方式 | `api_key` 中的 v3 密钥，或作为 Bearer 的 v4 令牌 | `api_key` 或 Bearer，密钥为 32 位十六进制           |
| 响应格式 | JSON                                  | JSON，所提供路径上的字段相同                          |
| 语言   | 请查阅其文档                                | 提供 14 种，其他标签回退到 `en`                      |
| 电影   | 支持                                    | 支持                                        |
| 电视剧  | 支持                                    | 支持                                        |
| 人物   | 支持                                    | 支持                                        |
| 图片   | 支持                                    | `img.amodb.dev`，尺寸从 `w92` 到 `original`    |
| 评分   | TMDB 用户评分，其他来源请查阅其文档                  | 已知时在一个对象中提供五个来源                           |
| 写入方法 | 账户、列表和评分方法                            | 无，返回 405                                  |
| 速率限制 | 请查阅其文档                                | 每个密钥每分钟 20、40 或 120 次                     |
| 商业使用 | 商业使用和署名要求请查看其条款                       | 付费套餐，见[定价](https://amodb.dev/zh/pricing/) |
| 兼容性  | 定义了 TMDB v3                           | 大多数 TMDB v3 读取路径和一个 OMDb 路由               |

## 具体差异

- **条款。** TMDB 要求你阅读其关于商业使用和署名的条款。amodb 按预付周期销售，不会自动续费，没有免费额度，也没有试用。
- **语言。** amodb 提供 en、ru、uk、be、zh、pt、bg、he、cs、ro、fr、pl、it 和 es。它接受 `ru-RU`、`pt-BR` 这类 TMDB 标签。德语、日语和韩语会回退到 `en`，而 `original_title` 保留原始标题。TMDB 的语言覆盖范围请查阅其文档。见[语言](https://amodb.dev/zh/languages/)。
- **扩展。** `append_to_response` 还接受 `moods`、`soundtracks`、`ratings`、`wikidata` 和 `showtimes`，它们在电影和剧集下各有自己的路径。
- **外部 ID。** `/3/find` 可解析 `imdb_id`、`tvdb_id`、`wikidata_id`、`kinopoisk_id`、`facebook_id`、`twitter_id` 和 `instagram_id`。`freebase_mid`、`freebase_id`、`tvrage_id`、`tiktok_id` 和 `youtube_id` 这几个来源会被接受，但返回空数组。缺少或未知的 `external_source` 返回 400，`status_code` 为 22。
- **按设计为空。** 季的图片、视频和译文，以及公司的 `description` 始终为空。评论和剧集的 `created_by` 只对少数作品有内容。季和集的 `external_ids` 全部为 null。
- **成人内容。** `include_adult` 会被忽略。成人影视作品和人物从不提供，请求时返回 404。
- **图片。** CDN 路径为 `https://img.amodb.dev/t/p/{size}/{file}`。无需密钥，文件缓存 30 天。
- **限制。** 窗口是按密钥计算的 60 秒滑动窗口。响应头会显示剩余次数，缓存命中同样计数，因为限制检查先于缓存执行。
- **独立性。** 目录数据来自公开和开放的来源以及我们自己的补充整理。结构相同并不保证每部作品的每个字段取值都一致。

## TMDB 更适合的场景

- **符合条件的免费使用。** 无需付费，这一点 amodb 无法比拟。
- **写入。** 给作品评分、创建列表和账户会话在 TMDB 上可用，在 amodb 上返回 405。
- **变更动态。** TMDB 会列出发生变化的 ID，amodb 没有这类动态，你需要按自己的计划刷新。
- **聚合演职员和单条演职员查询。** 这两者在 amodb 上都返回 404。请在作品上使用 `/credits`。
- **更广的语言需求。** 如果你的界面需要这 14 种之外的语言，请先查看 TMDB。
- **已有的审批。** 已经通过法务审查接受 TMDB 的团队，应当权衡再做一次审查的成本。

## 迁移到 amodb

每个请求只需改一行。

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

切换前，请并排对比几个响应的结构。下面的脚本会打印一侧返回而另一侧没有的顶层键。

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

对于某部作品，可选字段可能不同，因此请把缺失的键当作需要检查的线索，而不是结论。然后按下面的清单逐项处理：

1. 在[定价](https://amodb.dev/zh/pricing/)页选择套餐，然后在账户后台创建密钥。
2. 把基础 URL 和密钥移入配置。
3. 从 `/3/configuration` 读取 `images.secure_base_url`。
4. 在代码中搜索写入调用，以及“不提供”表格中的路径。写入继续使用 TMDB，其余部分替换掉。
5. 添加 429 处理，等待 `Retry-After` 秒。见[速率限制](https://amodb.dev/zh/rate-limits/)和[错误](https://amodb.dev/zh/errors/)。

## 定价

amodb 采用预付方式。可选择 1、3、6、12 或 24 个月，分别享受 0、10、20、30 或 40% 的折扣，并在每分钟 20、40 或 120 个请求的三个套餐中选择一个。所有套餐返回的数据相同，也都不会自动续费。具体金额见[定价](https://amodb.dev/zh/pricing/)。

## 常见问题

### TMDB v3 的所有读取接口 amodb 都有吗？

没有。大多数读取路径保留相同的路径、查询参数和 JSON 结构，本页的兼容对照表按领域做了分组。写入请求返回 405，status_code 为 37。变更动态、聚合演职员、按 ID 查询单条演职员记录和评论、剧集分组内容以及人物译文返回 404，status_code 为 34。

### 从 TMDB 迁移时，代码里要改什么？

三处：基础 URL 改为 https://api.amodb.dev/3，密钥换成你的 amodb 密钥，图片 URL 使用 img.amodb.dev。图片基础地址请从配置接口读取。除了标注为不提供的调用，路径保持不变。

### 电影和电视剧的 ID 会保持不变吗？

ID 沿用 TMDB 的编号。《搏击俱乐部》是 550，《绝命毒师》是 1396，两边一致。个别作品的某些字段值仍可能不同，切换前请用你自己的片库抽样对比。

### 可以同时使用两个服务吗？

可以。由于协议相同，账户和列表功能、变更动态以及聚合演职员仍可继续使用 TMDB，目录读取则用 amodb。请在配置中保留两个基础 URL 和两个密钥。

### 哪个更便宜？

TMDB 对符合条件的使用按其自身条款提供免费 API，符合条件时不需要付费。amodb 从第一个请求起就是付费的，提供 1 至 24 个月的预付周期，折扣最高 40%。

## 相关页面

- [TMDB API 替代方案](https://amodb.dev/zh/tmdb-api-alternative/): 在找 TMDB API 替代方案？对比条款、限制、语言和评分，再迁移到保留大多数 TMDB v3 读取路径和 JSON 的付费 API，并了解缺口。
- [用于自建片库的电影数据库 API](https://amodb.dev/zh/movie-database-api/): 用于自建本地副本的电影数据库 API：电影、人物、公司、系列合集和关键词的关联 ID、discover 日期窗口与 ID 查找。
- [按外部 ID 查找](https://amodb.dev/zh/find-by-external-id/): 用 TMDB find 接口按 IMDb、TVDB、Wikidata 或 Kinopoisk ID 查找电影、剧集或人物，并读取外部 ID。
- [认证](https://amodb.dev/zh/authentication/): 如何发送 amodb 密钥：查询中的 api_key、Bearer 请求头，或 OMDb 的 apikey。含密钥格式、保管和 401 错误。
- [速率限制](https://amodb.dev/zh/rate-limits/): amodb 按滑动 60 秒窗口内每分钟请求数限制每个密钥：按套餐为 20、40 或 120。读取速率限制响应头，并用 Retry-After 处理 429。
- [定价](https://amodb.dev/zh/pricing/): amodb 套餐的区别只在每分钟请求数：20、40 或 120。所有套餐都包含全部兼容 TMDB v3 和 OMDb 的数据。预付，不续费，无试用。

更新于: 2026-10-18. Source: https://amodb.dev/zh/amodb-vs-tmdb/
