Bulk WHOIS Lookup API: Domain Expiry, Registrar & DNS (RDAP) avatar

Bulk WHOIS Lookup API: Domain Expiry, Registrar & DNS (RDAP)

Pricing

$1.00 / 1,000 domain checkeds

Go to Apify Store
Bulk WHOIS Lookup API: Domain Expiry, Registrar & DNS (RDAP)

Bulk WHOIS Lookup API: Domain Expiry, Registrar & DNS (RDAP)

Bulk WHOIS lookup through official RDAP: registration and expiration dates, domain age, registrar, status codes, nameservers, DNSSEC, availability, plus DNS, MX, SPF and DMARC records. No personal data. $1 per 1,000 domains.

Pricing

$1.00 / 1,000 domain checkeds

Rating

0.0

(0)

Developer

saad hazz

saad hazz

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Domain WHOIS & RDAP Lookup: Bulk Expiry, Registrar, Availability & DNS Checker

Run bulk WHOIS lookups on thousands of domains and get clean JSON in return: registration date, expiration date, domain age, days until expiry, registrar and IANA ID, EPP status codes, nameservers, DNSSEC, and availability. Optionally add DNS records, MX, SPF and DMARC policy in the same run. Lookups go through RDAP, the official ICANN successor to WHOIS, so you get structured data instead of fragile text parsing. The price is $1 per 1,000 domains, with DNS included.

What you can use it for

  • Domain portfolio management. Track expiry dates and get alerts before domains lapse (daysUntilExpiry).
  • Lead qualification and enrichment. Domain age, registrar, whether a domain has email (MX), and how mature its email security is (SPF/DMARC).
  • Security and fraud checks. Flag newly registered domains (domainAgeDays < 30), missing DMARC, or suspicious status codes.
  • Brand protection. Check your brand across dozens of TLDs and see which are registered and which are likely_available.
  • Domain investing. Bulk availability and drop-date research.

