Executive summary: Why engineering teams switch to ipscope
Choosing an IP intelligence provider in 2026 affects three critical layers of production infrastructure: routing and localization accuracy, fraud and anonymizer detection, and unit economics across API and self-hosted database deployments.
Legacy providers built their data pipelines when IPv4 blocks rarely crossed national borders and administrative allocation records matched physical router geography. Today, cloud operators lease /22 and /24 blocks across continents, commercial VPNs rotate residential proxy exits hourly, and data engineering teams require identical schemas across real-time edge APIs, local .mmdb binary trees, and columnar .parquet data lake tables.
ipscope was architected from the BGP table up to solve the structural blind spots of legacy providers:
- Separated physical vs. declared geolocation: Unlike MaxMind, IPLocate.io, ipgeolocation.io, and ipscanner.io (which return a single country field that frequently reflects stale registration paperwork or unverified geofeeds), ipscope returns
country_code,declared_country_code,physical_country_code, andis_virtual_locationon every lookup, backed by multi-vantage active RTT latency triangulation. - One canonical schema across API, MMDB, CSV, and Parquet: Every ipscope database build ships in
.mmdb,.csv.gz, and.parquetwith the exact same 6 field families (geo_country,geo_city,network,connection,anonymity,security_extensions) returned byGET /v1/ip/{ip}. - Self-serve modular database licensing without enterprise gatekeeping: While IPinfo.io gates full downloadable databases behind custom enterprise contracts starting around
$1,000+/moand MaxMind splits City, ISP, and Anonymous IP into separate expensive.mmdbfiles, ipscope offers transparent modular database pricing starting at$29/mo(or$279/mofor the Complete 6-block database). - No credit multipliers for security and VPN fields: Unlike credit-based APIs that charge 2x to 4x credits when enabling threat or proxy flags, 1 IP lookup equals 1 request on ipscope regardless of how many licensed field families you query.
Head-to-head feature and architecture matrix
The table below compares ipscope against MaxMind (GeoIP2), IPinfo.io, IPLocate.io, ipgeolocation.io, and ipscanner.io across the capabilities backend and security engineers evaluate in production:
| Capability | ipscope | MaxMind (GeoIP2) | IPinfo.io | IPLocate.io | ipgeolocation.io | ipscanner.io |
|---|---|---|---|---|---|---|
| Physical vs. declared country split | Yes (physical_country_code + declared_country_code + is_virtual_location) | No (single country field) | No (single country field) | No (single country field) | No (single country field) | No (single country field) |
| Active RTT triangulation | Yes (multi-vantage speed-of-light verification) | Partial (proprietary model, no split field) | Yes (active probing, single country output) | No (registration + geofeed aggregation) | No (registration + ISP feeds) | No (edge threat focus) |
| Downloadable formats included | MMDB, CSV.gz, Parquet (all 3 included) | MMDB, CSV (no native Parquet) | MMDB, CSV, Parquet (Enterprise tiers) | MMDB, CSV | CSV, MMDB (selected tiers) | None (API & edge worker focus) |
| Single unified MMDB file for all blocks | Yes (1 .mmdb or custom SKU mix) | No (separate City, ISP, Anonymous IP .mmdb files) | Paid Enterprise bundle | Yes (tier-dependent) | Separate Geo and Security DBs | N/A |
| VPN, Proxy, Tor & Hosting detection | Yes (is_vpn, is_proxy, is_tor_exit, is_hosting, anonymizer_type) | Requires separate GeoIP2 Anonymous IP SKU | Yes (Core/Plus tiers and above) | Yes (included across tiers) | Yes (Security plan / extra credits) | Yes (primary product focus) |
| Abuse velocity & scanner telemetry | Yes (abuse_velocity_score, known_attacker, is_scanner, is_bot) | Excluded from standard GeoIP2 DBs | Separate Abuse / Enterprise dataset | Basic threat flag | Threat score on higher tiers | Bot & signup gate rules |
| Batch API throughput | 100 IPs / request (POST /v1/ip/batch) + O(1) streaming SDKs | No native batch endpoint in standard GeoIP2 WS | Batch endpoint supported | Bulk lookup supported | Bulk lookup up to 50 IPs | Single IP / edge middleware |
| Official typed SDKs | 8 languages (Python, Node, Go, Rust, Java, .NET, Ruby, PHP) | 7 languages (MMDB readers + Web Service clients) | Official SDKs available | Community & core wrappers | Official wrappers | JS & edge middleware |
| Self-serve database starting price | $29/mo (modular) or $279/mo (Complete 6-block) | ~$100/mo to $1,100+/mo across split SKUs | ~$1,000+/mo (Enterprise DB contracts) | ~$100/mo+ | ~$150/mo+ per dataset | No offline database catalog |
Deep dive 1: ipscope vs. MaxMind (GeoIP2 and GeoLite2)
MaxMind created the .mmdb binary format and remains the default baseline in legacy stacks. However, engineering teams migrating off MaxMind GeoIP2 and GeoLite2 consistently cite three operational pain points:
1. Split .mmdb files and fragmented schemas
In MaxMind's catalog, city geolocation (GeoIP2-City.mmdb), ASN/ISP metadata (GeoIP2-ISP.mmdb), connection classification (GeoIP2-Connection-Type.mmdb), and VPN/proxy flags (GeoIP2-Anonymous-IP.mmdb) are distributed as separate binary files. To enrich a single incoming request with location, ASN, and VPN detection at the edge, your service must open, memory-map, and traverse three to four separate radix trees per lookup.
In ipscope, a single .mmdb file (or your custom-configured SKU) stores all 6 intelligence blocks in one unified binary radix tree. One O(prefix_length) pointer walk resolves geolocation, BGP origin ASN, connection type, and anonymizer telemetry in under 400 nanoseconds. Better yet, ipscope .mmdb artifacts adhere strictly to the open MMDB binary specification v2.0, meaning you can load an ipscope .mmdb file into your existing reader library with a one-line file path change.
import maxminddb
# Drop-in replacement: open a single unified ipscope MMDB file
with maxminddb.open_database("/var/lib/ipscope/ipscope-complete.mmdb") as reader:
record = reader.get("198.51.100.42")
# Single lookup resolves physical geo, BGP ASN, and VPN telemetry together
print(record["geo"]["physical_country_code"]) # "DE"
print(record["geo"]["declared_country_code"]) # "US"
print(record["network"]["asn"]) # 24940
print(record["security"]["is_vpn"]) # True2. Registration bias in GeoLite2 and slow geofeed correction
MaxMind GeoLite2 relies heavily on administrative allocation records and unverified operator geofeeds, resulting in widespread misclassifications whenever a US-registered cloud or CDN announces an IPv4 prefix out of a European or Asian datacenter. Even in paid GeoIP2, MaxMind outputs only one country.iso_code field, forcing your application to guess whether that country represents the legal registrant or the physical router.
ipscope exposes both dimensions explicitly (physical_country_code and declared_country_code) alongside is_virtual_location, allowing payment compliance systems and low-latency edge routers to make deterministic decisions.
3. Native Apache Parquet included at no extra cost
MaxMind distributes databases only in .mmdb and .csv. Data engineering teams running columnar data warehouses and analytical query engines must build and maintain custom ETL jobs to convert multi-gigabyte CSV archives into typed columnar tables. Every ipscope database subscription includes pre-compiled Zstandard-compressed .parquet files with integer ip_start_int / ip_end_int bounds for instant O(log N) range joins.
Deep dive 2: ipscope vs. IPinfo.io
IPinfo.io is a strong competitor known for its active measurement network and developer ergonomics. When comparing ipscope vs. IPinfo.io, the decisive differences center on data transparency, API plan granularity, and database accessibility:
- Database pricing accessibility (
$279/movs.$1,000+/mo): IPinfo.io positions its full downloadable databases (especially bundles including Privacy/VPN detection and Company data) as high-ticket enterprise contracts frequently starting at$1,000+/mowith annual commitments. ipscope makes every database SKU self-serve from day one: you can license the standalone Privacy & VPN database for$99/moor the Complete 6-block database (Geolocation + ASN + Company + Privacy + Abuse Velocity) for$279/moon a monthly build schedule ($419/mofor nightly daily builds). - Physical vs. declared country separation: While IPinfo uses active probing to select a single country code, it overwrites the declared registration country in the response. Security and compliance teams frequently need to know when a discrepancy exists (for example, an IP legally registered to an offshore entity but physically routed through a rack in Amsterdam). ipscope's
declared_country_code !== physical_country_codecheck surfaces this signal natively. - Predictable API quotas and wallet overages: IPinfo's mid-market plans step abruptly from Core (
~$49/mofor 150k requests) to Plus/Max (~$163+/mofor 250k requests). ipscope offers a$49/moStarter plan with 250,000 requests/mo, a$149/moGrowth plan with 1,000,000 requests/mo (including full Privacy & VPN detection), and a$399/moBusiness plan with 5,000,000 requests/mo and all 6 intelligence blocks, backed by a flat$0.10 per 1,000prepaid wallet overage rate so production traffic never hits a hard 429 wall.
Deep dive 3: ipscope vs. IPLocate.io
IPLocate.io offers a clean developer API with a generous daily free tier (1,000 req/day). However, as engineering teams scale into production fraud prevention, SIEM enrichment, and high-QPS edge routing, they encounter key differences between ipscope and IPLocate.io:
- Active RTT verification vs. passive feed aggregation: IPLocate.io primarily aggregates administrative allocation records, BGP routing tables, and published RFC 8805 geofeeds. When an operator publishes a spoofed or stale RFC 8805 geofeed (a common technique used by proxy providers to make datacenter IPs appear in residential metros), passive aggregators ingest the spoofed location directly. ipscope runs every geofeed claim through an automated multi-vantage ICMP/TCP RTT triangulation gate: if the speed-of-light latency floor from our nearest vantage probes contradicts the claimed city, ipscope overrides
physical_country_codewith the empirically measured router location and flagsis_virtual_location: true. - Abuse velocity and attacker telemetry: Beyond static boolean flags (
is_vpn,is_proxy), ipscope'ssecurity_extensionsblock tracks rolling 24-hour scanner and brute-force velocity (abuse_velocity_scorefrom0to100,known_attacker,is_scanner,is_bot, andlast_seen_hours_ago). - Columnar Parquet & Custom SKU Compilation: ipscope compiles custom database SKUs containing only the exact field families your service licenses, minimizing memory footprint on edge nodes while shipping
.mmdb,.csv.gz, and.parquetsimultaneously.
Deep dive 4: ipscope vs. ipgeolocation.io
ipgeolocation.io provides geolocation, astronomy, currency, and security endpoints. When backend architects evaluate ipscope vs. ipgeolocation.io, three structural differences stand out:
- No credit multipliers on security lookups: On ipgeolocation.io, querying standard geolocation costs 1 credit, but enabling security/threat detection or bulk enrichment can consume multiple credits per IP, multiplying your effective monthly cost. On ipscope, 1 IP address always equals 1 lookup unit (
$0.10 / 1Koverage), whether you requestgeo_countryalone or all 6 field families includinganonymityandsecurity_extensions. - BGP prefix and network hierarchy depth: ipscope treats BGP routing as a first-class primitive, returning the exact longest-prefix match (
matched_network),prefix_length, originasn,organization,allocation_status, and dedicated/v1/asn/{asn}and/v1/network/{cidr}endpoints. - Strict latency SLOs and constant-memory streaming SDKs: Instead of untyped REST wrappers, ipscope maintains 8 idiomatic, zero-dependency SDKs with bounded LRU caching, automatic jittered backoff, and
lookupStream()iterators capable of enriching 100,000+ IPs in constantO(1)memory.
Deep dive 5: ipscope vs. ipscanner.io
ipscanner.io is designed primarily as a website traffic filter, CMS plugin, and edge middleware gate for blocking bots and disposable signups. While useful for no-code site protection, ipscope serves a fundamentally broader infrastructure and data engineering scope:
- Full-stack data ownership (API + MMDB + CSV + Parquet): ipscanner.io is an API and edge-rule service without downloadable
.mmdbbinary databases or.parquetwarehouse datasets. If your architecture requires zero-latency (< 1 microsecond) in-process lookups inside Go, Rust, or Java microservices, or offline SQL enrichment in your data warehouse, ipscope provides the complete offline database artifact pipeline alongside its global Anycast API. - Granular schema for custom risk engines: Rather than coupling IP intelligence to opinionated website-blocking rules, ipscope gives your fraud, FinTech, or ad-verification engine raw, calibrated primitives:
geo.confidence,security.confidence,security.anonymizer_type,connection.connection_type, andsecurity_extensions.abuse_velocity_score.
Pricing and total cost of ownership (TCO) comparison
Below is a realistic TCO comparison for two common production workloads:
| Workload Scenario | ipscope | MaxMind (GeoIP2) | IPinfo.io | IPLocate.io | ipgeolocation.io |
|---|---|---|---|---|---|
| Scenario A: 1M API lookups/mo with City Geo + ASN + VPN/Proxy detection | $149/mo (Growth plan: 1M lookups, 100 req/s, Geo + ASN + Company + Privacy included) | ~$300+/mo in GeoIP2 Insights web service credits | ~$163 to $250+/mo (Plus/Max tier required for full privacy + 1M volume) | ~$99 to $150/mo | ~$99 to $199/mo (higher with security credit multiplier) |
| Scenario B: Self-hosted MMDB + Parquet database with City Geo + ASN + VPN/Proxy | $279/mo (Complete 6-block DB, monthly updates, MMDB + CSV + Parquet included) | ~$650+/mo (requires buying GeoIP2 City + GeoIP2 ISP + GeoIP2 Anonymous IP separately; no Parquet) | ~$1,000+/mo (Enterprise custom database contract) | ~$250 to $400+/mo (no native Parquet) | Separate Geo + Security DB licenses required |
Migrating to ipscope in under 10 minutes
Whether you are replacing a REST API integration or swapping out a local .mmdb file, migrating to ipscope requires minimal code changes:
import { IpScopeClient } from '@ipscope/sdk-node';
const client = new IpScopeClient({
apiKey: process.env.IPSCOPE_API_KEY!,
cacheMaxEntries: 10_000,
cacheTtlMs: 60_000,
});
// Single lookup with physical vs. declared country, ASN, and VPN telemetry
const res = await client.lookupIp('198.51.100.7');
if (res.security.is_vpn || res.geo.is_virtual_location) {
console.log({
ip: res.ip,
declaredCountry: res.geo.declared_country_code,
physicalCountry: res.geo.physical_country_code,
asn: res.network.asn,
anonymizer: res.security.anonymizer_type,
abuseScore: res.security_extensions?.abuse_velocity_score,
});
}Frequently asked questions (FAQ)
Can ipscope .mmdb files be opened with standard MMDB readers?
Yes. Every ipscope .mmdb database is compiled strictly to the open MMDB binary specification v2.0. You can open ipscope .mmdb files using standard open-source MMDB readers in Python, Node.js, Go, Rust, Java, C, or NGINX without changing your reader library.
Why does ipscope return three country fields instead of one?
Because declared network registration (declared_country_code) and physical router location (physical_country_code) disagree on millions of leased and anycast IPv4/IPv6 prefixes. Returning country_code (best operational country), declared_country_code, physical_country_code, and is_virtual_location gives compliance, tax, and low-latency routing engines complete visibility.
Which provider is best for offline SIEM and data warehouse enrichment?
ipscope is purpose-built for data engineering and SIEM workloads because every database subscription includes Zstandard-compressed Apache Parquet (.parquet), compressed CSV (.csv.gz), and MMDB (.mmdb) artifacts at no additional format fee, complete with pre-computed integer IP bounds for fast range joins in columnar SQL engines and data warehouses.