myip as a MaxMind Alternative

Three sourced tables — GeoLite2's free database, GeoIP2's per-query web services, and GeoIP2's downloadable-database subscriptions — a real field-by-field migration snippet from MaxMind's GeoIP2 web-service response to myip's, and an honest look at where MaxMind is genuinely ahead — not just a sales pitch.

MaxMind isn't one product: GeoLite2 is a free downloadable database with EULA obligations, GeoIP2 is a family of paid per-query web services, and MaxMind also sells GeoIP2 as downloadable-database subscriptions billed annually, monthly or one-time. A single price table can't represent all three honestly, so this page keeps them separate. Where myip differs: one API call, metered per unique IP per day, bundling RDAP registry data (fetched from the registry and cached) with geolocation and privacy/threat/fraud signals — no downloadable database, no offline mode. The comparison below is meant to help you pick correctly, including away from us.

MaxMind data retrieved on 2026-07-28 from MaxMind's GeoLite2 developer page, its GeoIP web-services pricing page, and its GeoIP2 database-subscriptions page. Prices and limits change without notice — verify against those pages before relying on a figure.

GeoLite2 — the free downloadable database

Reproduced from MaxMind's own GeoLite2 developer page and EULA. GeoLite2 ships as three separate downloadable databases plus a limited free web service; using it carries EULA obligations, not just a download link.

Field Value
Databases offered GeoLite Country database, GeoLite City database, GeoLite ASN database.
Account required Yes — a MaxMind account plus a generated license key.
Download limit 30 database downloads per day.
Free web-service limit 1,000 lookups per day, per service.
Accuracy vs. paid data MaxMind's own page: “The free GeoLite City is considerably less accurate than the paid GeoIP City data, and is not recommended for commercial use cases.”
Attribution Mandatory under the GeoLite2 EULA: “You must provide attribution of your use to MaxMind.”
Redistribution Requires MaxMind's prior written consent before disclosing the data to a third party.

MaxMind's developer page states: “The GeoLite End User License Agreement requires all GeoLite users to keep their data up-to-date” (developer page). Separately, our reading of the EULA text itself found that it requires destruction of old versions within 30 days of an update being released, but did not find a restriction on using data older than 30 days or a requirement to keep data current (EULA). We reproduce both readings rather than resolve the apparent conflict ourselves.

GeoIP2 web services — priced per query

MaxMind's paid GeoIP2 web services are billed pay-as-you-go, per query, in USD. Reproduced from MaxMind's own GeoIP web-services pricing page.

Service Price
Country service $0.0001 per query
City Plus service $0.0003 per query
Insights service $0.002 per query
Above an estimated $2,500/mo of queries Quote-based — MaxMind: “If you estimate your volume of queries to be over $2,500 a month, contact us to discuss rates.”

See MaxMind's GeoIP web-services pricing page for current figures and credit-purchase details.

GeoIP2 downloadable-database subscriptions

MaxMind also sells the same GeoIP2 data as downloadable database files, billed annually, monthly or one-time. Reproduced from MaxMind's own GeoIP2 databases page; each cell keeps the vendor's own qualifier intact rather than reducing it to a single figure.

Database Annual Monthly One-time
GeoIP Country $34.83 /month Billed $418 annually $38.00 per month $38.00 1 month access
GeoIP City $135.66 /month Billed $1628 annually $148.00 per month $148.00 1 month access
City by Continent $55.00 /month Billed $660 annually $60.00 per month $60.00 1 month access
GeoIP ISP $44.91 /month Billed $539 annually $49.00 per month $49.00 1 month access
GeoIP Domain Name $34.83 /month Billed $418 annually $38.00 per month $38.00 1 month access
GeoIP Connection Type $125.58 /month Billed $1507 annually $137.00 per month $137.00 1 month access

MaxMind's own page: “Use in support of a commercial product requires the purchase of a commercial license.”

See MaxMind's GeoIP2 databases page for current prices.

