AllZonefiles.io API Documentation

Access and download complete zonefiles and domain lists via our simple and powerful API.

OpenAPI specification (JSON)

1. Getting started
2. Zonefiles
3. CZDS-format zonefiles
4. .ZIP with all zonefiles
5. New/expired domain lists
6. Download limits

1. Getting started

All API endpoints are served under the base URL https://allzonefiles.io/api/v1 and use the GET method. List endpoints return JSON. Download endpoints return the file itself.

The API is also described by an OpenAPI 3.0 specification: https://allzonefiles.io/openapi.json. Import it into Postman, Swagger UI or an API client generator to explore the API or generate a client.

1.1. Authentication

To use the API, include your API token in the Authorization header:

Authorization: Bearer YOUR_API_TOKEN

You can find your API token on the API Token page of your account, where you can also generate a new one. The examples on this page use a sample token (allzfio_5c1572d016b846ce99ce7a177922ff21) - replace it with your own.

A request without a valid token is rejected with HTTP status 401, for example:

{"errorMessage": "Invalid API Token (unknown token)"}

1.2. Access by plan

Listing endpoints are available to every registered user with an API token. Downloading files requires a subscription:

EndpointsAccess
Lists of zones, files and dates (2.1, 2.2, 3.1, 3.2, 4.1, 5.1)Any registered user with an API token, no subscription required
Download the latest zonefiles, CZDS-format zonefiles, .ZIP files and new/expired domain lists (2.3, 3.3, 4.2, 5.2)Basic or Pro plan
Download historic zonefiles, CZDS-format zonefiles, .ZIP files and new/expired domain lists (2.4, 3.4, 4.3, 5.3), download limits (6.1)Pro plan, subject to download limits

See pricing for plan details.

1.3. Errors

When a request fails, the API responds with an HTTP error status and a JSON body with an error message:

{"errorMessage": "Zone does not exist: xyz"}
StatusMeaning
400Invalid request, for example an unknown zone or a date that is not in YYYY-MM-DD format.
401Missing or invalid API token, your plan does not include the requested file, or your download limit has been reached.
429Too many requests - see rate limits.
500Internal error, or the requested file is not available (for example, there is no file for that zone and date). Use the list endpoints to check which dates are available.

1.4. Rate limits

API requests are rate limited. When the limit is exceeded, the API responds with HTTP status 429:

{"error": "Rate limit exceeded for this resource."}

If you get this response, wait a few seconds and retry the request. Avoid sending many requests in parallel - downloading files one after another is the most reliable approach.

1.5. Dates and file names

Dates in URLs and in responses use the YYYY-MM-DD format, for instance 2026-05-11 - May 11, 2026. Lists of files are sorted by date, most recent first.

Download endpoints send the file name in the Content-Disposition header, for example dev.2026-05-11.txt.gz. To save a file under that name, use the -OJ options of curl:

curl -OJ -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/zones/dev/dl

2. Zonefiles

Zonefiles for gTLD and ccTLD zones, as a gzipped list of domain names (one domain name per line).

2.1. GET /api/v1/zones - get list of all zones with latest zonefile data

Retrieve a list of all available domain zones with the date, number of domains and file size of the latest zonefile. Zones are sorted by name.

GET https://allzonefiles.io/api/v1/zones

Response:

{
  "zones": [
    {"name": "com", "type": "gTLD", "domains": 155447708, "latest_update_date": "2025-06-27", "filesize_bytes": 616970673},
    {"name": "net", "type": "gTLD", "domains": 12332251, "latest_update_date": "2025-06-27", "filesize_bytes": 49463253},
    {"name": "uk",  "type": "ccTLD", "domains": 9750218, "latest_update_date": "2025-06-27", "filesize_bytes": 40290566},
    ...
  ]
}

type is gTLD or ccTLD.

Example of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/zones

2.2. GET /api/v1/zones/{zone} - get list of all zonefiles for specified zone

Retrieve a list of all available zonefiles for specified zone, most recent first. {zone} is the zone name without the leading dot, for instance dev.

GET https://allzonefiles.io/api/v1/zones/dev

Response:

