Edge networks, so delivery is not mistaken for fraud.
Content delivery and edge ranges. Traffic arriving through an edge is infrastructure doing its job, and shouldn't score like an anonymizer.
Schema
See documentation →Published as CSVGZ and MMDB. Every column is described in the docs.
| start_ip | end_ip | provider | confidence | last_seen |
|---|---|---|---|---|
| 2a03:90c0:4c1:2801::4 | 2a03:90c0:4c1:2801::8 | gcore | high | 2026-09-17 |
| 109.61.39.85 | 109.61.39.85 | gcore | high | 2026-09-17 |
| 92.223.63.8 | 92.223.63.11 | gcore | high | 2026-09-17 |
| 2a01:c9c0:c004:100::3 | 2a01:c9c0:c004:100::3 | gcore | high | 2026-09-17 |
| 92.223.118.214 | 92.223.118.222 | gcore | high | 2026-09-17 |
The operators behind the ids.
provider is an id that holds from build to build. CDN Provider resolves each one to the network's name and homepage, and whether we track it. Join it on provider.
| id | name | url | active | note |
|---|---|---|---|---|
| cloudflare | Cloudflare | https://www.cloudflare.com/ | t | |
| akamai | Akamai | https://www.akamai.com/ | t | |
| azure | Microsoft Azure CDN | https://azure.microsoft.com/products/cdn | t | Azure Front Door / Azure CDN edge. |
Downloading it from code.
Database API reference →One call gets you the current CDN IP build. Every official client wraps it three ways: straight to disk, a time-limited link you hand to your own runner, or bytes in memory. A file written to disk lands only once the whole transfer has arrived, and checksums() returns the published digests to verify it against.
download()downloadUrl()downloadBytes()metadata()checksums()What it's used for
Three decisions CDN IP is bought for, and what each needs from the data rather than from a score.
Stop scoring your own edge
If your traffic is fronted by a CDN, those addresses will appear constantly. Flagging them keeps them out of your risk signals.
Tell delivery from disguise
An edge network and a proxy network look similar from a single address. The distinction is the point of this dataset.
Attributed to the network
Provider names the edge operator so you can allow specific ones.
Official SDKs
All SDKs on GitHub →Twelve official clients, each wrapping the database endpoints as well as the lookup: list what you're licensed for, poll a build, follow the download redirect. Install commands are in the docs.
Common questions
Why allowlist CDN traffic?
A request that leaves through a CDN edge carries the edge's address, not its client's. Treated as ordinary traffic, one edge looks like a single, very busy user.
How precise are the ranges?
As precise as the evidence. A provider's published list, or a network that runs nothing but its edges, goes in whole; elsewhere, only the addresses seen serving as edges, down to single IPs.
Are provider ids stable?
Yes, across builds. The CDN Provider catalog below names each one and links its homepage.
How often is it rebuilt?
Daily. The metadata call says when the current build landed and how many rows it holds, so you fetch only a new one.
Which formats does it ship in?
Gzipped CSV and MMDB, both cut from the same build. The MMDB opens in any MaxMind DB reader, so lookups run in memory on your own servers.
How do we get it?
Under a database license, agreed per dataset and bundled with Enterprise plans. Request access names CDN IP to us, and once it's licensed it downloads from the console, the database API or any official client, or each new build is announced to your webhook, or written to your AWS S3 or S3-compatible storage, Google Cloud Storage, Azure Blob Storage, or an SFTP or FTPS server. Download sample gets you rows from the current build first.
Is it the same data the API answers from?
Yes. A lookup's is_cdn comes from these builds, so the file and the API agree on an address.
What if a row looks wrong?
Send it to us and we'll tell you what we hold on it, when we last saw it and how. Corrections land in the next build.
Start without signing up.
Paste it into a terminal. No account needed. 1,000 lookups a day per address, answering ip and is_vpn.
{"ip": "146.70.116.130","is_vpn": true}