sfoln/domain-intelligence · Developer tools, SEO tools, Automation
Bulk WHOIS and DNS lookup: registrar, creation and expiry dates (RDAP), availability, DNS records, SPF/DMARC and mail provider, SSL certificate, plus the homepage security-header grade and tech hints, one JSON record per domain. $3 per 1,000 domains; unregistered domains are free.
Look up any list of domains and get one complete record per domain: registration data (registrar, creation and expiry dates, status, nameservers, DNSSEC) from RDAP — the official successor of WHOIS — plus availability (can the domain be registered?), DNS records (A, AAAA, MX, NS, TXT), email security (SPF, DMARC policy, detected mail provider), the SSL/TLS certificate (issuer, expiry, SANs, protocol) and a homepage check (HTTP status, redirects, final URL, title, security-header grade A–F, favicon and detected technologies). Built for lead qualification, security and compliance audits, domain portfolio monitoring, brand protection and AI agents.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
Domain report domain-intelligence
$0.003
$3 / 1,000
Charged once per domain for which at least one of the checks (RDAP registration data, DNS, SSL certificate, homepage) returned data.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
POST https://api.apify.com/v2/actors/sfoln~domain-intelligence/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Who is the registrar of apify.com, when does it expire, which mail provider does it use, and is example-brand-name-zz9.com still available?
Input
Input fields
Paste domains or URLs (one per line). Each domain produces one dataset record combining registration (RDAP), availability, DNS, email-security, SSL and homepage data.
Field
Type
Default
Meaning
domains *
array
required
Domains or URLs Domain names (apify.com) or URLs (https://www.apify.com/store). The host is extracted, "www." removed and duplicates dropped. Registration data is looked up for the registrable domain. Accounts on the Apify free plan can process up to 10 domains per run.
checkTls
boolean
true
Check SSL/TLS certificate Open a TLS connection on port 443 and report issuer, validity dates, SANs and protocol.
checkHomepage
boolean
true
Check homepage Fetch the homepage (https, falling back to http; 8 s timeout, first 512 KB) for HTTP status, redirects, final URL, title, security-header grade (HSTS, CSP, X-Frame-Options, …), favicon and detected technologies.
maxDomains
integer
1000
Max domains Safety cap on the number of domains processed in this run. Range 1–50000.
concurrency
integer
5
Concurrency How many domains are analysed in parallel. Some registries rate-limit RDAP; lower this for very large lists of one TLD. Range 1–10.
includeRaw
boolean
false
Include raw RDAP response Attach the unmodified RDAP JSON to each record as raw.rdap (larger output).
Example input
{
"domains": [
"apify.com",
"wikipedia.org"
]
}
Output
One record per input item
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string
Input Domain or URL as submitted.
domain
string | null
Domain Normalized host (lower-case, without www.). e.g. "apify.com"
registrableDomain
string
Registrable domain Registrable domain from the Public Suffix List (ICANN section), used for the RDAP lookup. e.g. "apify.com"
registered
boolean | null
Registered true = an RDAP record or DNS data exists (for the host or its registrable domain); false = the registry's RDAP service has no record and NXDOMAIN; null = undetermined.
available
boolean | null
Available true = the registrable domain answers NXDOMAIN and RDAP has no record (it can be registered); false = it resolves or RDAP has a record; null = undetermined (the registry did not answer or offers no RDAP service, or the name is outside the Public Suffix List).
registrar
string | null
Registrar
createdAt
string | null
Created
expiresAt
string | null
Expires
domainAgeDays
integer | null
Domain age (days)
mailProvider
string | null
Mail provider google | microsoft | zoho | proton | yahoo | icloud | fastmail | yandex | mimecast | proofpoint | amazon-ses | other | none (null MX) | null (no MX).
DNS a, aaaa, mx[{priority,exchange}], ns, txt, spf{record,allQualifier,includes,multipleRecords}, dmarc{record,policy,subdomainPolicy,pct,rua}, hasMx, nxdomain.
DNS first: a registrable domain that answers NXDOMAIN is a candidate, and the registry's RDAP service confirms it by having no record (HTTP 404). Then available is true. A domain that resolves or has an RDAP record is not available. When the registry does not answer (rate limits, ccTLDs without RDAP), or the name is outside the Public Suffix List, available is null. Unregistered domains are never charged.
Why is a subdomain returned as not_found?
When the host itself does not exist in DNS (for example a typo like shpo.example.com) while its registrable domain is registered, the record says so with error code host_not_found and is not charged. Look up the registrable domain to get its registration data.