Every IP range a company owns, looked up by its domain.
Each IPv4 and IPv6 range an organization owns or uses, keyed by its own domain, one CIDR per row, with the name and country registered for the range: the company itself, or one of its subsidiaries or offices, the small blocks its providers assigned to it included. A second file lists the domains that redirect to a company's own, so a brand's other names lead to its ranges too. Rebuilt daily.
Schema at a glance.
See documentation →The schema and metadata are in the docs. It is published as CSVGZ.
| range | domain | name | country |
|---|---|---|---|
| 56.155.0.0/16 | amazon.com | Amazon Data Services Osaka | JP |
| 2001:1890:1c12:9600::/55 | apple.com | APPLE INC | US |
| 139.15.0.0/16 | bosch.com | Robert Bosch Gesellschaft mit Beschraenkter Haftung | DE |
| 170.149.0.0/17 | nytimes.com | The New York Times Company | US |
| 97.67.74.80/29 | nytimes.com | The New York Times Inc | US |
Domain IP Ranges Alias
| domain | redirects_to |
|---|---|
| a2sb.com | firstmerchants.com |
| chobanihealthprofessionals.com | chobani.com |
| choicelinx.com | cigna.com |
| sxrewards.com | sixt.com |
| times.com | nytimes.com |
Downloading it from code.
Database API reference →One call gets you the current Domain IP Ranges 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, and checksums() returns the published digests to verify it against.
download()downloadUrl()downloadBytes()metadata()checksums()import osfrom internetdata import InternetDataclient = InternetData(os.environ["INTERNETDATA_API_KEY"])# what is in today's build, without moving the filemeta = client.database.metadata("domain_ip_ranges_v1")client.database.download("domain_ip_ranges_v1", "csvgz", "./domain_ip_ranges_v1.csv.gz")sums = client.database.checksums("domain_ip_ranges_v1", "csvgz")print(meta.updated, meta.entries, sums["sha256"])
Getting your hands on it.
Teams join Domain IP Ranges against traffic they already log, inside their own infrastructure, and never send an address anywhere to get an answer.
Attack surface mapping
Start from a company's domain and list every range it owns, the blocks its ISPs assigned to it included, before you scope a test or a scan.
Partner allowlists
Allow or block a vendor's or a partner's whole network by its domain, rather than chasing its addresses one at a time.
Company research
See how much address space a company or a prospect holds, where it's registered, and which subsidiaries hold the rest.
An official client for every major language.
All SDKs on GitHub →Twelve official clients for the languages you ship in, each wrapping the database endpoints: list what you're licensed for, poll a build, follow the download redirect and verify what landed. Install commands are in the docs.
What does a row tell us?
One CIDR the organization behind domain owns or uses, with the name and country registered for it: the company itself, or a subsidiary or an office of it under its own name.
Which ranges does a company get?
Every range IP Company gives it: its own allocations and the blocks its providers assigned to it. No address is in two rows, so an ISP's list leaves out every block it assigned to a customer, which is why a large ISP's ranges come in thousands of pieces.
What does the alias file hold?
Domains whose home page redirects to a company's own, such as times.com to nytimes.com, each with the domain to look its ranges up by. A domain with ranges of its own can be an alias too, as a brand acquired by another often is.
How is a range written?
As a CIDR. Adjacent ranges of one company merge where the name and country match, and a range whose ends don't fall on one prefix boundary is split into the fewest CIDRs that cover it exactly.
How often is it rebuilt?
Daily. The metadata call answers when the current build landed and how many rows it holds, before you fetch it.
Which formats does a build ship in?
Gzipped CSV. It's keyed by domain, so there is no address lookup to build.
How do we get it?
Under a Standard or Redistribution license, quoted per database. Get a quote names Domain IP Ranges to us, and Request evaluation puts the full current build in your hands to test first. Download sample gets you rows from it now.
Is there a lookup API?
No. You download Domain IP Ranges and query it in your own systems, so nothing is metered and no address leaves them. Each build comes from the database API, or to your webhook or your own storage.
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.
Test the real build first.
An evaluation license puts a full current build in your hands, with no sampling, so you can measure it against your own traffic before anyone talks about terms.