{
  "zone": "dev",
  "type": "gTLD",
  "zonefiles": [
    {"date": "2026-06-05", "domains": 677062, "filesize_bytes": 2440862},
    {"date": "2026-06-04", "domains": 676378, "filesize_bytes": 2438361},
    {"date": "2026-06-03", "domains": 675606, "filesize_bytes": 2435613},
    ...
  ]
}

For an unknown zone, the API responds with 400 and {"errorMessage": "Zone does not exist: xyz"}.

Example of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/zones/dev

2.3. GET /api/v1/zones/{zone}/dl - download latest zonefile

Download the latest zonefile (file is gzipped) for a specific zone (e.g., com).

Access: Basic or Pro plan.

GET https://allzonefiles.io/api/v1/zones/com/dl

Response: Returns a downloadable .txt.gz file, named {zone}.{date}.txt.gz.

Example of CURL request (save zonefile for dev into file dev.txt.gz):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o dev.txt.gz https://allzonefiles.io/api/v1/zones/dev/dl

File excerpt (gzipped text file, a list of domain names, one domain name per line):

0--0.dev
0-0-0-0.dev
0-0-0.dev
0-0.dev
0-1.dev
0-2.dev
0-3.dev
0-9.dev
0-bit.dev
0-day.dev
0-matter.dev
0-n.dev
0.dev
00.dev
000.dev
0000.dev
00000.dev
00000000.dev
...

2.4. GET /api/v1/zones/{zone}/dl/{date} - download historic zonefile for zone for date

Download historic zonefile (file is gzipped) for a specific zone (e.g., com) for a specific date (e.g., 2026-05-11 - May 11, 2026). Use 2.2 to find the available dates.

Access: Pro plan.

GET https://allzonefiles.io/api/v1/zones/com/dl/2026-05-11

Response: Returns a downloadable .txt.gz file, named {zone}.{date}.txt.gz.

Example of CURL request (save zonefile for zone .dev for date May 11, 2026 into file dev.2026-05-11.txt.gz):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o dev.2026-05-11.txt.gz https://allzonefiles.io/api/v1/zones/dev/dl/2026-05-11

Note: historical downloads count toward your plan's monthly limits. Once a limit is reached, this endpoint responds with 401 and {"errorMessage": "Download quota exceeded"}. Use 6.1. GET /api/v1/limits/historical to check your remaining allowance.

3. CZDS-format zonefiles

Zonefiles for gTLD zones in the original ICANN CZDS format: the complete zonefile with its DNS records, as published by the registry, rather than a plain list of domain names. If you only need the domain names, use the zonefiles endpoints instead.

3.1. GET /api/v1/czds/zones - get list of all zones with latest CZDS-format zonefile data

Retrieve a list of all zones with CZDS-format zonefiles, with the date, number of domains and file size of the latest zonefile. Zones are sorted by name.

GET https://allzonefiles.io/api/v1/czds/zones

Response:

{
  "zones": [
    {"name": "com", "type": "gTLD", "domains": 155447708, "latest_update_date": "2026-06-05", "filesize_bytes": 4987563120},
    {"name": "dev", "type": "gTLD", "domains": 677062, "latest_update_date": "2026-06-05", "filesize_bytes": 21874412},
    {"name": "net", "type": "gTLD", "domains": 12332251, "latest_update_date": "2026-06-05", "filesize_bytes": 402751863},
    ...
  ]
}

Example of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/czds/zones

3.2. GET /api/v1/czds/zones/{zone} - get list of all CZDS-format zonefiles for specified zone

Retrieve a list of all available CZDS-format zonefiles for specified zone, most recent first.

GET https://allzonefiles.io/api/v1/czds/zones/dev

Response:

{
  "zone": "dev",
  "type": "gTLD",
  "zonefiles": [
    {"date": "2026-06-05", "domains": 677062, "filesize_bytes": 21874412},
    {"date": "2026-06-04", "domains": 676378, "filesize_bytes": 21851037},
    ...
  ]
}

For an unknown zone, the API responds with 400 and {"errorMessage": "CZDS zone does not exist: xyz"}.

Example of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/czds/zones/dev

3.3. GET /api/v1/czds/zones/{zone}/dl - download latest CZDS-format zonefile

Download the latest CZDS-format zonefile (file is gzipped) for a specific zone.

