Downloads

The whole dataset, on your own disk.

Every table behind the API, in CSV, JSON lines, Parquet and MaxMind DB formats. Samples use synthetic data. Published builds show exact byte counts and checksums; unpublished size estimates are approximate.

Downloads are on the Business plan

$200 a month, includes 2,000,000 API lookups a day and every database on this page. Sign in to an account on the Business plan to unlock them.

See plans

Geolocation

15,201,782 rows

Country, region, city, postcode, coordinates and time zone per network, with ISO codes, GeoNames identifiers and an accuracy rating on every row.

Updated 3 days ago

Columns

network, start_ip, end_ip, country_code, continent_code, country_geoname_id, state, region_code, region_geoname_id, city, city_geoname_id, zip, latitude, longitude, timezone, accuracy, source, last_changed, basis, is_anycast

ASN organizations

125,532 rows

Every autonomous system number with its organization name, country and business category. The MMDB build joins these onto the BGP table so you can look them up by address.

Updated 7 days ago

Columns

asn, name, domain, country, org_type, org_category, updated_at, normalized_type, last_changed

Datacenter and hosting

734,069 rows

Published cloud and hosting ranges with the provider, its domain, the region and the service behind each block.

Updated 13 hours ago

Columns

network, start_ip, end_ip, provider, domain, region, service, source, last_seen

VPN and proxy

342,390 rows

Networks run by VPN, proxy and egress services, with the service name, the exit region and how the range was established.

Updated 13 hours ago

Columns

network, start_ip, end_ip, service, url, type, confidence, exit_node_region, country_code, city_name, latitude, longitude, source, last_seen

Tor exit nodes

1,220 rows

Every address in the Tor Project bulk exit list, refreshed daily.

Updated 7 hours ago

Columns

ip, last_seen

Abuser networks

2,035,701 rows

Networks on public abuse blocklists, with the feed that listed them and how many independent feeds agree.

Updated 19 hours ago

Columns

network, start_ip, end_ip, source, source_count, last_seen

Crawler ranges

15,090 rows

Address ranges published by search engine and AI crawler operators, so you can tell a real Googlebot from a forged user agent.

Updated 19 hours ago

Columns

network, start_ip, end_ip, bot, source, last_seen

Company and abuse contacts

10,797,320 rows

Registry allocations with the organization behind them and the abuse contact to report to.

Updated 8 days ago

Columns

network, start_ip, end_ip, name, netname, org_type, domain, rir, country, abuse_name, abuse_address, abuse_country, abuse_email, abuse_phone, source, abuse_emails, abuse_phones, network_type

BGP routing table

1,590,946 rows

Announced prefixes with the AS that originates them, collected from a public route collector.

Updated 13 hours ago

Columns

prefix, start_ip, end_ip, origin_asn, last_seen

Try a sample bundle

These examples contain synthetic data. Each archive includes schemas, checksums and a manifest.

How to use them

Every range table ships network plus start_ip and end_ip, so you can range scan on integers without teaching your importer about prefixes. The MMDB files are ordinary MaxMind DB version 2 databases with a 128-bit tree; IPv4 sits under ::/96, which is what every standard reader expects.

Found a row that is wrong? Report a correction. Want to know what changed? Read the changelog.

Python import examples for the synthetic files:

import gzip, json, pyarrow.parquet as pq, maxminddb
with gzip.open('ip-api-dev-geo.json.gz', 'rt') as f:
    row = json.loads(next(f))
table = pq.read_table('ip-api-dev-geo.parquet')
with maxminddb.open_database('ip-api-dev-whois.mmdb') as db:
    contacts = db.get('192.0.2.1')['records']