How to check thousands of domains without a WHOIS lookup
Screening a naming shortlist against zone files instead of querying WHOIS per name: what it costs, what the verdicts mean, and where the method stops being enough.
Checking a domain's availability normally means a WHOIS or RDAP lookup per name, which carries a rate limit, a proxy and a per-lookup fee. Screening against registry zone files answers the same question from a file already held: a domain present in the zone is delegated and certainly taken, and a domain absent from it is probably free. Screening 5,000 candidates costs $5.00 at $0.001 each, against roughly $100 at the $0.02 per domain a WHOIS-based bulk checker charges. The method's limit is its asymmetry — absence misses about 1.62% of registered `.com` domains — so it belongs at the top of a funnel, with a registrar confirming the handful that survive it.
Key points
A WHOIS-based check needs a rate limit, a proxy and a retry path for every single name, which is what a per-lookup fee actually pays for.
Screening against zone files answers from a file already held, so 5,000 candidates cost $5.00 rather than roughly $100 at $0.02 per domain.
Presence in the zone proves delegation and is certain; absence is a screening verdict that misses about 1.62% of registered `.com` domains.
The right shape is a funnel: screen thousands cheaply, then confirm the handful that matter at a registrar before committing to a name.
`onlyFree` removes the taken candidates from the output, and rows hidden that way are not charged.
Country-code TLDs cannot be screened this way at all, so a shortlist containing `.io` or `.ai` needs a second source for those rows.
You have 300 name ideas across a dozen TLDs. Most of them are gone. Finding out which is a different problem from deciding between the survivors.
What a WHOIS check actually costs
A WHOIS or RDAP lookup is a network request against a rate-limited service. At volume it needs proxies, backoff and a retry path per name, and that infrastructure is what the per-lookup fee pays for. Bulk checkers in the Apify Store charge $0.003 to $0.02 per domain, which is $3 to $20 per thousand.
Answering from a file you already hold
A registry zone file already says which domains are delegated. Checking a candidate against it is a lookup rather than a request, so the marginal cost collapses — and the price can follow the cost at $0.001 per candidate, or $1 per thousand.
Up to 5,000 candidates per run, each with its TLD. onlyFree: true drops the definitely-taken rows from the output, and rows hidden that way are not charged.
Reading the two verdicts
taken is certain: the domain is delegated in the registry's zone file. probably_free is a screening verdict, and it is wrong about 1.62% of the time in .com. On taken rows, parked_for_sale is worth reading — a domain sitting on a sale service is one you might still be able to buy.
Where the method stops being enough
At the point of decision. Screen thousands cheaply, then confirm the handful you actually want at a registrar before committing a brand to one. Saying so costs a sale occasionally and is better than letting somebody discover the 1.62% at checkout.
The candidates it cannot answer for
Anything in a country-code TLD. A shortlist containing .io or .ai needs a second source for those rows, because zone data does not cover them at any price and an absent row must not be read as an available name.
Frequently asked questions
▸How do I check hundreds of domains at once?
Paste the candidate list, with the TLD on each name, and screen it against zone files in one run. Up to 5,000 candidates go in a single job, and each comes back either delegated in the registry zone or absent from it.
▸Is a zone-file check as good as WHOIS?
For screening, it is better value and nearly as good; for a final decision, no. Zone data proves a domain is taken with certainty but can only report absence, which misses about 1.62% of registered `.com` domains, so a registrar check belongs at the end of the funnel.
▸Why does bulk WHOIS cost so much more?
Because every name is an individual network request against a rate-limited service, which needs proxies and retries to run at volume. A zone-file screen answers from data already held, so the marginal cost of a row is close to nothing.
▸What happens to candidates in .io or .ai?
They cannot be answered at all, because country-code TLDs are not distributed through ICANN's zone data service. A shortlist mixing gTLDs and ccTLDs needs a second source for the country-code rows rather than reading an empty result as availability.
Sources
Every URL below was requested and returned a page on the date shown.
Absence from a zone file usually means unregistered, and sometimes does not. The gap was measured against ICANN's own monthly registry reports rather than estimated, and it differs by TLD.
Whoever controls the nameservers controls the mail, the site and the certificates. That change happens in the registry zone, which is the one layer most monitoring never looks at.
How to run a brand sweep across 1,075 gTLDs, how to read `exact`, `typo` and `contains` differently, and why an empty result is the outcome worth paying for.