Domain WHOIS Lookup API - RDAP, DNS Records, SSL Expiry
Pricing
from $1.05 / 1,000 results
Domain WHOIS Lookup API - RDAP, DNS Records, SSL Expiry
Domain WHOIS lookup API built on official RDAP (IANA bootstrap). For each domain you get registrar, creation and expiry dates, domain age, days to expiry, status codes, nameservers and DNSSEC, plus optional DNS records (A, AAAA, MX, NS, TXT, SPF, DMARC), the SSL certificate (issuer, expiry, SANs) an
Pricing
from $1.05 / 1,000 results
Rating
0.0
(0)
Developer
Martin Petrov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Security
Limited permissionsShare
Need to know who registered a domain, when it expires, which nameservers it uses, whether its SSL certificate is about to run out and where it redirects? Those facts live in four different places (WHOIS/RDAP, DNS, TLS, HTTP). This actor collects them in one call and returns one clean JSON row per domain.
Registration data comes from the official RDAP registry servers (found through the IANA bootstrap file), not from scraping WHOIS websites. No API key, no login, no proxies. Personal data of registrants is never output: you get the registrar (a company) and technical facts only.
Who needs it
- Security and IT teams: watch your own and your vendors' domains for expiry, nameserver changes and certificates that are about to expire.
- Sales and lead-ops: enrich a company list with domain age, registrar, mail provider (MX) and SPF/DMARC setup.
- Domain investors and SEO tools: domain age, expiry date and status codes in bulk.
- AI agents and chatbots: a single tool call answers "who owns example.com, is it expiring, is the certificate valid?".
What you get per domain
| Field | Meaning |
|---|---|
domain, registrar, registrarIanaId | Normalized domain and the registrar company with its IANA ID |
createdDate, updatedDate, expiryDate | Registration events (ISO 8601, UTC) |
domainAgeDays, daysToExpiry | Calculated for you |
status, nameservers, dnssec | EPP status codes, delegated nameservers, DNSSEC signed or not |
rdapSource | The registry RDAP URL the data came from |
dns (optional) | A, AAAA, MX, NS, TXT, CAA plus parsed SPF and DMARC |
ssl (optional) | Validity, issuer, notBefore, notAfter, daysLeft, TLS version, SANs |
redirect (optional) | Redirect chain from http://domain and the finalUrl with status |
changes | Only in only-new mode: what changed since the last run |
A domain that cannot be looked up (not registered, registry down or rate limited) is not saved and not charged; the reason is listed in the RUN_SUMMARY record (failed, lastError).
How to use it (step by step)
- Click Try for free.
- Paste your domains into Domains. The default (apify.com, github.com, wikipedia.org) works immediately.
- Switch DNS, SSL and redirect checks on or off.
- Click Start and download JSON, CSV or Excel, or call it by API.
API example (copy and paste)
Replace YOUR_APIFY_TOKEN with your token from Apify Console, Settings, Integrations.
curl -s -X POST "https://api.apify.com/v2/acts/martin10291~domain-whois-dns-lookup/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"domains":["apify.com","github.com","wikipedia.org"]}'
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('martin10291/domain-whois-dns-lookup').call({domains: ['apify.com', 'github.com', 'wikipedia.org'],includeDns: true,includeSsl: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((d) => `${d.domain}: expires in ${d.daysToExpiry} days, SSL ${d.ssl?.daysLeft} days`));
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("martin10291/domain-whois-dns-lookup").call(run_input={"domains": ["apify.com", "github.com", "wikipedia.org"],})for d in client.dataset(run["defaultDatasetId"]).iterate_items():print(d["domain"], d["registrar"], d["daysToExpiry"], (d.get("ssl") or {}).get("daysLeft"))
Use it from AI agents (MCP)
This actor works with the Apify MCP server: add martin10291/domain-whois-dns-lookup as a tool and Claude, ChatGPT or any MCP-capable agent can look up domains on demand. The output is flat, documented JSON, so agents do not need to parse WHOIS text.
Domain availability check
Every row has registered and available. A name with no registry record (RDAP 404) and no DNS delegation comes back as "registered": false, "available": true instead of an error, so you can check a list of name ideas in one run. TLDs whose registry has no RDAP server (for example .io) are still answered through DNS: registered or likely available. Always confirm at a registrar before buying (reserved and premium names exist).
{"domain": "my-new-startup-idea-2026.io", "registered": false, "available": true, "availabilitySource": "no-rdap+dns"}
Expiring soon: set expiringWithinDays (e.g. 30) to keep only domains whose registration ends within that many days.
Monitoring and alerts
In only-new mode rotating A/AAAA IPs (CDNs, load balancers) are ignored by default; turn on trackIpChanges to flag them too.
Turn on Only new or changed domains and set a Monitor ID. The actor remembers a snapshot per domain (registrar, expiry, status, nameservers, DNSSEC, DNS records, certificate issuer and expiry, final URL) and outputs only domains where something changed, with a changes list such as ["nameservers", "ssl.notAfter"]. The first run reports every domain as ["new"]. Schedule it daily and connect a webhook, Slack or email. Each result is paid for once.
Input
| Field | Default | Description |
|---|---|---|
domains | apify.com, github.com, wikipedia.org | Domains or URLs (host is used) |
includeDns | true | DNS records, SPF, DMARC |
includeSsl | true | TLS certificate facts |
includeRedirects | true | Redirect chain and final URL |
onlyNew | false | Output only new or changed domains |
monitorId | default | Separate memory per watch list |
maxConcurrency | 5 | Parallel lookups (1-20) |
Pricing
Pay per event, about $1.50 per 1,000 domains. Failed lookups are free.
Data sources and limits
- Registration: official RDAP servers from the IANA bootstrap (
data.iana.org/rdap/dns.json). A few registries do not publish RDAP, or rate-limit heavy use; those domains are reported as failed. - DNS: live queries through the system resolver. SSL: a normal TLS handshake on port 443. Redirects: plain GET requests with the honest User-Agent
RadarDomainLookup/1.0. - No registrant names, emails, phones or addresses are collected or output.
- Use the registered domain (
example.co.uk), not a subdomain.
FAQ
Is this WHOIS? It is the modern replacement: RDAP is the official JSON protocol that registries run today. Same registration facts, structured.
Why no owner name or email? Registries redact it since GDPR, and this actor deliberately never outputs personal data.
Does it need proxies? No.
Use it as an integration (chain it after another actor)
This actor can run automatically after any actor whose results contain a website or domain.
- Open the source actor in Apify Console and go to the Integrations tab.
- Click Add integration -> Actor, pick this actor and set Dataset to
{{resource.defaultDatasetId}}(leavedomainsempty). Set your other options and save. - When the source run finishes, this actor reads its dataset and processes every row. The field is detected automatically; set Dataset field if your column has another name.
You can also start it by hand with datasetId (pick a dataset or paste its ID) to process an existing dataset.
Good sources to chain from:
- compass/crawler-google-places (Google Maps Scraper)
- martin10291/local-business-leads-osm
- martin10291/reddit-posts-comments-extractor (domain)
- martin10291/website-tech-stack-detector
- any lead list with a website/domain column