Provide current and historical ownership information on domains / IPs. Identify all connections between domains, registrants, registrars, and DNS servers.
Look into all current and historical DNS / IP connections between domains and A, MX, NS, and other records. Monitor suspicious changes to DNS records.
Get detailed context on an IP address, including its user’s geolocation, time zone, connected domains, connection type, IP range, ASN, and other network ownership details.
Access our web-based solution to dig into and monitor all domain events of interest.
Get access to a web-based enterprise-grade solution to search and monitor domain registrations and ownership details for branded terms, fuzzy matches, registrants of interest, and more.
Independent, evidence-based DNS and abuse intelligence for applicants, advisors, governments, and counsel participating in the ICANN 2026 New gTLD Program.
Predictive threat intelligence is your best first line of defense. Subscribe to the feeds to strengthen your cybersecurity posture. Contact us today for more information.
Unlock integrated intelligence on Internet properties and their ownership, infrastructure, and other attributes.
Our complete set of domain, IP, and DNS intelligence available via API calls as an annual subscription with predictable pricing.
Offers complete access to WHOIS, IP, DNS, and subdomain data for product enrichment, threat hunting and more.
Uncover entire attack surfaces with this API to embed asset discovery, vulnerability scanning, and technology metadata into your platform. Now in early access.
Talk to our APIs using LLMs. Connect your preferred LLM to WhoisXML API and simply chat about WHOIS, DNS, threat intelligence, and more.
I’m your Domain Intelligence Assistant. I make it easy to explore WHOIS, DNS, and threat data from WhoisXML API — I’m cloud-based, fast, and always ready to help.
A custom GPT for WHOIS, DNS, IP, and threat intelligence research. Connects ChatGPT directly to WhoisXML API to enable fast, conversational investigations and domain insights.
Discover what you really pay for when buying commercial Internet intelligence data.
Download nowExplore sample files from the Chronicle database.
Samples contain up to 2,000 records. Full datasets include billions of historical records with real-time updates and advanced filtering.
| Subscription type | Description |
|---|---|
| Daily incremental updates | Changes in DNS records from the last day. Files are in the following format, in the daily_datafeed subdirectory:
- "daily_datafeed/dns_database.%DATE%.daily.csv.gz" - "daily_datafeed/dns_aaaa_database.%DATE%.daily.csv.gz" - "daily_datafeed/dns_mx_database.%DATE%.daily.csv.gz" - "daily_datafeed/dns_ns_database.%DATE%.daily.csv.gz", - "daily_datafeed/dns_txt_database.%DATE%.daily.csv.gz", - "daily_datafeed/dns_cname_database.%DATE%.daily.csv.gz", - "daily_datafeed/dns_soa_database.%DATE%.daily.csv.gz", - "daily_datafeed/dns_ptr_database.%DATE%.daily.csv.gz", e.g. "daily_datafeed/dns_database.2021-12-01.daily.csv.gz". |
| Weekly incremental updates | Changes in DNS records from the last week. Files are in the following format:
- "dns_database.%DATE%.weekly.diff.csv.gz" - "dns_aaaa_database.%DATE%.weekly.diff.csv.gz" - "dns_mx_database.%DATE%.weekly.diff.csv.gz", - "dns_ns_database.%DATE%.weekly.diff.csv.gz", - "dns_txt_database.%DATE%.weekly.diff.csv.gz", - "dns_cname_database.%DATE%.weekly.diff.csv.gz", - "dns_soa_database.%DATE%.weekly.diff.csv.gz", - "dns_ptr_database.%DATE%.weekly.diff.csv.gz", e.g. "dns_database.2021-12-01.weekly.diff.csv.gz". The weekly DNS database is released on Tuesdays. |
| Monthly incremental updates | Changes in DNS records from the last month. Files are in the following format:
- "dns_database.%DATE%.monthly.diff.csv.gz" - "dns_aaaa_database.%DATE%.monthly.diff.csv.gz" - "dns_mx_database.%DATE%.monthly.diff.csv.gz", - "dns_ns_database.%DATE%.monthly.diff.csv.gz", - "dns_txt_database.%DATE%.monthly.diff.csv.gz", - "dns_cname_database.%DATE%.monthly.diff.csv.gz", - "dns_soa_database.%DATE%.monthly.diff.csv.gz", - "dns_ptr_database.%DATE%.monthly.diff.csv.gz", e.g. "dns_database.2021-12-01.monthly.diff.csv.gz". The monthly DNS database build begins on the first Monday of each month and is typically released on Tuesdays. However, in some cases, building can take several days. |
| Weekly full updates | Full DNS records from the last ninety days. Files are in the following format:
- "dns_database.%DATE%.full.csv.gz" - "dns_aaaa_database.%DATE%.full.csv.gz" - "dns_mx_database.%DATE%.full.csv.gz" - "dns_ns_database.%DATE%.full.csv.gz", - "dns_txt_database.%DATE%.full.csv.gz", - "dns_cname_database.%DATE%.full.csv.gz", - "dns_soa_database.%DATE%.full.csv.gz", - "dns_ptr_database.%DATE%.full.csv.gz", e.g. "dns_database.2021-12-01.full.csv.gz". |
| Lite database | A partial database of DNS records for a given date made for academic purposes. It includes about 5% of a weekly full database. These files are named in format:
- "dns_database.%DATE%.academic.csv.gz" - "dns_aaaa_database.%DATE%.academic.csv.gz" - "dns_mx_database.%DATE%.academic.csv.gz" - "dns_ns_database.%DATE%.academic.csv.gz" - "dns_txt_database.%DATE%.academic.csv.gz" - "dns_cname_database.%DATE%.academic.csv.gz" - "dns_soa_database.%DATE%.academic.csv.gz" - "dns_ptr_database.%DATE%.academic.csv.gz" e.g. "dns_database.2021-12-01.academic.csv.gz". |
Note that the weekly and monthly data are derived from the concatenation of the respective daily data and the addition of the first field, the date.
When working with large compressed files, we recommend using unpigz rather than gunzip. Based on our performance tests, gunzip can be almost 2x slower than unpigz for large files. For this reason, unpigz is the preferred decompression tool.
When dealing with extensive data sets, factors such as download speed, round-trip times, network stability, and disk I/O can influence the successful completion of your download over the HTTP protocol. Additionally, external elements like antivirus software may introduce complexities that hinder the seamless transfer of your data. To ensure a smoother and more reliable download experience, we highly recommend utilizing the FTP (File Transfer Protocol) option whenever possible. FTP provides a robust solution that minimizes the impact of potential challenges associated with HTTP downloads. If you encounter download errors or face any difficulties, we encourage you to reach out to our dedicated support department. They will be more than happy to assist you in enabling FTP access, thereby optimizing your data transfer process.
Read more about the FTPS connection: https://en.wikipedia.org/wiki/FTPS.
Our FTP server supports explicit FTP over TLS encryption. You may configure your FTP client to use explicit FTP over TLS encryption for secure communications.
Our FTPS server is accessed using the same paths and API keys as a regular FTP server, the instructions for which are described above. To connect via FTPS, select the "Require explicit FTP over TLS" encryption option in your FTP client, if it supports it. FileZilla configuration example:
Measured as of 23 September 2025.
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 2.6GB | 12GB | 333M |
| Weekly incremental updates | .weekly.diff | 4.5GB | 19GB | 452M |
| Monthly incremental updates | .monthly.diff | 35GB | 161GB | 4.4B |
| Weekly full database | .full | 201GB | 942GB | 28B |
| Weekly full database for academia | .academic | 12GB | 48GB | 1.4B |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 236MB | 1.5GB | 20M |
| Weekly incremental updates | .weekly.diff | 501MB | 2.9GB | 41M |
| Monthly incremental updates | .monthly.diff | 2.5GB | 17GB | 202M |
| Weekly full database | .full | 17GB | 116GB | 1.5B |
| Weekly full database for academia | .academic | 949MB | 5.8GB | 75M |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 345MB | 2.3GB | 37M |
| Weekly incremental updates | .weekly.diff | 845MB | 5.7GB | 90M |
| Monthly incremental updates | .monthly.diff | 3.6GB | 26GB | 364M |
| Weekly full database | .full | 30GB | 237GB | 3.4B |
| Weekly full database for academia | .academic | 1.7GB | 12GB | 169M |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 425MB | 2.2GB | 23M |
| Weekly incremental updates | .weekly.diff | 825MB | 4.1GB | 45M |
| Monthly incremental updates | .monthly.diff | 4.8GB | 30GB | 285M |
| Weekly full database | .full | 36GB | 215GB | 2.1B |
| Weekly full database for academia | .academic | 2.0GB | 11GB | 101M |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 800MB | 3.9GB | 46M |
| Weekly incremental updates | .weekly.diff | 1.3GB | 7.9GB | 92M |
| Monthly incremental updates | .monthly.diff | 11GB | 56GB | 649M |
| Weekly full database | .full | 52GB | 263GB | 3.1B |
| Weekly full database for academia | .academic | 2.9GB | 14GB | 155M |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 314MB | 1.8GB | 15M |
| Weekly incremental updates | .weekly.diff | 1.2GB | 6.5GB | 56M |
| Monthly incremental updates | .monthly.diff | 4.2GB | 25GB | 206M |
| Weekly full database | .full | 26GB | 153GB | 1.3B |
| Weekly full database for academia | .academic | 1.4GB | 7.7GB | 62M |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 977MB | 5.5GB | 126M |
| Weekly incremental updates | .weekly.diff | 1.7GB | 9.3GB | 177M |
| Monthly incremental updates | .monthly.diff | 14GB | 79GB | 1.8B |
| Weekly full database | .full | 78GB | 460GB | 11B |
| Weekly full database for academia | .academic | 4.2GB | 23GB | 534M |
| File content | Filename suffix | Avg. gzipped file size | Avg. unpacked file size | Avg. number of records |
|---|---|---|---|---|
| Daily incremental updates | .daily | 6.7MB | 27MB | 495K |
| Weekly incremental updates | .weekly.diff | 5.6MB | 22MB | 369K |
| Monthly incremental updates | .monthly.diff | 12MB | 50MB | 811K |
| Weekly full database | .full | 108MB | 466MB | 8.2M |
| Weekly full database for academia | .academic | 6.0MB | 22MB | 385K |
The database files are comma-separated value-files without text delimiters. The files use DOS/Windows - style line terminators (CR+LF). The first line is a header line with the field names. Each line has four or five fields depending on the subscription type:
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. If there is more than one IP address, the timestamp corresponds to all of them. |
ips |
List of IPs associated with the domain, separated by space. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. If there is more than one IP address, the timestamp corresponds to all of them. |
ips |
List of IPs associated with the domain, separated by space. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. |
pr |
Priority identifies which mailserver should be preferred. |
mx |
The MX record associated with the domain. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. |
ns |
The NS record associated with the domain. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. |
txt |
The TXT record associated with the domain. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. |
cname |
The CNAME record associated with the domain. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
d |
Domain or subdomain name. |
du |
UNIX timestamp of the last visit/update on current record. |
soa |
The SOA record associated with the domain. |
wildcard |
The wildcard field indicates whether the DNS record is part of a wildcard entry. To determine this:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
ip |
IP address. |
du |
UNIX timestamp of the last visit/update on current record. |
ptr |
The PTR record associated with the IP. |
wildcard |
PTR files datafeed contains a wildcard field for parsing compatibility, it's always empty. |
active |
The active field shows whether a DNS record exists for the given domain. The check works as follows:
If the field is true, it means:
If the field is false, it means:
If the field is empty, it means that we have not yet checked the DNS record for this domain. Possible values: true | false |
We are here to listen. For a quick response, please select your request type. By submitting a request, you agree to our Terms of Service and Privacy Policy.