WHOIS Domain Lookup avatar

WHOIS Domain Lookup

Pricing

from $2.13 / 1,000 domain lookups

Go to Apify Store
WHOIS Domain Lookup

WHOIS Domain Lookup

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.

Pricing

from $2.13 / 1,000 domain lookups

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Look up who registered a domain, when, and when it expires. List domains, website URLs, or email addresses, and get one flat row per domain: the registrar, the creation, update, and expiry dates, the domain age and days until expiry, the status codes, the nameservers, DNSSEC, and the registrant organization and country where the registry publishes them. Use it to age a lead list, spot domains close to expiry, find the registrar for a takedown or a purchase, or check whether a domain is registered at all.

The actor asks each registry directly. It reads the registry's public RDAP server, the structured service that replaced WHOIS, from the official IANA list of RDAP servers. Where the IANA list names no RDAP server for a TLD, the actor uses the registry's own RDAP server where one answers (.io, .ac, .co, .us, .ch, and .li, each checked on 2026-10-28), and otherwise the registry's port 43 WHOIS server (such as .de, .eu, .jp, .be, .at, and .dk). No key, no account, and no third party lookup service.

Features

  • Registry sources only. RDAP from the IANA bootstrap file for 1,204 top level domains plus 6 registry RDAP servers the file does not list yet, and port 43 WHOIS through the IANA referral for the rest. The row names the source and the server that answered.
  • Domain age and days until expiry, computed. Ready to filter on in Clay or a spreadsheet.
  • Registrar record filled in. For .com, .net, and other registries that publish only part of the record, the actor also reads the registrar's own RDAP record for the abuse email and any registrant organization or country the registrar publishes.
  • Any input shape. stripe.com, https://blog.stripe.com/x, and jane@stripe.com all look up stripe.com. A domain listed twice is looked up and charged once.
  • Not registered is an answer. A domain the registry says it does not hold returns registered false.
  • You pay for answers only. A row is charged only when the registry returned the dates or said the domain is not registered. A row with no dates published, an error row, and input that is not a domain are free.
  • Polite to registries. At most two requests in flight per RDAP server and one query at a time per WHOIS server, with retries on rate limits.

Input

FieldTypeDefaultWhat it does
domainsarrayDomains, URLs, or email addresses, 1 to 5,000 per run
domainstringOne domain, for a Clay column with one domain per row. Added to domains
follow_registrar_rdapstring, true or falsetrueAlso read the registrar's RDAP record where the registry links one
include_rawstring, true or falsefalsePut the registry's RDAP JSON or WHOIS text in raw_response
max_charge_usdstringStop before a charge that would pass this amount

Every input accepts a string, which is what Clay sends.

Output

One row per domain. Every row has the same columns.

