chandan@dubey:~/blog/proweblookcat edge-ip-api-report.md

public build report · june 2026

Building ProWebLook's edge IP API.

I recently shipped an edge-first IP lookup API for ProWebLook, exposed at ipapi.proweblook.com. The goal was simple: make IP intelligence feel instant while keeping the existing billing, API-key, and user-account model intact. In the first published benchmark set, ProWebLook ranked #1 by p95 latency among the measured providers.

focus edge IP intelligence

Low-latency IP lookups served near the requester instead of forcing every call through the origin app.

stack Cloudflare + PHP origin

Workers and KV at the edge, with the existing CodeIgniter/MySQL application kept as the source of truth.

principle fast path, private core

Public endpoint for lookups; signed internal sync for usage. No raw API keys in the edge store.

The problem

ProWebLook already had IP tooling, but an IP API has to be quick enough to sit inside other systems: fraud checks, request routing, enrichment, analytics, logging, and security filters. If every lookup has to travel back to the origin app, the call picks up distance, app boot time, database pressure, and quota bookkeeping before it can answer a simple question.

For this build I moved the lookup path to the edge. The PHP app still owns accounts, billing, admin flows, and user state. The request asking "what is this IP?" is handled close to the caller.

How it works

The public API runs behind ipapi.proweblook.com. A Cloudflare Worker validates the API key by hash, serves the lookup from edge storage, shapes the JSON response, and records usage without waiting for a MySQL write to finish.

  • Worker at the edge: request validation, lookup, and response formatting stay on the fast path.
  • KV-backed key state: the edge stores API-key hashes and quota metadata, not plaintext keys.
  • Origin as source of truth: the existing ProWebLook app still owns users, admin key rotation, and balances.
  • Signed usage sync: usage goes back to the origin through a server-to-server signed endpoint.
  • Async quota updates: lookup latency does not depend on the origin database write.

Production work

The real work was not just deploying a Worker. The product already had users and API keys, so I had to connect the existing account system with the new edge layer without changing the way customers use the API.

Existing keys were backfilled into Cloudflare KV as hashed records. New key rotations sync to the edge store, and lookup usage is reconciled back to the origin asynchronously. The important pattern is simple: keep account truth in the app, move the read-heavy lookup path closer to the user.

Benchmarking the edge path

I did not want to publish a speed claim from one lucky curl response. The benchmark uses a fixed IP list, one runner, one timeout, warmup requests, and the same summary numbers for every provider.

I measured two ProWebLook paths separately: the normal public endpoint at /v1/ip and the no-fallback benchmark endpoint at /v1/benchmark/ip. The first is the real product path. The second isolates the edge lookup path.

  • Latency: p50, p90, p95, p99, average, min, max, and per-IP breakdowns.
  • Reliability: success rate, HTTP errors, provider-level errors, and timeouts.
  • Payload cost: median response body size, because large responses still affect real integrations.
  • Data parity: normalized country, region, city, latitude, longitude, timezone, ASN, and ISP fields.
  • Run setup: warmups are excluded, provider order is shuffled, and every request uses the same timeout.

Benchmark result: #1 by p95

On July 1, 2026, I ran the benchmark from my local machine against four public IPs: 194.25.36.25, 8.8.8.8, 1.1.1.1, and 208.67.222.222. Each provider got two warmup requests per IP and five measured requests per IP. Warmups were not counted in the table.

claim ProWebLook ranked #1 by p95 latency in this tested provider set.

The production endpoint finished at 266.00ms p95 with 100% success. The dedicated edge benchmark endpoint had the best median latency at 62.36ms p50.

Rank Provider Success p50 p95 p99 Avg Failures
#1 ProWebLook Edge IP API 100% 75.24ms 266.00ms 276.97ms 101.93ms 0
#2 ProWebLook Edge Benchmark 100% 62.36ms 273.17ms 299.41ms 100.02ms 0
#3 IPLocate.io 100% 242.16ms 393.15ms 436.67ms 227.81ms 0
#4 IP-API.com 100% 269.02ms 536.33ms 580.40ms 323.05ms 0
#5 IP2Location.io 100% 372.82ms 729.64ms 808.85ms 465.09ms 0
#6 IPinfo 100% 327.56ms 1226.84ms 1488.20ms 480.96ms 0
Not ranked IPWHOIS.io 75% 83.14ms 457.27ms 985.07ms 167.08ms 5 timeouts

Ranking rule: a provider had to return a successful response for every measured request. IPWHOIS.io had some fast responses, but five requests timed out, so I kept it in the table and did not rank it. ipapi.co returned HTTP 429 from this runner during a separate smoke test, so it stays in the competitor list until I can test it with usable quota.

Benchmark process

The claim is tied to this run, this provider set, and this ranking rule. I am calling ProWebLook #1 here because it had the lowest p95 among providers that completed every measured request.

  • Command: npm run benchmark:ipapi -- --providers proweblook,proweblook-benchmark,iplocate,ip-api,ipwhois,ip2location,ipinfo --runs 5 --warmups 2 --pause 450
  • Runner: local development machine on July 1, 2026 at 09:54 IST.
  • Timeout: each request had an 8000ms ceiling.
  • Samples: four IPs, five measured requests per IP, twenty measured requests per provider.
  • Warmups: two warmup requests per IP were sent first and excluded from published stats.
  • Order: provider order was shuffled per run to reduce ordering bias.
  • Keys: API keys were loaded from environment variables and were not written into the output.
  • Ranking: ranked providers needed 100% success, then the lowest p95 won.

Competitors tested

This first run uses providers I could call directly from the harness. Some commercial providers still need paid benchmark keys before they can be included in the ranked table.

Provider Why it belongs Benchmark key status
IPinfo One of the most recognized developer IP intelligence APIs. IPINFO_TOKEN optional, preferred for fair runs.
MaxMind GeoIP2 Industry reference point for GeoIP data and commercial accuracy. MAXMIND_ACCOUNT_ID + MAXMIND_LICENSE_KEY needed.
IP2Location.io Commercial geo, proxy, and network data with a public limited path. IP2LOCATION_API_KEY optional, preferred.
DB-IP Long-running IP geolocation database and API provider. DBIP_API_KEY needed.
ipdata.co Geo, ASN, and threat intelligence API used in enrichment workflows. IPDATA_API_KEY needed.
IPGeolocation.io Broad field coverage across location, ASN, company, and security data. IPGEOLOCATION_API_KEY needed.
Ipregistry Production-focused geo and threat API with company and carrier fields. IPREGISTRY_API_KEY needed.
BigDataCloud Geo API with confidence and risk-oriented data products. BIGDATACLOUD_API_KEY needed.
Abstract Popular general API provider with a dedicated IP geolocation product. ABSTRACT_API_KEY needed.
ipstack APILayer-backed geolocation API with large developer awareness. IPSTACK_ACCESS_KEY needed.
ipapi.com APILayer IP API with location, timezone, currency, ISP, and security fields. IPAPI_COM_ACCESS_KEY needed.
IP-API.com Huge free baseline that many developers already know. No key for the free endpoint.
ipapi.co Simple no-key REST baseline with broad field coverage. No key for basic calls.
IPWHOIS.io Free endpoint with a clean JSON response and threat-capable paid plans. No key for the free endpoint.
IPLocate.io Newer geo, ASN, privacy, and threat data provider worth tracking. IPLOCATE_API_KEY optional, preferred.