For reference: myip's own numbers (live)

Free tier
Cheapest paid plan

Migrating from MaxMind's GeoIP2 web service

MaxMind's GeoIP2 web-service response documentation names the top-level objects and fields below (city, continent, country, location, postal, registered_country, represented_country, subdivisions, traits, anonymizer, maxmind), but MaxMind's own page does not reproduce the full verbatim JSON per service tier. The response shape below is illustrative — built strictly from those documented field names with example values, not a copied vendor example — so re-open MaxMind's own documentation before depending on exact nesting or on which fields belong to which service tier (Country / City Plus / Insights).

One nuance worth knowing: is_anonymous, is_anonymous_vpn, is_hosting_provider, is_public_proxy, is_residential_proxy and is_tor_exit_node live in the dedicated anonymizer response object — read them from there.

GeoIP2 web-service response — illustrative shape
{
  "ip_address": "203.0.113.7",
  "city": { "geoname_id": 9999999, "names": { "en": "Example City" }, "confidence": 60 },
  "country": { "iso_code": "US", "names": { "en": "United States" }, "is_in_european_union": false },
  "location": { "latitude": 12.3456, "longitude": -65.4321, "accuracy_radius": 100, "time_zone": "Etc/UTC" },
  "postal": { "code": "00000", "confidence": 20 },
  "traits": {
    "ip_address": "203.0.113.7",
    "network": "203.0.113.0/24",
    "autonomous_system_number": 64512,
    "autonomous_system_organization": "EXAMPLE-AS",
    "isp": "Example ISP",
    "organization": "Example Org",
    "connection_type": "Example",
    "domain": "example.com",
    "user_type": "example",
    "is_anycast": false
  },
  "anonymizer": {
    "is_anonymous": false,
    "is_anonymous_vpn": false,
    "is_hosting_provider": true,
    "is_public_proxy": false,
    "is_residential_proxy": false,
    "is_tor_exit_node": false,
    "confidence": 99
  }
}

Field by field, the closest myip v2 equivalents (the six anonymizer booleans map from anonymizer):

