WHOIS Domain Lookup
Last updated October 31, 2026
Get the registrar, creation and expiry dates, domain age, days until expiry, status codes, nameservers, DNSSEC, and the published registrant organization for up to 5,000 domains per run. Registry RDAP first, port 43 WHOIS fallback. No key. Clay ready.
Install
npx @mambalabsdev/mcp-whois-domain-lookupEvery tool here also runs hosted, with no install at all, through Apify's MCP endpoint.
Features
- Registry RDAP first, port 43 WHOIS as the fallback. The row names the server that answered.
- Domain age and days until expiry, computed and ready to filter.
- Domains, URLs, and email addresses all work as input. A domain listed twice is charged once.
- You pay for answers only. A row with no dates published and an error row are free.
- Pay per event: Domain lookup at $0.0025.
Input
domainsarrayoptionalDomains, website URLs, or email addresses, one per line, 1 to 5,000 per run. Subdomains and www are dropped (blog.stripe.com is looked up as stripe.com), and a domain listed twice is looked up and charged once. An entry that is not a domain returns one free error row.
domainstringoptionalOne domain, URL, or email address. Use this for a Clay column that holds one domain per row. Added to Domains when both are given.
follow_registrar_rdapstringoptionalOn by default. For registries that publish only part of the record (such as .com and .net), also read the registrar's own RDAP record for the abuse email and any registrant organization or country the registrar publishes. Off saves one request per domain and does not change the price.
include_rawstringoptionalOff by default. On: raw_response carries the registry's RDAP JSON or WHOIS text, up to 50,000 characters, for audits or your own parsing.
max_charge_usdstringoptionalOptional. The run stops before any charge that would take it past this amount and delivers every row already charged. Leave empty to rely only on the maximum cost per run you set in Apify, which the actor also honors.
Output schema
{
"input": "string",
"domain": "string",
"tld": "string",
"registered": "boolean",
"registrar_name": "string",
"registrar_iana_id": "string",
"registrar_url": "string",
"registrar_abuse_email": "string",
"created_at": "string",
"updated_at": "string",
"expires_at": "string",
"domain_age_days": "integer",
"days_until_expiry": "integer",
"status": "array",
"nameservers": "array",
"dnssec": "boolean",
"registrant_organization": "string",
"registrant_country": "string",
"source": "string",
"source_server": "string",
"registrar_rdap_status": "string",
"raw_response": "string",
"row_status": "string",
"error_reason": "string",
"billable_events_json": "string",
"checked_at": "string"
}Pricing
| Event | Free plan price |
|---|---|
| Domain lookup | $0.0025 |
| Actor Start | $0.0006 |
Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.
On the Apify free plan the actor stops at $1.50 of charges a month, about 600 domain lookups. Any paid Apify plan removes the cap.
Limits
- Most .com, .net, and new gTLD records redact the registrant for privacy, so registrant_organization is often empty. The actor never guesses it.
- Some registries publish less than others. DENIC (.de) publishes status, nameservers, and the last change date over WHOIS, and EURid (.eu) publishes the registrar and nameservers; neither publishes creation or expiry dates there, so those rows are partial and free.
- Some ccTLD registries publish no WHOIS or RDAP for automated use, or answer only listed addresses (for example .es). Those rows are free errors. A WHOIS server that drops a connection is retried once.
- WHOIS text formats differ by registry. Fields a registry prints in an unusual format can be empty; include_raw returns the text so you can read it yourself.
- Dates are the registry's own. A domain past its expiry date can still show registered true during the registry's grace period.