Products
IP Geolocation Anonymity Detection Blocklists IP Reputation Scores ASN & Company Network Classification Mobile Carriers Extended ASN API ipdata.free
Resources
Documentation API Reference SDKs & Libraries Research Tool Datacenter networks Mobile carriers
Pricing Log in
Sign up
[ SDKS & LIBRARIES ]

Eleven languages, one call

Every official client is open source under github.com/ipdata. Each wraps the same API — a lookup takes an IP and returns the full record — so the snippet below is the whole integration.

Python

PyPI · v4.0.9
pip install ipdata
from ipdata import ipdata
ipdata.api_key = 'KEY'
ipdata.lookup('8.8.8.8')

Bulk lookups, EU endpoint, optional local trie for offline range checks

github.com/ipdata/python ↗

Node.js

npm · v3.0.0
npm install ipdata
import IPData from 'ipdata'
const ipdata = new IPData('KEY')
await ipdata.lookup('8.8.8.8')

TypeScript types, built-in cache with TTL, EU endpoint

github.com/ipdata/node ↗

Go

pkg.go.dev · v0.8.1
go get github.com/ipdata/go
client, _ := ipdata.NewClient("KEY")
data, _ := client.Lookup("8.8.8.8")

Context-aware requests, typed response struct

github.com/ipdata/go ↗

PHP

Packagist · v0.1.2
composer require ipdata/api-client
$ipdata = new Ipdata('KEY', $httpClient, $psr17Factory);
$data = $ipdata->lookup('8.8.8.8');

PSR-18 HTTP client, bring your own transport

github.com/ipdata/php ↗

.NET

NuGet · v3.0.2
dotnet add package ipdata
var client = new IpdataClient("KEY");
var data = await client.LookupAsync("8.8.8.8");

Async API, targets .NET Standard

github.com/ipdata/dotnet ↗

Ruby

RubyGems · v0.1.5
gem install ipdata
client = Ipdata::Client.new('KEY')
data = client.lookup('8.8.8.8')
github.com/ipdata/ruby ↗

Rust

crates.io · v0.1.1
cargo add ipdata
let client = ipdata::Client::new("KEY");
let data = client.lookup("8.8.8.8").await?;

Async, reqwest-based

github.com/ipdata/rust ↗

Perl

CPAN · v1.0.0
cpanm Net::IPData
my $ipdata = Net::IPData->new(api_key => 'KEY');
my $data = $ipdata->lookup('8.8.8.8');
github.com/ipdata/perl ↗

Erlang

Hex · v1.0.1
{deps, [ipdata]}.
{ok, Data} = ipdata:lookup(<<"8.8.8.8">>, #{api_key => <<"KEY">>}).

rebar3; works from Elixir too

github.com/ipdata/erlang ↗

Java

Maven Central · v0.2.0
<dependency>
  <groupId>co.ipdata.client</groupId>
  <artifactId>ipdata-java-client</artifactId>
  <version>0.2.0</version>
</dependency>
Ipdata client = Ipdata.builder("KEY").build();
IpdataModel data = client.lookup("8.8.8.8");

Java 8+, builder-configured client

github.com/ipdata/java ↗

Swift

Swift Package Manager · v1.0.1
.package(url: "https://github.com/ipdata/swift.git", from: "1.0.1")
let client = IPDataClient(apiKey: "KEY")
let data = try await client.lookup("8.8.8.8")

iOS, macOS; async/await

github.com/ipdata/swift ↗

No client for your language?

The API is one GET with a key in the query string, and every response is JSON. Anything that can make an HTTPS request can use it — and ipdata.free needs no key at all.

curl "https://api.ipdata.co/8.8.8.8?api-key=KEY"