Domain WHOIS Lookup - Bulk RDAP, Expiry, DNS & Availability avatar

Domain WHOIS Lookup - Bulk RDAP, Expiry, DNS & Availability

Pricing

from $2.00 / 1,000 domain looked ups

Go to Apify Store
Domain WHOIS Lookup - Bulk RDAP, Expiry, DNS & Availability

Domain WHOIS Lookup - Bulk RDAP, Expiry, DNS & Availability

Bulk domain lookup: registrar, creation and expiry dates, EPP statuses, nameservers and availability via official RDAP (WHOIS fallback), plus DNS, SPF and DMARC. Change monitoring for portfolios. No personal data. $0.002 per domain.

Pricing

from $2.00 / 1,000 domain looked ups

Rating

0.0

(0)

Developer

rj

rj

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Features

Limited permissions

Share

Domain WHOIS Lookup - Bulk RDAP, Expiry Dates, DNS & Availability

Look up hundreds of domains at once and get, for each one, the registrar, creation date, expiry date and days left, EPP statuses, nameservers, DNSSEC and availability from the official registry RDAP service (with WHOIS port-43 fallback for ccTLDs that have no RDAP), plus its DNS records with SPF and DMARC. Everything for one domain lands in one clean JSON row. Other WHOIS Actors give you either availability or raw WHOIS text, and some add a start fee. This one returns parsed registration data, availability and email-authentication records together for $0.002 per domain with no start fee. It also has a change-monitoring mode that only reports domains whose registrar, expiry, status or nameservers changed since the last run. No personal data: names, emails, phone numbers and street addresses are never output.

What data can you get?

FieldExample
Registered / likely availableregistered: true, available: false
Registrar, IANA ID, registrar websiteAmazon Registrar, Inc., 468
Created, updated, expires (ISO dates)2035-06-02T17:14:10.000Z
Days until expiry, domain age in days3128, 6367
EPP statusesclientTransferProhibited, serverHold, redemptionPeriod
Nameservers, DNSSECns-449.awsdns-56.com, true
Registrant organisation and country (when public, never person names)Shopify Inc., CA
DNS: A, AAAA, MX (with priority), NS, TXT, www CNAMEaspmx.l.google.com (10)
SPF and DMARC recordsv=DMARC1; p=reject; ...
Source and errorsrdap, whois, dns-only
Changes since last run (monitoring mode)[{ field: "expiresAt", previous, current }]

Use cases

  • Domain investors: check availability and expiry dates for a list of names, find domains that are about to expire or are in redemptionPeriod / pendingDelete.
  • Portfolio and brand-protection teams: schedule a daily run over all your domains and look-alikes; get alerted when a registrar, expiry date, status or nameserver changes, or when a typo-domain gets registered.
  • SEO and agency due diligence: domain age, registrar and hosting (A/NS records) for a list of sites before you buy links or a website.
  • Security analysts: newly registered or recently changed domains, DNSSEC, SPF and DMARC posture for phishing and vendor-risk checks.
  • Sales and RevOps: enrich a list of company websites with registrant organisation, mail provider (MX) and email-auth status.