FieldTypeMeaning
inputstringThe entry as you gave it: a domain, URL, or email address.
domainstringThe registrable domain looked up, lowercase. Subdomains and www are dropped. Empty when the input is not a domain.
tldstringThe top level domain.
registeredbooleantrue: the registry holds a record for this domain. false: the registry answered that it is not registered. Empty on an error row.
registrar_namestringThe registrar of record, as the registry or registrar publishes it.
registrar_iana_idstringThe registrar's IANA ID, where published (gTLDs and some ccTLDs).
registrar_urlstringThe registrar's website, where published.
registrar_abuse_emailstringThe registrar's abuse contact address, where published.
created_atstringRegistration date, UTC ISO 8601.
updated_atstringDate the registry record last changed, UTC ISO 8601.
expires_atstringExpiry date, UTC ISO 8601.
domain_age_daysintegerWhole days from the creation date to the time of the run.
days_until_expiryintegerWhole days from the time of the run to the expiry date. Negative when the expiry date has passed (the domain may be in its grace period).
statusarrayThe domain status codes as the registry publishes them, for example client transfer prohibited, redemption period, or pending delete.
nameserversarrayThe delegated nameservers, lowercase.
dnssecbooleantrue when the delegation is signed, false when it is not, empty when the registry does not say.
registrant_organizationstringThe registrant organization, only when the registry or registrar publishes it. Most gTLD records are redacted for privacy, so this is often empty.
registrant_countrystringThe registrant's two letter country code, only when published.
sourcestringrdap: the registry's RDAP server. whois: the registry's port 43 WHOIS server, used where the registry has no RDAP server or its RDAP server failed.
source_serverstringThe registry server that answered.
registrar_rdap_statusstringfollowed: the registrar's own RDAP record was read and filled gaps. not_offered: the registry names no registrar record. unreachable: the registrar record did not answer. off: the option is off. Empty for WHOIS rows.
raw_responsestringWith Include the raw registry answer on: the RDAP JSON or the WHOIS text, up to 50,000 characters. Empty otherwise.
row_statusstringok: the registry answered with the dates, or answered that the domain is not registered (charged). partial: the registry answered but publishes no creation or expiry date, as the .de and .eu registries do over WHOIS (free). error: no answer, or the input is not a domain (free).
error_reasonstringWhy a row is partial or error, for example invalid_domain, whois_rate_limited, or input_invalid for input the run could not use.
billable_events_jsonstringWhat this row was billed as, for example {"domain-lookup":1}. {} means free.
checked_atstringWhen the row was written, UTC.

Example row:

{
"input": "https://www.notion.io/pricing",
"domain": "notion.io",
"tld": "io",
"registered": true,
"registrar_name": "Gandi SAS",
"registrar_iana_id": "81",
"registrar_url": "https://www.gandi.net",
"registrar_abuse_email": "abuse@support.gandi.net",
"created_at": "2012-05-21T04:24:08.000Z",
"updated_at": "2026-09-10T01:50:39.000Z",
"expires_at": "2027-05-21T04:24:08.000Z",
"domain_age_days": 5273,
"days_until_expiry": 205,
"status": [
"clientTransferProhibited"
],
"nameservers": [
"ns-1812.awsdns-34.co.uk",
"ns-685.awsdns-21.net"
],
"dnssec": false,
"registrant_organization": "SOCIETE EDITRICE DU MONDE",
"registrant_country": "FR",
"source": "rdap",
"source_server": "rdap.verisign.com",
"registrar_rdap_status": "followed",
"raw_response": null,
"row_status": "ok",
"error_reason": null,
"billable_events_json": "{\"domain-lookup\":1}",
"checked_at": "2026-10-28T14:00:00.000Z"
}

The run also writes a RUN_SUMMARY record to its key-value store with counts per row status and per source, the requests made, and the charges.

Pricing

Pay per event. You pay for domain lookups and the run start.

EventFree planBronzeSilverGold
domain-lookup, one domain the registry answered for$0.0025$0.002375$0.00225$0.002125
apify-actor-start, once per run (one per GB of memory; the default 128 MB is one)$0.0006$0.0006$0.0006$0.0006

Per 1,000 domain lookups: $2.50 on the free plan, $2.13 on Gold.

Free rows: a domain whose registry publishes no creation or expiry date (partial), an error row, input that is not a domain, and a repeat of a domain in the same run. A run whose input is refused writes one free row and charges only the run start.

Free plan cap: 1.50 USD of evaluation a month, about 600 domain lookups. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd.

Mamba Labs pays the platform costs of your run. The registries' RDAP and WHOIS services are free and need no key.

Usage examples

Apify Console or API. Paste your domains and start the run. Read the rows with GET https://api.apify.com/v2/datasets/{datasetId}/items.

{
"domains": ["stripe.com", "notion.io", "lemonde.fr"]
}

Clay. Add an Apify column, pick this actor, and map your domain or website column to domain. Filter on row_status first, then on domain_age_days or days_until_expiry.

MCP. The Mamba Labs MCP server @mambalabsdev/mcp-whois-domain-lookup exposes the tool lookup_domain_whois to Claude and other MCP clients.

Error handling

