DNS Lookup & SSL Checker: SPF, DMARC, DKIM, Domain Expiry avatar

DNS Lookup & SSL Checker: SPF, DMARC, DKIM, Domain Expiry

Pricing

from $3.00 / 1,000 domain checks

Go to Apify Store
DNS Lookup & SSL Checker: SPF, DMARC, DKIM, Domain Expiry

DNS Lookup & SSL Checker: SPF, DMARC, DKIM, Domain Expiry

Bulk DNS lookup and SSL certificate checker: A, MX, TXT, NS, CAA records, SPF/DMARC/DKIM email security, TLS and domain expiry (RDAP) with scored issues. $3 per 1,000 domains.

Pricing

from $3.00 / 1,000 domain checks

Rating

0.0

(0)

Developer

Giorgos Myrianthous

Giorgos Myrianthous

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

A bulk DNS lookup, SSL certificate checker and SPF/DMARC/DKIM validator in one: every domain gets DNS records, email-security checks, SSL expiry, HTTPS/HSTS and domain expiry (official RDAP), plus a 0–100 score.

💲 $3 per 1,000 domains. Invalid domain names are free. Pay only for results. No subscription, and the Apify free plan's monthly credit covers small jobs.

Also known as: DNS lookup, bulk DNS records, MX lookup, SPF checker, DMARC checker, DKIM checker, SSL certificate checker, SSL expiry monitor, domain expiry checker, WHOIS/RDAP lookup, email deliverability check.

Quick start

  1. Click Start. The prefilled input works as is.
  2. Or paste this input (JSON tab):
{
"domains": [
"apify.com",
"example.com"
]
}

Output (one dataset item):

{
"domain": "apify.com",
"score": 100,
"issues": [],
"tlsDaysToExpiry": 79,
"domainDaysToExpiry": 3138,
"email": {
"spf": {
"allQualifier": "-all",
"dnsLookups": 10
},
"dmarc": {
"policy": "reject"
},
"dkimSelectorsFound": [
"google"
]
}
}

Use it from the API, AI agents (MCP), n8n, Make or Zapier

curl -X POST "https://api.apify.com/v2/acts/gmyri~domain-health-check/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"domains":["example.com","apify.com"],"expiryWarningDays":30}'
  • AI agents / MCP: connect https://mcp.apify.com/?actors=gmyri/domain-health-check to Claude, Cursor, ChatGPT or any MCP client. The input schema is fully described for tool calling.
  • Python: ApifyClient(token).actor("gmyri/domain-health-check").call(run_input={...})
  • n8n / Make / Zapier: use the Apify "Run Actor" action with gmyri/domain-health-check, then read the dataset items.

Quick FAQ

  • Does it return WHOIS contact details? No. It uses official RDAP and returns only the registrar, dates, status and DNSSEC. No personal data.
  • What if I set a spending limit? The Actor stops cleanly at your Max cost per run and you're never charged above it.

Details

Check any number of domains in one run and get a scored health report for each:

  • DNS records: A, AAAA, MX, NS, TXT, CAA (any type you choose)
  • Email security / deliverability: SPF (syntax, ~all/-all, 10-DNS-lookup limit), DMARC policy and reporting, DKIM selectors, MTA-STS, BIMI
  • TLS/SSL certificate: validity, issuer, days to expiry, TLS version
  • HTTPS setup: http → https redirect, HSTS, homepage status
  • Domain registration expiry from the registry's official RDAP service: registrar, created and expiry dates, status, DNSSEC

Each domain gets a 0–100 score and a list of issues with stable codes (NO_DMARC, SPF_TOO_MANY_LOOKUPS, TLS_EXPIRING, DOMAIN_EXPIRING…), so you can alert on them.

$3 per 1,000 domains. Invalid domain names are free.

Why this Actor

  • Monitoring-ready: schedule it daily or weekly and get warned before a certificate or a domain expires (expiryWarningDays, default 30).
  • Everything in one call: today you need a DNS lookup tool, an SPF/DMARC checker, an SSL checker and a WHOIS tool.
  • Reliable in the cloud: DNS over HTTPS (Cloudflare with a Google fallback) by default, with classic DNS available.
  • Privacy-safe: registration data comes from official RDAP, and registrant contact data is never collected.
  • Agent-friendly: flat, predictable JSON, a single primary event, and fast results (about 1–2 s per domain).

