All Domain Names Feed
Download Every Registered Domain in the Index as One File.
One call to the All Domain Names Feed returns the metadata of the current all-domains file and a pre-signed link to download it. Load the file once, and questions that span all known domains run on your infrastructure instead of one request per name.
Request
GET /
all-domains
Download
all-domains.csvto your storagestreamed to disk, not into memory
Check
lines checked against
line_count
Read the Metadata Before the File.
The response describes the file before you fetch it. A job can read the update time and the size, then decide whether to download at all.
| Parameter | Type | Description | |
|---|---|---|---|
file_ | string | Optional | json (default) or csv. |
Request
curl "https://api.deepinfo.com/v1/feeds/all-domains?file_format=csv" \
-H "apikey: YOUR_API_KEY"import requests
meta = requests.get(
"https://api.deepinfo.com/v1/feeds/all-domains",
params={"file_format": "csv"},
headers={"apikey": "YOUR_API_KEY"},
).json()
print(meta["file_update_time"], meta["file_size"], meta["line_count"])const r = await fetch(
'https://api.deepinfo.com/v1/feeds/all-domains?file_format=csv',
{ headers: { apikey: 'YOUR_API_KEY' } }
)
const meta = await r.json()
console.log(meta.file_update_time, meta.file_size, meta.line_count)
Response
{
"download_url": "https://…/<pre-signed link, valid for 1 hour>",
"file_format": "csv",
"file_size": …,
"file_update_time": "2026-09-22T10:00:00Z",
"line_count": …
}
Download Only When the File Changes.
The full file is large, so treat it like a snapshot you refresh, not a page you poll. Store the file_ you loaded, and skip the download when the endpoint reports it again.
Stream the file to disk rather than into memory. Check file_ against free space before you start, and line_ against what you wrote when you finish.
import pathlib, requests
API = "https://api.deepinfo.com/v1"
state = pathlib.Path("all-domains.updated")
meta = requests.get(
f"{API}/feeds/all-domains",
params={"file_format": "csv"},
headers={"apikey": "YOUR_API_KEY"},
).json()
if state.exists() and state.read_text() == meta["file_update_time"]:
raise SystemExit("unchanged")
with requests.get(meta["download_url"], stream=True) as r:
r.raise_for_status()
with open("all-domains.csv", "wb") as out:
for chunk in r.iter_content(chunk_size=1 << 20):
out.write(chunk)
state.write_text(meta["file_update_time"])
Work That Needs All Domains at Once.
Brand Variants at Scale
Run your own matching over all registered names, review the candidates, and send the confirmed lookalikes to your takedown process.
Domain Research
Count, cluster and compare names across TLDs locally, with no request budget in the way.
Threat Hunting
Test a naming hypothesis against the full list before you spend lookups on the matches.
Inventory Checks
Match the list against your company and product names to find registrations that may be yours and are missing from your inventory, then confirm ownership with WHOIS.
See This Data at Work in the Deepinfo Platform
Brand Risk Protection matches these newly seen domains against your brand names, down to letters from other alphabets, and keeps the evidence for a takedown.
Questions About All Domain Names Feed
Does the file include subdomains?
No. This feed covers registered domains. Subdomains have their own full file, the All Subdomains feed.
How do we get WHOIS, DNS or certificate data for the domains in the file?
Use the file to decide which names matter, then call Domain Detail for the full record of each, or the individual lookups for one layer at a time.
How do we keep up with changes between full files?
Pair the full file with the daily feeds for registered, updated and deleted domains. Each covers the last day.
How is the feed priced?
Data feeds are priced on their own, by volume and frequency, separately from the Deepinfo Platform. See Data & API pricing.
Can we use the file inside our own product?
How the data can be used and shown in your product is part of the agreement. Talk to the data team about your case.
Load All Domains Into Your Stack.
We set up access to the feed and walk your team through the file before you build on it.