MaxMind field myip v2 field Note
ip_address ip Same string, top level on both.
city.geoname_id geo.geonameId Both draw on the public GeoNames gazetteer, but via different lookup paths (MaxMind's binary DB vs myip's string-match resolver) — don't assume identical ids for the same location.
city.names geo.city MaxMind's names object carries per-language variants; myip returns a single city string only.
country.iso_code geo.countryCode Direct match, same ISO 3166-1 alpha-2 code.
country.names geo.countryName Direct match (English name).
country.is_in_european_union geo.isEu Direct match, both booleans.
location.latitude / location.longitude geo.lat / geo.lon Direct match; myip's are nullable when unknown.
location.time_zone geo.timezone Direct match, IANA zone name.
postal.code geo.postal Field exists on myip but is always empty today — its geo source carries no postal data yet.
traits.autonomous_system_number network.asn Same AS holder number; MaxMind returns a bare integer, myip an "ASxxxx"-style string.
traits.autonomous_system_organization network.asName Both name the AS holder; sourced differently (Team Cymru vs MaxMind's own database).
traits.domain network.asnDomain Populated only when the network group is requested and your tier includes it; null otherwise.
traits.isp network.asnOrg myip's offline ISP/org name; populated only when the network group is requested.
traits.connection_type network.classification.type Both classify the connection, 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.
traits.network network.prefix Both name the IP's announced block, but from different sources (MaxMind's database aggregation vs myip's Team Cymru BGP-observed prefix) — not guaranteed identical.
traits.is_anycast flags.isAnycast Direct match, same topology signal.
anonymizer.is_anonymous privacy.isAnonymous Both booleans; myip's is a computed OR of its own Tor/VPN/proxy signals, each best-effort.
anonymizer.is_anonymous_vpn privacy.isVpn Both booleans, but myip's is a coarse hosting/datacenter-classification heuristic, not a VPN-specific database match.
anonymizer.is_hosting_provider network.classification.type No matching myip boolean — test for equality against "hosting"/"datacenter" instead of reading a flag.
anonymizer.is_public_proxy privacy.isProxy Both booleans, but the underlying detection differs (MaxMind's public-proxy database vs myip's IPFire libloc anonymous-proxy network flag).
anonymizer.is_residential_proxy privacy.isResidentialProxy A known gap on myip's side — it has no data source for this signal and always reports false today.
anonymizer.is_tor_exit_node privacy.isTor Both booleans; myip's degrades to false when its own Tor matcher is disabled.
maxmind.queries_remaining – No 1:1 myip field — myip instead exposes remaining budget via the top-level plan.groups[].perDay/perMin/topupRemaining fields.
JavaScript — mapping function
// MaxMind GeoIP2 web-service response -> myip v2 field shape.
// is_anonymous/is_anonymous_vpn/is_hosting_provider/is_public_proxy/
// is_residential_proxy/is_tor_exit_node live in the "anonymizer" object.
function mapMaxMindGeoIP2ToMyip(mm) {
  return {
    ip: mm.ip_address,
    geo: {
      countryCode: mm.country.iso_code,
      countryName: mm.country.names.en,
      isEu: mm.country.is_in_european_union,
      city: mm.city.names.en,
      geonameId: mm.city.geoname_id,
      postal: mm.postal.code,
      timezone: mm.location.time_zone,
      lat: mm.location.latitude,
      lon: mm.location.longitude,
    },
    network: {
      asn: mm.traits.autonomous_system_number,
      asName: mm.traits.autonomous_system_organization,
      asnDomain: mm.traits.domain,
      asnOrg: mm.traits.isp,
      prefix: mm.traits.network,
      // MaxMind's connection_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: mm.traits.connection_type,
    },
    privacy: {
      isAnonymous: mm.anonymizer.is_anonymous,
      isVpn: mm.anonymizer.is_anonymous_vpn,
      isProxy: mm.anonymizer.is_public_proxy,
      isResidentialProxy: mm.anonymizer.is_residential_proxy,
      isTor: mm.anonymizer.is_tor_exit_node,
    },
    flags: {
      isAnycast: mm.traits.is_anycast,
      // is_hosting_provider has no 1:1 myip boolean — see
      // network.classification.type above instead.
    },
  };
}

Where MaxMind has the edge

To be fair about our own limits

See myip's current numbers for yourself

Frequently asked questions

Is MaxMind's free GeoLite2 database safe to use commercially?
Not clearly. MaxMind's own developer page calls the free GeoLite City data considerably less accurate than its paid data and "not recommended for commercial use cases." Attribution to MaxMind is mandatory regardless, and redistribution needs MaxMind's prior written consent.
What's the difference between GeoLite2 and GeoIP2?
GeoLite2 is MaxMind's free downloadable database (Country/City/ASN) plus a limited free web service, under EULA obligations including mandatory attribution. GeoIP2 is the paid product family — per-query web services (Country/City Plus/Insights) and separate downloadable-database subscriptions — and using it in a commercial product requires purchasing a commercial license.
How much does MaxMind's GeoIP2 web service cost per query?
$0.0001 per query for the Country service, $0.0003 for City Plus, and $0.002 for Insights, per MaxMind's own pricing page. Above an estimated $2,500/mo of query volume, MaxMind asks you to contact them for a custom quote instead of self-serve pricing.
Where do MaxMind's anonymizer booleans live in the GeoIP2 web-service response?
MaxMind's GeoIP2 web-service response documentation places is_anonymous, is_anonymous_vpn, is_hosting_provider, is_public_proxy, is_residential_proxy and is_tor_exit_node in a dedicated anonymizer object. Read them from there.
How current are the MaxMind figures on this page?
Retrieved from MaxMind's own developer and pricing pages on 2026-07-28 and not re-verified live by this page — check the linked vendor pages 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.