Typical uses

  • Agencies and MSPs: monitor every client domain for certificate and domain expiry, and for email spoofing protection
  • Email deliverability audits (SPF, DMARC, DKIM) before a cold or marketing campaign on your own domains
  • IT asset inventory: registrar, DNS provider, mail provider and CAA for a portfolio
  • Due diligence on supplier and partner domains
  • AI agents answering "is this domain set up correctly?"

Input example

{
"domains": ["apify.com", "example.com", "https://www.bbc.co.uk/news"],
"checkEmailSecurity": true,
"checkWebsite": true,
"checkRegistration": true,
"expiryWarningDays": 30
}
FieldDefaultWhat it does
domains–Domains or URLs (reduced to the domain, leading www. removed)
checkEmailSecuritytrueMX, SPF, DMARC, DKIM, MTA-STS, BIMI
checkWebsitetrueTLS certificate, http→https, HSTS
checkRegistrationtrueRDAP registrar and expiry
expiryWarningDays30Warn about certificates and domains expiring sooner than this
recordTypesA, AAAA, MX, NS, TXT, CAADNS records to return
dkimSelectorscommon selectorsSelectors to probe (add your provider's)
dnsTransportdohdoh (DNS over HTTPS) or udp
dnsServers1.1.1.1, 8.8.8.8Resolvers for udp
timeoutSecs8Per-check timeout
maxConcurrency5Domains in parallel

Output (one item per domain)

{
"domain": "apify.com",
"score": 100, "errorCount": 0, "issueCount": 0, "issues": [],
"tlsDaysToExpiry": 79, "domainDaysToExpiry": 3138,
"email": {
"mx": ["1 aspmx.l.google.com", "…"],
"spf": { "record": "v=spf1 … -all", "allQualifier": "-all", "dnsLookups": 10 },
"dmarc": { "record": "v=DMARC1; p=reject; …", "policy": "reject", "hasRua": true },
"dkimSelectorsFound": ["google"], "mtaSts": false, "bimi": false
},
"tls": { "valid": true, "issuer": "Amazon", "expiresAt": "2027-01-16T23:59:59+00:00", "daysToExpiry": 79 },
"web": { "httpRedirectsToHttps": true, "httpsStatus": 200, "hsts": "max-age=…" },
"registration": { "registrar": "Amazon Registrar, Inc.", "createdAt": "…", "expiresAt": "…", "dnssec": false },
"dns": { "A": ["…"], "NS": ["…"], "CAA": ["0 issue \"letsencrypt.org\""] }
}

Issue codes

SeverityCodes
errorNXDOMAIN, MULTIPLE_SPF, SPF_TOO_MANY_LOOKUPS, TLS_INVALID, TLS_EXPIRED, DOMAIN_EXPIRED
warningNO_SPF, WEAK_SPF_ALL, NO_DMARC, TLS_EXPIRING, DOMAIN_EXPIRING, NO_HTTPS_REDIRECT, HTTPS_ERROR_STATUS
noticeDMARC_P_NONE, DKIM_NOT_FOUND, NO_MX, NO_HSTS, NO_CAA, NOT_REGISTERED

Score = 100 − 25 per error − 10 per warning − 3 per notice (minimum 0).

Pricing (pay per event)

EventPrice
Domain checked (primary)$0.003 ($3 / 1,000)
Actor start$0.00005 per run (Apify default)

Platform usage is included, and the Actor stops cleanly at your Max cost per run.

Use from AI agents (MCP), n8n, Make, Zapier and the API

  • MCP: add gmyri/domain-health-check to the Apify MCP server.
  • n8n / Make / Zapier: run the Actor on a schedule and filter dataset items where errorCount > 0 or tlsDaysToExpiry < 14.
  • API:
    curl -X POST "https://api.apify.com/v2/acts/gmyri~domain-health-check/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
    -H 'Content-Type: application/json' -d '{"domains":["example.com"]}'

FAQ

Is DKIM detection complete? DKIM keys can only be found if you know the selector. The Actor tries common ones (Google, Microsoft 365 and generic selectors). Add your provider's selector for a definitive answer.

Why is registration data missing for some TLDs? A few ccTLDs have no public RDAP service yet. Those domains still get every other check.

Do you collect WHOIS contact details? No. Only registrar, dates, status and DNSSEC are returned.