How to use

  1. Paste domains or URLs into Domains, one per line. URLs and subdomains are reduced to the registrable domain (https://www.shop.example.co.uk/page -> example.co.uk). Duplicates are removed.
  2. Keep Include DNS records on if you want A/MX/TXT/SPF/DMARC; turn it off for a pure WHOIS/expiry check.
  3. Click Start and download the results as JSON, CSV or Excel, or read them through the API.

Input examples

Check a domain portfolio's expiry dates:

{
"domains": ["shopify.com", "shopify.ca", "shopify.de", "shopify.fr", "shopify.io"],
"includeDns": false
}

Check whether brand names are free:

{
"domains": ["brewlytics.com", "brewlytics.io", "brewlytics.ai", "brewlytics.co", "getbrewlytics.com"],
"includeDns": false
}

SPF / DMARC audit:

{
"domains": ["https://mailchimp.com/pricing", "www.hubspot.com", "salesforce.com", "zendesk.com", "atlassian.com"],
"includeDns": true
}

Daily change monitoring (schedule it):

{
"domains": ["yourbrand.com", "yourbrand.net", "yourbrand.co.uk", "yourbrnad.com"],
"onlyChanges": true
}

Output example

Real output for apify.com (TXT list trimmed):

{
"id": "apify.com",
"domain": "apify.com",
"tld": "com",
"url": "https://rdap.verisign.com/com/v1/domain/apify.com",
"registered": true,
"available": false,
"registrar": "Amazon Registrar, Inc.",
"registrarIanaId": "468",
"registrarUrl": "http://registrar.amazon.com",
"createdAt": "2009-06-02T17:14:10.000Z",
"updatedAt": "2026-05-16T16:53:04.000Z",
"expiresAt": "2035-06-02T17:14:10.000Z",
"daysUntilExpiry": 3128,
"domainAgeDays": 6367,
"statuses": ["clientTransferProhibited"],
"nameservers": ["ns-1225.awsdns-25.org", "ns-1928.awsdns-49.co.uk", "ns-449.awsdns-56.com", "ns-839.awsdns-40.net"],
"dnssec": true,
"registrantOrganization": null,
"registrantCountry": "US",
"dns": {
"a": ["99.86.109.13", "99.86.109.15", "99.86.109.73", "99.86.109.97"],
"aaaa": ["2600:9000:223c:4400:9:a03e:6540:93a1"],
"mx": [{ "exchange": "aspmx.l.google.com", "priority": 1 }, { "exchange": "alt1.aspmx.l.google.com", "priority": 5 }],
"ns": ["ns-1225.awsdns-25.org", "ns-1928.awsdns-49.co.uk", "ns-449.awsdns-56.com", "ns-839.awsdns-40.net"],
"txt": ["v=spf1 a mx include:_spf.google.com include:mailgun.org include:amazonses.com include:19497222.spf05.hubspotemail.net -all"],
"spf": "v=spf1 a mx include:_spf.google.com include:mailgun.org include:amazonses.com include:19497222.spf05.hubspotemail.net -all",
"dmarc": "v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:***@apify.com; ri=604800",
"wwwCname": null,
"error": null
},
"source": "rdap",
"error": null,
"changes": null,
"scrapedAt": "2026-11-08T12:26:56.425Z"
}

An unregistered domain comes back with registered: false, available: true and empty registration fields.

Pricing

Pay per event, no start fee:

EventPrice
domain: one domain looked up and output$0.002
  • 1,000 domains ≈ $2.00, 100 domains ≈ $0.20.
  • In monitoring mode you only pay for domains that changed (and for every domain on the first run, which saves the baseline).
  • Domains where nothing at all could be looked up (no RDAP, no WHOIS, no DNS) are output with an error but not charged.
  • Set Maximum cost per run to cap spending; the Actor stops cleanly at the limit.

How it works

  1. Each domain's registry RDAP server is found in the official IANA bootstrap file. The registry answers with registrar, dates, statuses, nameservers and DNSSEC. For thin registries such as .com, the registrar's own RDAP service is also queried for the registrant organisation and country.
  2. If a TLD has no RDAP service (for example .de, .io, .co, .eu, .ch, .it, .es, .jp) or the RDAP server refuses or rate-limits the request, the registry's WHOIS server (port 43) is used and the common fields are parsed (source: "whois").
  3. If both fail, the item is still output with DNS data (source: "dns-only") and the reason in error. Domains with nameservers in DNS are marked registered: true.
  4. DNS is resolved with 1.1.1.1 and 8.8.8.8 by default (configurable), with the system resolver as fallback.

Tips and limits

  • "Available" means likely available. A registry with no record usually means the name can be registered, but reserved, premium or blocked names can also return no record. Check with a registrar before you count on it.
  • WHOIS fallback is best effort. WHOIS formats differ per registry. Some registries publish very little: DENIC (.de) only gives nameservers, status and the last-changed date, no registrar or expiry date.
  • Rate limits. Registries throttle per IP. The Actor makes at most 3 parallel requests per RDAP server and backs off on HTTP 429. Some registries (e.g. Nominet for .uk) have a daily quota per IP; once it is used up the Actor switches to WHOIS for that registry. Very large lists of a single ccTLD can therefore be slower or end up with source: "dns-only" for part of the list.
  • Registrant organisation is often empty. Since GDPR most registrars redact registrant data. Privacy-service names (e.g. "Domains By Proxy", "c/o whoisproxy.com") are treated as redacted.
  • Email addresses are masked in TXT and DMARC records (rua=mailto:***@example.com), so you still see the reporting provider's domain.
  • Proxy: not needed normally. It only applies to RDAP (HTTP) requests; DNS and WHOIS port 43 don't go through a proxy. Residential proxy is not supported (it would cost more than the lookup); selecting it falls back to Apify datacenter proxy with a warning.
  • Max domains defaults to 1,000 per run (0 = no limit).

FAQ

Is it legal to look up WHOIS / RDAP data? RDAP and WHOIS are public services run by the registries for exactly this purpose. This Actor only outputs registration facts (registrar, dates, statuses, nameservers), organisation and country fields that the registry publishes, and DNS records. It never outputs names of people, email addresses, phone numbers or street addresses. You are responsible for using the data in line with the registries' terms and the laws that apply to you (e.g. no spam).

Why is source "whois" for some domains? Their TLD has no RDAP service, or the RDAP server rate-limited the request. WHOIS gives the same core fields for most registries, but some fields may be null.

How does change monitoring work? With Only output changes on, the Actor stores each domain's registration state, registrar, expiry date, statuses and nameservers in a key-value store named domain-whois-lookup-state in your account. The first run outputs everything (changes: []). Later runs only output domains where something changed, with changes: [{ field, previous, current }]. A lookup that fails is never reported as a change. Schedule the Actor daily or weekly and connect a webhook or Slack integration to get alerts.

Why is daysUntilExpiry negative? The registry's expiry date has passed; the domain is usually in its grace or redemption period (see statuses).

Can I look up subdomains or URLs? Yes, they are reduced to the registrable domain because that's what is registered.

Do I need a proxy or an account? No.

Integrations

  • API:

    curl -X POST "https://api.apify.com/v2/acts/rjmacarthy~domain-whois-lookup/run-sync-get-dataset-items?token=YOUR_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"domains":["apify.com","example.org"],"includeDns":true}'
  • Make, Zapier, n8n: send expiring or changed domains to Google Sheets, Slack, email or your CRM.

  • Webhooks: trigger your pipeline when a monitoring run finishes.

  • AI agents (MCP): use the Actor as a tool through the Apify MCP server, e.g. "check whether these 20 names are available as .com".

Changelog

  • 0.1 (2026-11-08): first release. RDAP with IANA bootstrap and registrar follow-up, WHOIS port-43 fallback, DNS with SPF/DMARC, availability, change monitoring.

Ready-to-run examples

More scrapers by the same developer

Browse all my Actors on my Apify Store profile.

Support

Found a TLD that doesn't parse well, or need an extra field? Open an issue on the Issues tab with the domain. Fixes are usually quick.