IP Info(無料IPジオロケーションAPI)
IP Infoは、Shifterが運営する無料のIPジオロケーション・ASN APIです。1回のGETリクエストで、IPアドレスの国、地域、都市、座標、タイムゾーン、ISP、ASN、接続タイプをJSONとして返します。サインアップもAPIキーもサブスクリプションも不要です。
これはShifterが自社のプロキシプールに使用しているのと同じIPロケーション・ネットワークデータベース上で動作しています。そのため、IP InfoでShifterの出口IPを確認すると、当社のネットワークが認識している通りの位置情報を確認できます。
エンドポイント
Section titled “エンドポイント”| リクエスト | 返される内容 |
|---|---|
GET http://ip-info.com/json | リクエストを行ったIP(サーバーのIP、またはプロキシ経由の場合はプロキシの出口IP) |
GET http://ip-info.com/json?ip=8.8.8.8 | 指定した公開IPv4またはIPv6アドレス |
GET http://ip-info.com/8.8.8.8/json | 同じ検索のパス形式 |
HTTP(http://ip-info.com/json)も利用でき、リダイレクトはされません。混在コンテンツによるブロックを避けるため、Webページからは HTTPS を使用してください。レスポンスはクロスオリジンのGETを許可しているため、ブラウザ側のコードから直接APIを呼び出せます。
curl --max-time 10 "http://ip-info.com/json?ip=94.204.59.232"{ "ip": "94.204.59.232", "city": "Motor City", "region": "Dubai", "region_code": "DU", "country": "AE", "country_name": "United Arab Emirates", "continent": "AS", "loc": "25.0459,55.241", "latitude": 25.0459, "longitude": 55.241, "postal": null, "timezone": "Asia/Dubai", "asn": 15802, "as_name": "Emirates Integrated Telecommunications Company PJSC", "isp": "Emirates Integrated Telecommunications Company PJSC", "org": "Emirates Integrated Telecommunications Company", "connection_type": "Corporate", "user_type": "business", "is_anycast": false}実際のレスポンスには29個のフィールドがあり、上の例はその中でも多くの連携で参照される項目を示しています。すべてのフィールドは常に存在し、データベースに値がない場合はnullが返されます。
Shifterプロキシの出口を確認する
Section titled “Shifterプロキシの出口を確認する”引数なしのリクエストをプロキシ経由で送信します。IP Infoのレスポンスは出口IPの情報を返すため、狙った国、都市、ASNが実際に得られたものと一致しているかを確認できます。
curl --max-time 15 \ --proxy http://p.shifter.io:443 \ --proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \ http://ip-info.com/jsonimport requests
proxy = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"r = requests.get( "http://ip-info.com/json", proxies={"http": proxy, "https": proxy}, timeout=15,)r.raise_for_status()exit_ip = r.json()print(exit_ip["ip"], exit_ip["country"], exit_ip["city"], exit_ip["asn"])assert exit_ip["country"] == "US", f"expected US, got {exit_ip['country']}"import { HttpsProxyAgent } from "https-proxy-agent";import fetch from "node-fetch";
const agent = new HttpsProxyAgent( "http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443");const res = await fetch("http://ip-info.com/json", { agent });const exit = await res.json();console.log(exit.ip, exit.country, exit.city, `AS${exit.asn}`);country(ISO 3166の2文字コード)をリクエストした国と比較し、asn(AS接頭辞のない数値のみ)を狙ったネットワークと比較してください。ユーザー名のフラグについてはジオターゲティングを参照してください。
AIエージェントから利用する
Section titled “AIエージェントから利用する”IP Infoは認証フローを必要としないため、エージェントは他のHTTPエンドポイントと同様に呼び出すことができます。エージェントやツール開発者が直接読み込める、機械可読な説明も公開しています。
https://ip-info.com/llms.txt: LLM向けに書かれた簡潔な紹介https://ip-info.com/llms-full.txt: 完全なリファレンスをプレーンテキストでhttps://ip-info.com/openapi.json: OpenAPI 3.1形式の契約(securityは空、キー不要)
MCPサーバーは不要です。フレームワークが関数やツールの定義を受け付ける場合は、以下だけで十分です。
{ "name": "ip_lookup", "description": "Approximate geolocation and network (ASN, ISP) for a public IP address. Omit ip to look up the agent's own network exit.", "input_schema": { "type": "object", "properties": { "ip": { "type": "string", "description": "Public IPv4 or IPv6 literal. Leave empty for the caller's exit IP." } } }}ipが空の場合はGET http://ip-info.com/jsonとして、それ以外の場合はGET http://ip-info.com/json?ip=<URL-encoded ip>として実装してください。
このツールと合わせて、エージェントには次のルールを伝えてください。
ipを指定しない呼び出しは、エージェント自身のサーバーまたはプロキシの出口を示すものであり、人間のユーザーを示すものではありません。ユーザーのIPを調べるには、そのIPを明示的にエージェントへ渡す必要があります。- 国の比較には
countryを、ネットワークの確認にはasnを使用してください。 nullは不明として扱ってください。欠落しているフィールドを推測で埋めてはいけません。- 位置情報は近似値であり、IP InfoはVPNやプロキシの検出サービスではありません。
エージェントの典型的な用途としては、ブラウジングエージェントのプロキシが正しい国にあることをローカライズされたページをスクレイピングする前に確認すること、取得したデータに取得元の出口位置をタグ付けすること、ログやサインアップ時のIPに国とASNの情報を付加することが挙げられます。
エラーとリトライ
Section titled “エラーとリトライ”エラーは安定したコードとともにJSONで返されます。
{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }| ステータス | コード | 意味 |
|---|---|---|
| 400 | invalid_ip | 入力が不正、プライベート、予約済み、またはその他非公開のIPである、あるいはパラメータが矛盾している |
| 404 | ip_not_found | このIPのレコードがアクティブなデータベースに存在しない |
| 405 | method_not_allowed | GETを使用してください |
| 503 | database_unavailable | 一時的な問題です。バックオフしてリトライしてください |
| 504 | timeout | 一時的な問題です。バックオフしてリトライしてください |
4xxの入力エラーはリトライする前に修正してください。503、504および接続エラーの場合は、短い上限付きのバックオフ(例えば1秒、2秒、4秒)でリトライし、それでも失敗する場合はあきらめて失敗を報告してください。
データと制限
Section titled “データと制限”- 無料、クォータなし。 キー単位・アプリ単位のクォータはなく、APIキーも不要です。これは容量に限りのある共有サービスであるため、アプリケーションに必要な分だけリクエストを行い、利用規約に従ってください。自動化された用途、商用利用も認められています。
- 設計上、近似値です。 座標は一定のエリアを示すものであり、住所を特定するものでも、個人を特定するものでもありません。
- プロキシやVPNの検出器ではありません。
connection_type、user_type、is_anycastはデータベース上の分類であり、IPの実際の使われ方を証明するものではありません。 - プライバシー。 このAPIは検索履歴を一切保持しません。詳細はプライバシーポリシーを参照してください。
ご質問やデータの不一致については、該当のIPと想定される位置情報を添えてhi@shifter.ioまでメールでお問い合わせください。