Watch-IP

Watch-IP 对比 ipapi.co

ipapi.co 和 Watch-IP 都可以将提供的 IPv4 或 IPv6 地址解析为大致位置,但身份验证方式、免费额度范围和批量支持各不相同。以下信息是直接在 ipapi.co 自己的网站上核实的;两个表格都不宣布总体胜出者。

本页有关 ipapi.co 的信息于 2026 年 9 月 8 日在「来源」列出的页面上直接核实,可能随时变更且不另行通知 — 在依赖具体数字之前,请重新核实该服务商自己的网站。有关 Watch-IP 的信息来自本仓库自身的代码和当前的 /pricing 页面。如发现任何看起来过时的信息,请通过 /contact 反馈。

本页对比的内容

本页仅对比服务器端的指定 IP 查询 — ipapi.co 的核心 API 与 Watch-IP 的 GET /v1/lookup/{ip} 和 POST /v1/lookup(私密密钥,第三方地理定位数据库)。本页不对比 Watch-IP 另一款独立的浏览器访问者地理位置产品(GET /v1/geo,公开可用密钥,来源锁定),该产品在本次对比中没有对应项。

功能对比

Watch-IPipapi.co
身份验证每次请求都需要通过 Authorization: Bearer 提供私密密钥。在文档记录的免费速率端点(ipapi.co/{ip}/json/)上无需 API 密钥;付费使用需单独商议。ipapi.co API 参考文档 · 2026-09-08
任意 IP 查询的免费额度无。查询套餐起价为每月 19 美元。(Watch-IP 另一款独立的浏览器访问者地理位置产品有自己的免费额度 — 端点、密钥和用途均不同。)每天最多 1,000 次请求(约每月 30,000 次)的免费速率,说明用于测试和开发,「不适用于生产环境」。ipapi.co 价格 · 2026-09-08
最低付费套餐每月 19 美元,5,000 次查询,每分钟 20 次请求。每月 15 美元,60,000 次查询/月;未公布每分钟速率限制。ipapi.co 价格 · 2026-09-08
批量查询POST /v1/lookup 每次调用接受 1 至 100 个 IP,按提交顺序以数组形式返回。提供批量查询工具;ipapi.co 公开发布的 API 参考文档未记录 JSON 批量端点或每次调用的 IP 数量上限。ipapi.co API 参考文档 · 2026-09-08
响应字段ip、country、region(次级行政区代码)、city、postalCode(此数据源始终为 null)、latitude、longitude、continent、timezone(此数据源始终为 null)、found。ip、city、region(名称)、country、postal、latitude、longitude、timezone、UTC 偏移、国际区号、货币、语言、ASN、组织。ipapi.co API 参考文档 · 2026-09-08
IPv6 支持查询接受 IPv6;但无论哪种 IP 版本,当前数据源都不会填充 postalCode 和 timezone。所有付费套餐均宣传为「灵活支持 IPv4/IPv6」。ipapi.co · 2026-09-08

从 ipapi.co 迁移

以下每个步骤的可运行版本都在 Watch-IP GitHub 仓库的 examples/migrate-from-ipapi.mjs 中 — 它会发出两个请求并打印两个响应,方便你自行比较。

1. 替换请求

将无需身份验证的 ipapi.co 请求替换为对 Watch-IP 查询端点的已验证调用。IP 在 URL 路径中的位置保持不变,但每个 Watch-IP 请求都需要私密密钥。

ipapi.co

curl https://ipapi.co/203.0.113.1/json/

Watch-IP

curl https://api.watch-ip.com/v1/lookup/203.0.113.1 \
  -H "Authorization: Bearer YOUR_SECRET_KEY"

2. 更新字段名称

ipapi.co 的「region」是地区名称(例如「California」);Watch-IP 的「region」是来自第三方地理定位数据库的次级行政区代码(例如「CA」)。显示或匹配该字段的代码需要一张映射表,而不只是重命名。

ipapi.co 响应(部分)

{
  "city": "Mountain View",
  "region": "California",
  "country_name": "United States"
}

Watch-IP 响应(部分)

{
  "city": "Mountain View",
  "region": "CA",
  "country": "US"
}

3. 将多个 IP 合并到一次调用中

如果你的集成目前对 ipapi.co 进行单个请求的循环调用,POST /v1/lookup 可以在一次调用中解析最多 100 个 — 减少往返次数,两种方式下每个 IP 都会记录一次使用事件。

循环发起单次调用

for (const ip of ips) {
  const r = await fetch(`https://ipapi.co/${ip}/json/`);
  results.push(await r.json());
}

Watch-IP 批量调用

const r = await fetch('https://api.watch-ip.com/v1/lookup', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_SECRET_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ ips }),
});
const { results } = await r.json(); // 与「ips」顺序相同

有关此迁移的可运行版本,请参阅 GitHub 上 Watch-IP 单体仓库中的 examples/migrate-from-ipapi.mjs。

常见问题

Watch-IP 比 ipapi.co 便宜吗?

这取决于用量和所需字段 — 两家服务商的套餐并不能按相同价格一一对应,而每次请求的价格只是迁移实际成本的一部分。请直接比较上表以及每家服务商当前的价格页面;本页不宣布哪家更便宜。

Watch-IP 是否像 ipapi.co 一样为任意 IP 查询提供免费额度?

截至 2026 年 9 月 8 日,没有。Watch-IP 的 IP 查询产品没有免费额度;其另一款独立的访问者地理位置产品(GET /v1/geo,仅限浏览器,公开可用密钥)有免费额度,但那是不同的产品和密钥类型,并非针对任意 IP 查询的免费配额。

我现有的 ipapi.co 集成能否不做修改就在 Watch-IP 上运行?

不能。身份验证、请求 URL 以及若干字段名称和结构均不同 — 请参阅上面的迁移步骤,并运行 examples/migrate-from-ipapi.mjs 并排查看两个响应,然后再重写你的集成。

来源

相关页面