CaseWhat you get
No domains, an empty list, a wrong type, or more than 5,000 domainsOne free row, row_status error, error_reason starting input_invalid:, and the run ends successfully. Only the run start is charged
An entry that is not a domain (an IP address, a bare TLD, text)A free row, error_reason invalid_domain
The registry says the domain is not registeredA charged row, registered false
The registry answers but publishes no dates (.de and .eu over WHOIS)A free row, row_status partial, with the status and nameservers it did publish
The RDAP server fails or times outThe actor asks the registry's WHOIS server instead; if that fails too, a free error row names both
A WHOIS server drops the connectionOne retry 3 seconds later, then a free error row
A WHOIS server refuses more queriesA free row, error_reason whois_rate_limited; rerun those domains later
The run nears its timeoutIt stops starting new domains 90 seconds before the timeout, writes the rest as free not_started rows, and ends successfully

Limitations

  • 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.

Mamba Labs actor suite

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
Agent to Brokerage ResolverePRRGLxOGyaVHO4dI
AI Tooling DetectorEwkHhmqiuJgRoVEbE
B2B Reddit Conversation MonitorSoDryzzsjmY3SsiyG
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Contact Details Extractor4mMncKaJykiq94grz
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Headcount EstimatoraHC4GROnNt6kfZe5r
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Social Presence Mapper4k6CCemkgBDz18m2h
Competitor Price, Stock, and Changelog MonitoryxdgCbUQ4PYQWwRNU
Contact Classifier0lGSeYJmniXhGANnO
Contractor License LookupWBYK3CPI2kdeq4bP1
Cookie Consent AuditTrKyOS0KBoGC35nbr
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Ecommerce Store DiscoveryPeHu4sLyFvQHXUUrX
Event Presence IndexWLhMy8fMDgsxdYxv5
Expert Witness DirectoryLIpwlgfE3LaQBaXd4
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Google Ads Transparency Monitor1eOwxhBVxzvOXAm4s
Government Contract Award MonitorzhEtllASykOcx9hJ8
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer FindertpkedmloIIWtXx6sg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Integration and Marketplace Presence MapperV0guNuvM85Q61f2gj
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Change TrackerL8UbEmMJC1XYPSZOb
Job Posting MonitorQCfICD9kOPiOdj5iI
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Local Business Lead BuilderqMN97aoHhsAS5bznV
Local Rank and Map Pack Trackergv0kyHGDIg8XscclB
Lookalike Company Findere2O426WBAbLLQL4Z2
Manufacturer and Supplier FinderQcsdmd0lUfPzVkonh
Meta Ad Library MonitorJ1GWlSXfSGU3u8Wng
Mobile Phone Waterfall6OOgPktf7RIa5XCOP
New Company Registrations Feedg2WfZhWvCtc57g2Jo
New Hire FindercKuc38p4nYHNF3IW8
Newsletter Sponsor TrackerqSwpqxD1TiPZpLQHv
Open Tender and RFP FinderkPTGz6t6TFoUUyfaO
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
Partner and Member Directory ExtractorZX0XJPPUvnFJxeC1a
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Person LinkedIn URL ResolverssuyPV8LnEsL8qbnb
Person Social Footprint MapperjfQXa2zW9FHCJot9K
Personal Email to Company ResolverAefT5Ye6YNPFQwJBf
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Podcast Guest and Host Findero2MGSvgbSLeeXOsIo
Prospect Engineq9rT6v64nUJdPexOQ
Public Feature Board and Roadmap MonitorrcHF5gj5r2Vqnry35
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reporting Window FinderuINxR7a1IW8qUTRUX
Sequencer Event PollerS6s8Rjd61tGdrMRk4
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
VC and Accelerator Portfolio List BuilderchH8hrfuoqqolW06m
WCAG Accessibility AuditP3jBj3FRghKEhX52z
Website Phrase and Business Model ClassifierCBuZ9k7sRwBeiKiCS
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel Stats Extractor6hSpD3kd2s2IQ4VSs

MCP servers for the suite are published under the npm scope @mambalabsdev.

Built by Mamba Labs.