Access: Basic or Pro plan.

GET https://allzonefiles.io/api/v1/czds/zones/dev/dl

Response: Returns a downloadable .txt.gz file, named {zone}.{date}.full_zonefile.txt.gz.

Example of CURL request (save latest CZDS-format zonefile for dev into file dev.full_zonefile.txt.gz):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o dev.full_zonefile.txt.gz https://allzonefiles.io/api/v1/czds/zones/dev/dl

3.4. GET /api/v1/czds/zones/{zone}/dl/{date} - download historic CZDS-format zonefile for zone for date

Download historic CZDS-format zonefile (file is gzipped) for a specific zone for a specific date (e.g., 2026-05-11 - May 11, 2026). Use 3.2 to find the available dates.

Access: Pro plan.

GET https://allzonefiles.io/api/v1/czds/zones/dev/dl/2026-05-11

Response: Returns a downloadable .txt.gz file, named {zone}.{date}.full_zonefile.txt.gz.

Example of CURL request (save CZDS-format zonefile for zone .dev for date May 11, 2026 into file dev.2026-05-11.full_zonefile.txt.gz):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o dev.2026-05-11.full_zonefile.txt.gz https://allzonefiles.io/api/v1/czds/zones/dev/dl/2026-05-11

Note: historical downloads count toward your plan's monthly limits. Once a limit is reached, this endpoint responds with 401 and {"errorMessage": "Download quota exceeded"}. Use 6.1. GET /api/v1/limits/historical to check your remaining allowance.

4. .ZIP with all zonefiles

4.1. GET /api/v1/all - get list of available .ZIP archives with all zonefiles

Retrieve a list of available .ZIP files with all zonefiles, most recent first.

GET https://allzonefiles.io/api/v1/all

Response:

{
  "lists": [
    {"date":"2026-06-04","domains":367042384,"filesize_bytes":1482563882},
    {"date":"2026-06-03","domains":366897871,"filesize_bytes":1481974088},
    ...
  ]
}

Example of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/all

4.2. GET /api/v1/all/dl - download latest .ZIP archive with all zonefiles

Download latest .ZIP file with all zonefiles.

Access: Basic or Pro plan.

GET https://allzonefiles.io/api/v1/all/dl

Response: Returns a downloadable .zip file with all zonefiles in it, named all_zonefiles.{date}.zip.

Example of CURL request (download latest ZIP file with all zonefiles into file all.latest.zip):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o all.latest.zip https://allzonefiles.io/api/v1/all/dl

4.3. GET /api/v1/all/dl/{date} - download historic .ZIP archive with all zonefiles for a specified date

Download historic .ZIP file with all zonefiles for a specified date (e.g., 2026-05-11 - May 11, 2026). Use 4.1 to find the available dates.

Access: Pro plan.

GET https://allzonefiles.io/api/v1/all/dl/2026-05-11

Response: Returns a downloadable .zip file with all zonefiles in it, named all_zonefiles.{date}.zip.

Example of CURL request (download .ZIP file with all zonefiles into file all.2026-05-11.zip):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o all.2026-05-11.zip https://allzonefiles.io/api/v1/all/dl/2026-05-11

Note: historical downloads count toward your plan's monthly limits. Once a limit is reached, this endpoint responds with 401 and {"errorMessage": "Download quota exceeded"}. Use 6.1. GET /api/v1/limits/historical to check your remaining allowance.

5. New/expired domain lists

5.1. GET /api/v1/{listName} - get list of new or expired domain lists

Retrieve a list of new or expired domain lists for each day, most recent first. {listName} can be new or expired

GET https://allzonefiles.io/api/v1/new
GET https://allzonefiles.io/api/v1/expired

Response:

{
  "lists": [
    {"date":"2025-08-12","domains":281130,"filesize_bytes":1667401},
    {"date":"2025-08-11","domains":188591,"filesize_bytes":1159870},
    ...
  ]
}

Examples of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/new
curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/expired

5.2. GET /api/v1/{listName}/dl - download latest new/expired domain list

Download latest list of new or expired domains (file is gzipped).

{listName} should be new or expired

Access: Basic or Pro plan.

