IP DATA API
Swap the base URL, keep your parser.
Migrating off ip-api, ipwho.is, or ip2location.io usually means rewriting the pipeline that reads them. Ours answers with their exact field names, so the migration is a URL change and a key, not a project.
The base URL your client calls
Fields your parser reads
same names, same places- Address
- Continent
- Country
- Region
- City
- Postal code
- Network: ASN, organization, ISP
- Time zone
The full shape adds
- VPN
- Proxy
- Tor
- Datacenter
WHAT YOU GET
Drop-in paths, declared gaps, honest fields.
The risk in changing IP data vendors is not downtime, it is the parser. A missing field does not error, it flows downstream as a blank, and a changed field name flows downstream as a wrong join.
Verbatim migration paths
Existing ip-api and ipwho.is integrations keep their paths under /json and /ipwho. Canonical /geo/compact, /geo/standard, and /geo/full answer in the ip-api, ipwho.is, and ip2location.io shapes without vendor branding.
Declared unavailable fields
Any field we cannot source is listed in the X-LR-Field-Unavailable header on every lookup response across the compact, standard, and full shapes. Your pipeline can tell a data gap from an empty value, which is the difference between a null and a lie.
Keys travel in headers
Authentication is X-API-Key or Authorization Bearer on every documented path. The one exception is the root lookup, which accepts key= in the ip2location.io request form and answers in our own shape; every other surface refuses a credential in a URL.
Batch keeps addresses out of logs
POST a list of addresses in the request body instead of one per URL. The addresses you look up never appear in an access log, ours or anyone's in between.
Per-account rate limiting
Limits attach to your account, not your egress IP, so a fleet behind one NAT does not share a per-IP bucket, and adding servers does not change your quota.
Full country and network context
The full shape carries about ninety fields: geolocation, timezone, country facts, ASN and network operator, usage type, and VPN, proxy, Tor, and datacenter verdicts. Anything we cannot source is declared, never guessed.
HOW IT WORKS
Three steps, one URL change.
- 01
Point your client at us
Change the base URL. Your existing parser keeps working because the response shape is the one it already reads. - 02
Verify on your own traffic
Run both providers side by side on live lookups and diff the responses. The structural gaps, missing or unsourceable fields, are the ones we declare in the response headers. - 03
Cut over and monitor
Watch the X-LR-Field-Unavailable header, the X-LR-Units cost header, and your account usage in the dashboard as your volume moves.
Run the diff before you decide.
Send us a sample of your own addresses and compare our responses against your current provider, field by field. We will tell you which fields we cannot source before you sign, not after.