myip as an ipinfo.io Alternative
A sourced ipinfo.io Lite/Core/Max/Enterprise limits table, a real field-by-field migration snippet from ipinfo's current Core API response to myip's, and an honest look at where ipinfo is genuinely ahead — not just a sales pitch.
If you're already calling ipinfo.io and evaluating alternatives: ipinfo's free Lite plan is genuinely permissive — unlimited monthly API requests with a commercial license included, not a crippled free tier. The honest trade-off on Lite is data depth (country/continent-level only), and ipinfo offers a downloadable database product myip doesn't. Where myip differs is live per-unique-IP-per-day metering across geo, network and threat/fraud signals in one call. The comparison below is meant to help you pick correctly, including away from us.
ipinfo.io data retrieved on 2026-07-28 from ipinfo's own pricing page. Prices and limits change without notice — verify against that page before relying on a figure.
ipinfo.io plans & limits
Reproduced from ipinfo's own comparison grid. For Core and Max we show only the matrix's own "API Requests per Month" range — ipinfo's price cards separately list a per-plan "Monthly API requests" figure; see ipinfo's pricing page for how that figure relates to the range below.
| Field | Lite | Core | Max | Enterprise |
|---|---|---|---|---|
| Price | $0/mo | $41/mo ($490 billed annually) | $130/mo ($1,560 billed annually) | Custom |
| IP Geolocation | ✓ Country and continent only | ✓ | ✓ Includes dma and geoname | ✓ |
| ASN | ✓ Name and domain only | ✓ Name, domain and type | ✓ Name, domain and type | ✓ |
| Connection Context | – | ✓ Hosting, mobile, satellite and anycast | ✓ Hosting, mobile, satellite and anycast | ✓ |
| Privacy Detection | – | ✓ | ✓ | ✓ |
| API Requests per Month | Unlimited | 150k - 5M | 150k - 5M | Custom |
| Overages | – | $0.54 per +1k | $1.03 for +1k | Custom |
| Database Downloads Available | ✓ | ✓ | ✓ | ✓ |
| Support | Community-supported | Standard support | Standard support | Premium support |
| Commercial License | ✓ | ✓ | ✓ | ✓ |
Database downloads ship as CSV, JSON, MMDB and Parquet, but the download product's own pricing is quote-based — ipinfo's database page shows "Get A Quote" / "Contact Sales", no listed price. See ipinfo's database download page.
For reference: myip's own numbers (live)
- Free tier
- Cheapest paid plan
Migrating from ipinfo.io's Core API
ipinfo currently documents two response shapes: an older flat one (top-level city/region/loc/org strings) and the current nested Core API shape used below (geo{} and as{} objects plus is_* booleans). This mapping targets the current Core API shape — if your existing integration still reads the legacy flat fields, check ipinfo's own data-types page for which shape your account actually returns before adapting this snippet.
{
"ip": "8.8.8.8",
"geo": {
"city": "Mountain View",
"region": "California",
"region_code": "CA",
"country": "United States",
"country_code": "US",
"continent": "North America",
"continent_code": "NA",
"latitude": 37.4056,
"longitude": -122.0775,
"timezone": "America/Los_Angeles",
"postal_code": "94043"
},
"as": {
"asn": "AS15169",
"name": "Google LLC",
"domain": "google.com",
"type": "hosting"
},
"is_anonymous": false,
"is_anycast": true,
"is_hosting": true,
"is_mobile": false,
"is_satellite": false
}
Field by field, the closest myip v2 equivalents:
| ipinfo Core field | myip v2 field | Note |
|---|---|---|
| ip | ip | Same string, top level on both. |
| geo.city | geo.city | Direct match. |
| geo.region | geo.region | Direct match; myip has no separate region_code field. |
| geo.country | geo.countryName | Direct match. |
| geo.country_code | geo.countryCode | Direct match, same ISO 3166-1 alpha-2 code. |
| geo.continent_code | geo.continent | myip's field carries the 2-letter code only, matching ipinfo's continent_code — not the continent name. |
| geo.latitude / geo.longitude | geo.lat / geo.lon | Direct match; both nullable when unknown on myip's side. |
| geo.timezone | geo.timezone | Direct match, IANA zone name. |
| geo.postal_code | geo.postal | Field exists but is always empty on myip today — its geo source carries no postal data yet. |
| as.asn | network.asn | Direct match, e.g. "AS15169". |
| as.name | network.asName | Direct match, the AS holder name. |
| as.domain | network.asnDomain | Populated only when the network group is requested and your tier includes it; null otherwise. |
| as.type | network.classification.type | Both a short string, but the value sets differ (myip: hosting/datacenter/mobile/isp/home/business/private, or an empty string when undetermined) — don't assume the same string on both sides. |
| is_anonymous | privacy.isAnonymous | Both booleans; myip's is a computed OR of its own Tor/VPN/proxy signals, each best-effort. |
| is_anycast | flags.isAnycast | Direct match, same topology signal. |
| is_satellite | flags.isSatellite | Direct match. |
| is_hosting / is_mobile | network.classification.type | No matching booleans — myip folds both signals into one classification string; test for equality against "hosting" or "mobile" instead of reading a flag. |
// ipinfo.io Core API response -> myip v2 field shape.
// Run this against the JSON above; every field it reads matches a row
// in the mapping table (myip has no fields for region_code or the
// continent's display name, and no matching booleans for is_hosting/
// is_mobile).
function mapIpinfoCoreToMyip(ipinfo) {
return {
ip: ipinfo.ip,
geo: {
countryCode: ipinfo.geo.country_code,
countryName: ipinfo.geo.country,
continent: ipinfo.geo.continent_code,
region: ipinfo.geo.region,
city: ipinfo.geo.city,
postal: ipinfo.geo.postal_code,
timezone: ipinfo.geo.timezone,
lat: ipinfo.geo.latitude,
lon: ipinfo.geo.longitude,
},
network: {
asn: ipinfo.as.asn,
asName: ipinfo.as.name,
asnDomain: ipinfo.as.domain,
// ipinfo's as.type is the closest analog to myip's
// network.classification.type — the value sets differ, so map it
// as a hint, not an exact-string passthrough.
classificationTypeHint: ipinfo.as.type,
},
privacy: {
isAnonymous: ipinfo.is_anonymous,
},
flags: {
isAnycast: ipinfo.is_anycast,
isSatellite: ipinfo.is_satellite,
// is_hosting / is_mobile have no 1:1 myip boolean — see
// network.classification.type above instead.
},
};
}
Where ipinfo.io has the edge
- A genuinely permissive free tier: IPinfo Lite allows unlimited monthly API requests with a commercial license included, not just a small trial quota. The real trade-off on Lite is data depth — country/continent-level geolocation only — not request volume or licensing.
- A downloadable database product on every plan, including Lite (CSV, JSON, MMDB and Parquet formats). myip has no downloadable database product at all — API access only.
- Published support tiers (standard support on Core/Max, premium support on Enterprise). myip has no published SLA or named support tier.
To be fair about our own limits
- myip's geolocation comes from scheduled offline-database imports, not a live per-request lookup — unlike the RDAP network/registry data in the same response, which is fetched from the registry and cached.
- There is no published SLA or uptime guarantee.
- There is no downloadable database product — every lookup is an API call.
More comparisons
See myip's current numbers for yourself
Frequently asked questions
- Is ipinfo.io's free Lite plan really unlimited?
- Yes for API requests — ipinfo's own comparison grid lists Lite's API-requests-per-month as unlimited, with a commercial license included. A separate, smaller limit of 100 manual lookups via the website UI applies on a different surface, not the API. The honest trade-off on Lite is data depth: it returns country/continent-level geolocation only.
- Does this migration guide cover ipinfo's older flat response format?
- No — the mapping and code sample on this page target ipinfo's current, nested Core API response (geo{} and as{} objects, plus is_* booleans). If your integration still reads the older flat city/region/loc/org fields, check ipinfo's data-types documentation for which shape your account returns before adapting this snippet.
- Does ipinfo's free tier allow commercial use?
- Yes — a commercial license is included on every plan, including the free Lite tier, per ipinfo's own pricing page (retrieved 2026-07-28).
- Can I download ipinfo's database instead of calling the API?
- Yes — ipinfo's comparison grid lists database downloads as available on every plan, including the free Lite tier, in CSV, JSON, MMDB and Parquet formats. The download product's own price isn't published; ipinfo's database page shows a contact-sales/get-a-quote flow instead of a listed figure.
- How current are the ipinfo figures on this page?
- Retrieved from ipinfo.io's own pricing page on 2026-07-28 and not re-verified live by this page — check the linked vendor page for the current figure before relying on it. myip's own numbers above are the exception: fetched live on every page load, so they never go stale.