Watch-IP vs IPinfo
IPinfoとWatch-IPはどちらも、指定された複数のIPを1回の呼び出しで解決するバッチエンドポイントを提供していますが、バッチ制限・レスポンス形式・料金が異なります。以下の情報はIPinfo自身のサイトで直接確認したものであり、どちらの表も総合的な勝者を示すものではありません。
このページのIPinfoに関する情報は、2026年9月8日に「出典」に記載のページで直接確認したものであり、予告なく変更される可能性があります — 特定の数値に依存する前にベンダー自身のサイトを再確認してください。Watch-IPに関する情報は、本リポジトリのコードおよび現在の/pricingページに基づきます。古くなっている情報を見つけた場合は/contactからご連絡ください。
このページが比較する内容
このページは、指定されたIPのサーバーサイドルックアップを比較します — IPinfoのコアAPIおよびバッチエンドポイントと、Watch-IPのGET /v1/lookup/{ip}およびPOST /v1/lookup(シークレットキー、サードパーティのジオロケーションデータベース)です。Watch-IPの別製品であるブラウザ向け訪問者ジオロケーション(GET /v1/geo、公開可能キー、オリジン制限)は比較対象外であり、この比較には該当する製品がありません。
機能比較
| Watch-IP | IPinfo | |
|---|---|---|
| 認証 | Authorization: Bearerヘッダー経由のシークレットキー。 | ?token=クエリパラメータ経由のトークン。IPinfoバッチエンリッチメントAPIドキュメント · 2026-09-08 |
| 無料枠 | ルックアップには無料枠なし。プランは5,000ルックアップで月額19ドルから。(Watch-IPの別製品である訪問者ジオロケーションには、ブラウザ用途向けの独自の無料枠があるが、任意IPルックアップ向けではない。) | IPinfo Lite: 月額0ドル。無制限リクエストとされているが、国レベルのジオロケーションのみで、Webダッシュボード経由のルックアップは50件まで。IPinfo料金 · 2026-09-08 |
| 最初の有料プラン | 月額19ドルで5,000ルックアップ/月、20リクエスト/分。 | IPinfo Core: 月額26ドルで150,000リクエスト/月。プランごとのレート制限は料金ページに明記されていない。IPinfo料金 · 2026-09-08 |
| 1回あたりのバッチサイズ | POST /v1/lookupの1回の呼び出しで最大100件のIP。 | POST /batchの1回の呼び出しで最大1,000件のIP。IPinfoバッチエンリッチメントAPIドキュメント · 2026-09-08 |
| バッチレスポンスの形式 | 送信した「ips」配列と同じ順序の「results」配列。 | IPアドレスをキーとするJSONオブジェクト。レスポンスの順序が保持されるとはドキュメント化されていない。IPinfoバッチエンリッチメントAPIドキュメント · 2026-09-08 |
| レスポンスフィールド(単一ルックアップ) | ip, country, region(サブディビジョンコード), city, postalCode(このソースでは常にnull), latitude, longitude, continent, timezone(このソースでは常にnull), found。 | Coreプラン: city, region, region_code, country, country_code, continent, continent_code, latitude, longitude, timezone, postal_code。ASN/組織フィールドは上位プランで別途ドキュメント化されている。IPinfo Core APIのジオロケーションデータ · 2026-09-08 |
IPinfoからの移行
以下の各手順の実行可能なバージョンは、Watch-IPのGitHubリポジトリのexamples/migrate-from-ipinfo.mjsにあります — 両方のリクエストを実行し、両方のレスポンスを表示するので、自分で比較できます。
1. バッチリクエストの置き換え
トークンはクエリパラメータからAuthorizationヘッダーに変わり、リクエストボディは単純な配列から「ips」キーを持つオブジェクトに変わります。
IPinfo
curl -X POST "https://api.ipinfo.io/batch?token=$IPINFO_TOKEN" \
-H "Content-Type: application/json" \
-d '["203.0.113.1", "2001:db8::1"]'Watch-IP
curl https://api.watch-ip.com/v1/lookup \
-H "Authorization: Bearer YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"ips": ["203.0.113.1", "2001:db8::1"]}'2. コードがIPキー付きマップを想定している場合は再構築する
IPinfoのバッチレスポンスは、IPで直接インデックスするオブジェクトです。Watch-IPは代わりに順序付きの配列を返します — リクエストの「ips」配列と組み合わせることで、既存コードが期待するのと同じIP別ルックアップの形にできます。
IPinfoのレスポンスを読む
const city = data["203.0.113.1"].city;Watch-IPのレスポンスを読む
const map = Object.fromEntries(ips.map((ip, i) => [ip, results[i]]));
const city = map["203.0.113.1"].city;3. 大きなバッチを分割する
IPinfoの1,000件という上限に近いジョブは、Watch-IPの100件という上限に合わせて複数回の呼び出しに分割する必要があります — 同じ総量に対して約10倍のリクエスト数を見込んでください。
IPinfoへの1回の呼び出し
await fromIpinfoBatch(thousandIps);Watch-IPへの複数回の呼び出し
for (let i = 0; i < ips.length; i += 100) {
await fromWatchIpBatch(ips.slice(i, i + 100));
}この移行の実行可能なバージョンは、GitHub上のWatch-IPモノレポのexamples/migrate-from-ipinfo.mjsを参照してください。
よくある質問
なぜWatch-IPのバッチ上限はIPinfoより小さいのですか?
IPinfoはバッチ1回あたり1,000件のIPという上限を明記していますが、Watch-IPは100件です。1つのジョブで定期的に100件を超えるIPをバッチ処理する場合は、1回の大きな呼び出しではなく、複数回の連続したPOST /v1/lookup呼び出しを計画してください。
Watch-IPにはIPinfo Liteのような無料枠がありますか?
2026年9月8日時点ではありません。IPinfo Liteは国レベルの無制限リクエストを無料で提供していますが、Watch-IPのIPルックアップ製品には無料枠がありません。Watch-IPの別製品である訪問者ジオロケーションには、ブラウザ用途向けの独自の無料枠がありますが、これは任意IPルックアップとは製品もキー種別も異なります。
バッチレスポンスでは結果の順序は保持されますか?
Watch-IPのPOST /v1/lookupは、送信した「ips」配列と常に同じ順序で「results」配列を返します。IPinfoのバッチレスポンスは順序付き配列ではなく、IPをキーとするJSONオブジェクトです。そのため、いずれのレスポンスを読み取るコードも、互換性を前提とせず、実際の形式に合わせて書く必要があります。
出典
- IPinfo — 料金 — accessed 2026-09-08
- IPinfo — バッチエンリッチメントAPI — accessed 2026-09-08
- IPinfo — Core APIのジオロケーションデータ — accessed 2026-09-08