API

IPKensaku APIドキュメント

ブラウザから /api/ip を呼び出すだけで最新のIPメタデータを取得できます。静的ホスティングでも安全に使えるよう、サービスワーカー側でレート制限とフェイルセーフを実装しています。

エンドポイント

/api/ip は ipapi.co への薄いプロキシです。レスポンスは { fetched_at, query, data } というシンプルな構造で返却されます。

HTTPメソッド
GET
パス
/api/ip
認証
不要(同一オリジンから利用可能)
上流データ
ipapi.co JSON API

パラメーター

クエリを省略するとアクセス元IPを調べます。任意のIP/ドメインを指定したい場合は query パラメーターを付与してください。

Name Type Required Description
query string 任意 IPv4/IPv6 またはドメイン。省略時はアクセス元IPを返します。

レート制限

  • 1クライアントにつき30秒あたり1リクエストまで。
  • 超過すると429と retry_after(秒) を返します。
  • 高頻度利用が必要な場合はキャッシュや自前バックエンドをご検討ください。

レスポンス例

data フィールドは ipapi.co の仕様をそのまま返します。必要なフィールドのみ抽出してご利用ください。

{
  "fetched_at": "2025-11-08T12:00:00.000Z",
  "query": "8.8.8.8",
  "data": {
    "ip": "8.8.8.8",
    "city": "Mountain View",
    "region": "California",
    "country_name": "United States",
    "latitude": 37.751,
    "longitude": -97.822,
    "timezone": "America/Chicago",
    "utc_offset": "-0500",
    "asn": "AS15169",
    "org": "Google LLC",
    "...": "ipapi.co が返すその他のフィールド"
  }
}

リクエスト例

cURL

curl "https://ipkensaku.com/api/ip?query=8.8.8.8"

JavaScript (fetch)

async function lookupIp(query) {
  const url = query ? `/api/ip?query=${encodeURIComponent(query)}` : "/api/ip";
  const res = await fetch(url);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return res.json();
}

lookupIp("1.1.1.1").then(console.log);

ウィジェット連携

/api/ip は簡易ウィジェットからも利用できるよう設計されています。

  • 自サイトで30秒以上のキャッシュ層を設け、過度な呼び出しを避けてください。
  • JSON内の必要なフィールドのみUIに表示し、不要な個人情報は保管しないでください。
  • CSPや参照元制限で第三者が勝手にウィジェットを埋め込めないようにしてください。

JSONスキーマ: api/widget-schema.json

ステータスコード

200 取得成功。ipapi.co からのレスポンスをそのまま返します。
429 レート制限に達しました。retry_after を参照してください。
502 上流APIの取得に失敗しました。message に原因が入ります。

利用上の注意

  • 連続アクセスする場合はクライアント側でキャッシュし、UI の操作に合わせて再取得してください。
  • data 以下のフィールドは ipapi.co に依存するため予告なく追加・変更される可能性があります。
  • 商用利用やカスタムエンドポイントの追加は hello@ipkensaku.com までお問い合わせください。