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-IP | ipapi.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 并排查看两个响应,然后再重写你的集成。
来源
- ipapi.co — IP Address Lookup and Geolocation API — accessed 2026-09-08
- ipapi.co — API 参考文档 — accessed 2026-09-08
- ipapi.co — 价格 — accessed 2026-09-08