プログラミング言語を選択 クライアントをインストールし、1件の検索を実行してレスポンスフィールドを確認します。
JavaScript / TS JS / TS Python Go Rust Java C++ R .NET 言語の切り替えにはJavaScriptが必要です。すべてのクライアントリポジトリへのリンクを以下に掲載しています。
TypeScript / JavaScript
enrichip 実行確認済み
要件 ESモジュール · Node 26で確認済み
パッケージバージョン 1.0.1 インストール npm install enrichip@1.0.1
単一IPの検索 node lookup.mjsimport { queryIP } from "enrichip" ;
const info = await queryIP ( "1.1.1.1" );
console. log ( JSON . stringify (info, null , 2 )); クライアントの動作 この例は公開済みのnpmパッケージを使用します。IP引数には圧縮表記のIPv6を含む文字列を渡せますが、リポジトリのHEADでは検証処理がより厳格になっています。 このクライアントにはリクエスト単位のタイムアウト設定がありません。リクエスト設定を直接制御する必要がある場合は、HTTPのコード例を使用してください。
要件 Python 3.13で確認済み · Pydantic 2
ソースリビジョン 9bd6552 インストール git clone https://github.com/ipqwery/ipapi-py.git
cd ipapi-py
git checkout 9bd655266582ec70d90d01296aa92784da5a27a5
python -m pip install "httpx==0.28.1" "pydantic>=2,<3"
単一IPの検索 python lookup.pyfrom ipapi.client import IPAPIClient
client = IPAPIClient()
try :
info = client.query_ip( "1.1.1.1" )
print (info.model_dump_json( indent = 2 ))
finally :
client.client.close() クライアントの動作 ソースをチェックアウトしたディレクトリでlookup.pyを実行してください。公開されているipcore 0.1.2の配布物にはパッケージのメタデータしかなく、インポート可能なipapiモジュールが含まれません。そのため、この手順ではリビジョンを固定したリポジトリを使用します。 このクライアントはPydanticの非推奨メソッドparse_rawを使用しています。ラッパーにはコンテキストマネージャーがないため、使用後にHTTPクライアントを閉じてください。 Go
github.com/ipqwery/ipapi-go 実行確認済み
要件 Go 1.24.2以降
ソースリビジョン fc7efc4 インストール go get github.com/ipqwery/ipapi-go@fc7efc494870418b9f1143f642aba8f5802ebf9f
単一IPの検索 go run .package main
import (
" fmt "
" log "
ipapi " github.com/ipqwery/ipapi-go "
)
func main () {
info, err := ipapi. QueryIP ( "1.1.1.1" )
if err != nil {
log. Fatal (err)
}
fmt. Println (info.IP)
if info.ISP != nil {
fmt. Println (info.ISP.ASN)
}
} クライアントの動作 Goモジュール内でインストールコマンドを実行してください。QueryIPは入れ子構造のIPInfo値を返し、HTTPレスポンスが成功を示さない場合はエラーを返します。 このクライアントには呼び出し単位のタイムアウトがありません。結果を再シリアライズするとomitemptyタグによりfalseや0の値は省略されますが、デコードされた値自体は保持されています。
要件 Rust 2021エディション · Tokio
ソースリビジョン 2313f1f インストール cargo add ipapi --git https://github.com/ipqwery/ipapi-rust --rev 2313f1f6028803d5fcffc3332bc3cfda8a61df7f
cargo add tokio --features macros,rt-multi-thread,time
単一IPの検索 cargo runuse std :: time :: Duration ;
#[tokio :: main]
async fn main () -> Result <(), Box < dyn std :: error :: Error >> {
let info = tokio :: time :: timeout (
Duration :: from_secs ( 5 ),
ipapi :: query_ip ( "1.1.1.1" ),
) .await?? ;
println! ( "{}" , info . ip);
if let Some (isp) = info . isp {
println! ( "{:?}" , isp . asn);
}
Ok (())
} クライアントの動作 Cargoプロジェクトにリビジョンを固定したソースをインストールしてください。記載のcrates.io版は利用できません。この例ではTokioの5秒のタイムアウトで検索時間を制限しています。 省略可能な入れ子フィールドにはOptionを使用します。このクライアントはHTTPステータスを確認せずにレスポンスをデコードするため、エラーレスポンスの処理についてはHTTPリファレンスを参照してください。
要件 JDK 21 · Gradleラッパー
ソースリビジョン 5e303a5 インストール git clone https://github.com/ipqwery/ipapi-java.git
cd ipapi-java
git checkout 5e303a5dd2a373ae5b56a1f53139d8b8ca7f6761
./gradlew :app:build
単一IPの検索 import ipapi.java.Ipapi;
import ipapi.java.IPInfo;
public class Lookup {
public static void main ( String [] args ) throws Exception {
IPInfo info = Ipapi. queryIp ( "1.1.1.1" );
System.out. println (info. getIp ());
if (info. getIsp () != null ) {
System.out. println (info. getIsp (). getAsn ());
}
}
} クライアントの動作 固定したリビジョンのソースをJDK 21でビルドしてください。この例は、ビルド済みライブラリをクラスパスに含む利用側のプロジェクトで実行するものです。ここでは実行確認を行っていません。 このソースはipapi.javaの静的メソッドを使用し、APIキーは不要です。READMEにあるio.ipapi名前空間とAPIキーを受け取るコンストラクターは、このリビジョンと一致しません。デコード前のHTTPステータス確認も行われません。
要件 C++20 · CMake · libcurl
ソースリビジョン a5ae87c
単一IPの検索 標準のHTTPリクエストを使用 現在のC++クライアントでは、コールバックとリスク項目のマッピングに修正が必要です。標準のHTTPリクエストならAPIの完全なレスポンスを取得できます。
HTTPSエンドポイントを確認 クライアントの動作 現在のクライアントは、libcurlが返すレスポンスの各チャンクを完全なJSONドキュメントとして解析します。レスポンスが複数のチャンクに分割されると、正しくデコードできない場合があります。 リスク項目のマッピングではis_datacenterとrisk_scoreが設定されません。自分のIPを取得するコールバックの戻り値型も呼び出し側と一致しません。これらの処理が修正されるまでは、標準のHTTPリクエストを使用してください。
要件 R 4.1以降
ソースリビジョン 79cd732 インストール install.packages ( "remotes" )
remotes :: install_github ( "ipqwery/ipapi-r@79cd73249bd1f8fa41d950bc37ba5b9f6ee6d2d9" )
単一IPの検索 Rscript lookup.Rlibrary ( ipapi )
info <- query_ips ( "1.1.1.1" )
print ( info [ , c ( "ip" , "asn" , "country_code" )]) クライアントの動作 query_ipsにはアドレスを1つだけ渡してください。複数のアドレスを含むベクトルを渡すと旧来の一括検索の処理に進み、APIに拒否されます。 結果は入れ子構造をフラットな列に展開したデータフレームです。この固定リビジョンのソース例は、ここでは実行確認を行っていません。
要件 .NET 9以降 · .NET 10で確認済み
パッケージバージョン 2024.12.23.223133 インストール dotnet add package IpApi --version 2024.12.23.223133
単一IPの検索 dotnet runusing IpApi ;
using Microsoft . Extensions . DependencyInjection ;
using System . Text . Json ;
var services = new ServiceCollection ();
services. AddIpApiClient ();
using var provider = services. BuildServiceProvider ();
var client = provider. GetRequiredService < IIApiClient >();
using var timeout = new CancellationTokenSource (TimeSpan. FromSeconds ( 5 ));
var info = await client. QueryIpAsync ( "1.1.1.1" , timeout.Token);
if (info is null ) throw new InvalidOperationException ( "Empty IP response" );
Console. WriteLine (JsonSerializer. Serialize (info)); クライアントの動作 .NETのコンソールプロジェクトで実行してください。登録されるインターフェースはIIApiClientで、先頭に大文字のIが2つ並びます。READMEにあるIIpApiClientとは名前が異なります。 レスポンスはIsp、Location、Riskの入れ子オブジェクトを使用します。キャンセルトークンを渡してリクエスト時間を制限してください。旧来の複数IP用メソッドにはAPIが対応していません。