Why this WHOIS API?

  • Official sources. It uses the IANA RDAP bootstrap and each registry's RDAP server, covering all gTLDs (.com, .net, .org, .io, .ai, .app, .dev, ...) and a growing list of ccTLDs (.uk, .de, .fr, .nl, .ch, .ca, .au, .co, .me, .tv, ...). No scraping of WHOIS websites.
  • Accepts messy input. URLs, subdomains and email addresses are reduced to the registrable domain with the Public Suffix List (https://www.bbc.co.uk/news becomes bbc.co.uk). Unicode (IDN) domains are supported and duplicates are removed.
  • Clean, typed output. Dates are ISO 8601 UTC, ages are computed for you, nameservers are lower-cased, and status codes come as an array.
  • Rate-limit aware. Concurrency is capped per registry, Retry-After is honoured, and backoff includes jitter. In our test, 250 domains across 13 TLDs finished in about 30 seconds.
  • Fair billing. Invalid inputs and lookups that fail completely are free and listed in the INVALID_DOMAINS / FAILED_DOMAINS records.
  • Privacy by design. No personal data is collected: no registrant names, emails, phone numbers or street addresses. We return only the registrant organization and country when the registry publishes them, and drop redacted or privacy-proxy values.

Input

FieldDescription
domainsDomains, URLs or emails. One per line.
includeDnsAdds A/AAAA/MX/NS/TXT records, spfRecord, dmarcRecord and dmarcPolicy (default on).
followRegistrarRdapFor .com/.net, also asks the registrar's RDAP server for the registrant organization and country. Costs one extra request per domain and is off by default.
maxDomainsSafety cap.
maxConcurrency, perRegistryConcurrencyAdvanced speed controls.

Output example

{
"domain": "wikipedia.org",
"domainUnicode": "wikipedia.org",
"tld": "org",
"availability": "registered",
"registered": true,
"rdapSupported": true,
"rdapServer": "https://rdap.publicinterestregistry.org/rdap/",
"handle": null,
"statuses": [
"client delete prohibited",
"client transfer prohibited",
"client update prohibited"
],
"registrationDate": "2001-01-13T00:12:14Z",
"expirationDate": "2027-01-13T00:12:14Z",
"lastChangedDate": "2026-08-12T08:47:19Z",
"domainAgeDays": 9397,
"daysUntilExpiry": 98,
"registrarName": "MarkMonitor Inc.",
"registrarIanaId": "292",
"registrantOrganization": "Wikimedia Foundation, Inc.",
"registrantCountry": "US",
"nameservers": [
"ns0.wikimedia.org",
"ns1.wikimedia.org",
"ns2.wikimedia.org"
],
"dnssec": false,
"checkedAt": "2026-10-06T17:39:04Z",
"dnsA": [
"208.80.154.224"
],
"dnsAAAA": [
"2620:0:861:ed1a::1"
],
"dnsMX": [
"10 mx-in1001.wikimedia.org",
"10 mx-in2001.wikimedia.org"
],
"dnsNS": [
"ns0.wikimedia.org",
"ns1.wikimedia.org",
"ns2.wikimedia.org"
],
"dnsTXT": [
"yandex-verification: 35c08d23099dc863",
"v=spf1 include:_cidrs.wikimedia.org ~all",
"google-site-verification=AMHkgs-4ViEvIJf5znZle-BSE2EPNFqM1nDJGRyn2qk"
],
"hasMx": true,
"spfRecord": "v=spf1 include:_cidrs.wikimedia.org ~all",
"dmarcRecord": "v=DMARC1; p=reject; rua=mailto:dmarc-rua@wikimedia.org;",
"dmarcPolicy": "reject"
}

availability is registered, likely_available (the registry has no record; premium or reserved names can still apply) or unknown. For TLDs without a public RDAP service (for example .sa), we fall back to DNS delegation, set rdapSupported: false and leave registry dates empty. Some registries (such as .de and .nl) do not publish registration or expiry dates by policy, so those fields are null.

Pricing

Pricing is pay-per-event: $0.001 per domain checked ($1 per 1,000), with DNS and email-security records included at no extra cost. Many alternatives charge $2.50 to $20 per 1,000 lookups or add a per-run start fee. Set Max total charge in the run options to cap spending; the run stops cleanly at your limit.

Integrations

Schedule a daily or weekly run over your portfolio, then send rows with daysUntilExpiry < 30 to Slack, email or Google Sheets using Apify integrations. You can also call the Actor synchronously from your own app through the Apify API.

Run it from code: API, Python, JavaScript or cURL

Every Apify Actor is also a REST API. Get your token in Apify Console under Settings → API & Integrations, then:

cURL (runs the Actor and returns the WHOIS records in one call):

curl -X POST "https://api.apify.com/v2/acts/saadhazz~domain-whois-rdap/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains": ["apify.com", "example.org"], "includeDns": true}'

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("saadhazz/domain-whois-rdap").call(run_input={"domains": ["apify.com", "example.org"], "includeDns": true})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js (npm i apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('saadhazz/domain-whois-rdap').call({"domains": ["apify.com", "example.org"], "includeDns": true});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use it with AI agents (MCP), Make, Zapier, n8n and Google Sheets

  • AI agents and LLM apps: connect Claude, Cursor, ChatGPT or any MCP client to https://mcp.apify.com/?tools=saadhazz/domain-whois-rdap and the agent can call this Actor as a tool.
  • No-code: use the official Apify integrations for Make, Zapier and n8n, or export the dataset straight to Google Sheets, CSV, Excel or JSON.
  • Scheduling and webhooks: create a Schedule in Apify Console (e.g. every morning) and add a webhook or Slack/email integration to get notified when new data is ready.

Yes. RDAP is the IETF-standard protocol (RFC 9082/9083) that ICANN requires gTLD registries and registrars to operate as a public service. DNS data is fetched through Cloudflare's public DNS-over-HTTPS resolver. This Actor does not collect personal data. Please follow each registry's acceptable-use policy: don't use the results for spam or unsolicited marketing.

FAQ

Why is the expiration date empty for some domains? That registry doesn't publish it (for example .de or .nl), or the TLD has no RDAP service. Check rdapSupported.

Is likely_available guaranteed? No. It means the registry has no record of the domain. Check with a registrar before you rely on it, because reserved and premium names exist.

How many domains can I check? Tens of thousands per run. Throughput depends on each registry's rate limits.

Do you support raw WHOIS (port 43)? Not yet. A WHOIS fallback for ccTLDs without RDAP is on the roadmap.

How do I check the expiry date of many domains at once? Paste the list (one per line, or upload via API) into Domains and run. Each row has expirationDate and daysUntilExpiry; sort by it or schedule a weekly run to catch domains about to expire.

What is the difference between WHOIS and RDAP? RDAP is the modern, official replacement for port-43 WHOIS, run by the same registries and returning structured JSON. ICANN made RDAP the authoritative source for gTLDs, so it is more reliable to parse than WHOIS text.

More data APIs from the same developer

  • Job Search API: Career Site Jobs: search 400k+ jobs from 13,000+ company career sites (Greenhouse, Lever, Ashby, Workable…) by title, country and remote, with new-job alerts. $2 / 1,000 jobs.
  • ATS Jobs API: every open job from a list of companies on Greenhouse, Lever, Ashby, SmartRecruiters or Recruitee, in one schema. $1 / 1,000 jobs.
  • Remote Jobs API: remote and work-from-home jobs from Remote OK, Himalayas, Jobicy and Arbeitnow, deduplicated. $1 / 1,000 jobs.
  • Sitemap URL Extractor: every URL a website lists in its XML sitemaps, with lastmod, hreflang and optional HTTP status. $0.40 / 1,000 URLs.
  • PDF Text Extractor: PDF URLs to clean page-by-page text, Markdown tables and metadata for RAG/LLM pipelines.
  • SEC EDGAR Filings Monitor: new 8-K, 10-Q, 10-K and Form 4 filings for a list of tickers from the official SEC API.

Found a bug or need a field? Open an issue on the Issues tab; Issues are checked daily.