GET https://allzonefiles.io/api/v1/new/dl
GET https://allzonefiles.io/api/v1/expired/dl

Response: Returns a downloadable .txt.gz file, named new.{date}.txt.gz or expired.{date}.txt.gz.

Example of CURL request (save latest available list of new domains into file new.txt.gz):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o new.txt.gz https://allzonefiles.io/api/v1/new/dl

File excerpt (gzipped text file, a list of domain names, one domain name per line):

0-0-0-0-0-hey-you-geek-click-here.ch
0-a.pro
0-abv.com
0-agent.ru
0-amazon.ru
0-cash.ru
0-chill.com
0-cy-xn1is8y6jlgk0rr.com
0-i-b-d.com
0-j-a-t.com
0-l.ink
0-money.ru
0-qpgpxn1dtcq05-otvg.com
0-x6.com
00.mom
000-andoid.com
000.game
0000-1.vip
000000.digital
00000667.com
0000227.xyz
0001xxd1.store
000214.lol
0002302.com
0002302.pro
0002626.xyz
000267.xyz
000279136.com
000287.xyz
000289.xyz
000296b.cfd
000325.lol
000338.lol
000390.lol
...

5.3. GET /api/v1/{listName}/dl/{date} - download historic new/expired domain list for a specified date

Download list of new or expired domains (file is gzipped) for a specified date (e.g., 2025-08-11). Use 5.1 to find the available dates.

{listName} should be new or expired

{date} is in YYYY-MM-DD format, for instance 2025-08-11 - August 11, 2025

Access: Pro plan.

GET https://allzonefiles.io/api/v1/new/dl/2025-08-11
GET https://allzonefiles.io/api/v1/expired/dl/2025-08-11

Response: Returns a downloadable .txt.gz file, named new.{date}.txt.gz or expired.{date}.txt.gz.

Example of CURL request (save list of new domains for a date 2025-08-11 into file new.2025-08-11.txt.gz):

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" -o new.2025-08-11.txt.gz https://allzonefiles.io/api/v1/new/dl/2025-08-11

Note: historical downloads count toward your plan's monthly limits. Once a limit is reached, this endpoint responds with 401 and {"errorMessage": "Download quota exceeded"}. Use 6.1. GET /api/v1/limits/historical to check your remaining allowance.

6. Download limits

6.1. GET /api/v1/limits/historical - get historical files download limits

Plans with access to historical files have a monthly limit on the number of historical files and the amount of historical data you can download. All historical (dated) downloads count toward the limit - zonefiles, CZDS-format zonefiles, new/expired domain lists and .ZIP files, via both the website and the API. Downloads of the latest files are not limited. See pricing for the limits of each plan.

This endpoint returns the limits for your current billing period, how much you have used and how much remains. A billing period is one month long and starts on your subscription date.

GET https://allzonefiles.io/api/v1/limits/historical

Response:

{
  "period_start_utc": "2026-09-15T14:32:07Z",
  "period_end_utc": "2026-10-15T14:32:07Z",
  "max_files": 500,
  "max_data_mb": 256000,
  "downloaded_files": 123,
  "downloaded_data_mb": 212000,
  "remaining_files": 377,
  "remaining_data_mb": 44000,
  "quota_exceeded": false
}

Response fields:

FieldDescription
period_start_utc, period_end_utcStart and end of the current billing period (RFC 3339 timestamps, UTC). If your subscription ends before the month is over, period_end_utc is the subscription end time.
max_filesMaximum number of historical files per billing period.
max_data_mbMaximum amount of historical data per billing period, in MB (1 GB = 1024 MB).
downloaded_files, downloaded_data_mbHistorical files and data downloaded so far in the current billing period.
remaining_files, remaining_data_mbHistorical files and data left until the end of the current billing period.
quota_exceededtrue once either limit is reached. Historical downloads are then rejected until the next billing period starts.

When a limit is reached, historical download endpoints (2.4, 3.4, 4.3 and 5.3) respond with 401 and {"errorMessage": "Download quota exceeded"}.

Error responses:

Example of CURL request:

curl -H "Authorization: Bearer allzfio_5c1572d016b846ce99ce7a177922ff21" https://allzonefiles.io/api/v1/limits/historical