DNS Lookup — Records, SPF Lookup Counts, DKIM & DMARC by Domain avatar

DNS Lookup — Records, SPF Lookup Counts, DKIM & DMARC by Domain

Pricing

from $1.60 / 1,000 domain checkeds

Go to Apify Store
DNS Lookup — Records, SPF Lookup Counts, DKIM & DMARC by Domain

DNS Lookup — Records, SPF Lookup Counts, DKIM & DMARC by Domain

DNS lookup: Bulk records, SPF lookup limits, DKIM and DMARC findings. $0.002 per domain checked; start extra; usage included; failed results uncharged.

Pricing

from $1.60 / 1,000 domain checkeds

Rating

0.0

(0)

Developer

Logan Parker

Logan Parker

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

DNS lookup and email authentication checks for domain lists: return DNS records, SPF lookup counts, DMARC alignment and DKIM keys for supplied selectors, with severity-ranked findings. AI agents can call and pay through Apify MCP. List event rates are $0.002 per domain checked; start is extra, usage is included and failed results are uncharged.

Example result

Example record for the minimal input under How to use it, as this Actor returned it on 2026-10-18 in a run of its production image; the record is kept unchanged with the release.

{
"domain": "apify.com",
"ok": true,
"records": {
"A": [
"3.170.42.100",
"3.170.42.68",
"3.170.42.109",
"3.170.42.76"
],
"AAAA": [
"2600:9000:2870:5800:9:a03e:6540:93a1",
"2600:9000:2870:1800:9:a03e:6540:93a1",
"2600:9000:2870:1600:9:a03e:6540:93a1",
"2600:9000:2870:5000:9:a03e:6540:93a1",
"2600:9000:2870:400:9:a03e:6540:93a1",
"2600:9000:2870:c800:9:a03e:6540:93a1",
"2600:9000:2870:e200:9:a03e:6540:93a1",
"2600:9000:2870:9a00:9:a03e:6540:93a1"
],
"CNAME": [],
"MX": [
{
"preference": 1,
"exchange": "aspmx.l.google.com"
},
{
"preference": 10,
"exchange": "aspmx2.googlemail.com"
},
{
"preference": 10,
"exchange": "aspmx3.googlemail.com"
},
{
"preference": 5,
"exchange": "alt1.aspmx.l.google.com"
},
{
"preference": 5,
"exchange": "alt2.aspmx.l.google.com"
}
],
"NS": [
"ns-449.awsdns-56.com.",
"ns-839.awsdns-40.net.",
"ns-1225.awsdns-25.org.",
"ns-1928.awsdns-49.co.uk."
],
"TXT": [
"aisle-domain-verification-ymx7gd=j3J4hCmXHIc9R0RNQCfa8xdSf",
"google-site-verification=R_4agUZyHorQrO5QGFa6ZB_o-uDxq82NY-EteDUpPvo",
"google-site-verification=XU737OZxx6NvGd3NQK9MRt98qxRMjx3RByq-O0cy16I",
"google-site-verification=ZqRh2_YSBHj2bo_KsEdu6MfmTMKJYLpDDL3oPtOrN_A",
"google-site-verification=jrECJwBG9eeO_FUrOMhp7JY1oF8JSBxhzmLsLGvrt9s",
"mixpanel-domain-verify=44615d9c-27f2-4587-a781-8a0a1c734e9a",
"openai-domain-verification=dv-WTM7Nna92Owwh4sgmDOVUyyt",
"tito-domain-verification=pbg2696rvzbax2t4dl7h5ynqm",
"v=MCPv1; k=ed25519; p=1rDnoEigwTr+4JjG89+sLbdNnswCnLjmaeT34srW53Y=",
"v=spf1 a mx include:_spf.google.com include:mailgun.org include:amazonses.com include:19497222.spf05.hubspotemail.net -all",
"zapier-domain-verification-challenge=2c358aa9-fa36-419f-b21a-ca9eb6f2791d"
],
"CAA": [
"0 issue \"amazonaws.com\"",
"0 issue \"digicert.com\"",
"0 issue \"letsencrypt.org\"",
"0 issuewild \"amazonaws.com\"",
"0 issuewild \"letsencrypt.org\""
],
"SOA": [
{
"mname": "ns-839.awsdns-40.net",
"serial": 1,
"refresh": 7200,
"retry": 900,
"expire": 1209600,
"minimum": 86400
}
]
},
"spf": {
"record": "v=spf1 a mx include:_spf.google.com include:mailgun.org include:amazonses.com include:19497222.spf05.hubspotemail.net -all",
"mechanisms": [
"a",
"mx",
"include:_spf.google.com",
"include:mailgun.org",
"include:amazonses.com",
"include:19497222.spf05.hubspotemail.net",
"-all"
],
"lookups": 10,
"allQualifier": "-",
"valid": true
},
"dmarc": {
"policy": "reject",
"subdomainPolicy": "reject",
"pct": 100,
"alignment": {
"dkim": "r",
"spf": "r"
},
"reportingDomains": [
"apify.com"
]
},
"mtaSts": {
"present": true,
"id": "29919a352ef9476a",
"valid": true
},
"tlsRpt": {
"present": true,
"valid": true,
"reportingDomains": [
"apify.com"
]
},
"bimi": {
"present": true
},
"dkim": {},
"dnssec": {
"validated": false,
"evidence": "recursive-resolver AD flag on NS response; no local signature validation"
},
"findings": []
}

How to use it

Start a run in Apify Console, by API or from an agent with an input like this one — it is the input Apify runs every day to test this Actor:

{"domains": ["apify.com"]}

Start with the minimal JSON example above, then adjust the fields in the table below. Read the Example result and Output fields sections for the returned record, Errors for failure codes, and Events and prices for result events and the separate platform start.

FieldTypeMeaning
domainsarrayDomain names, not URLs or IP addresses; internationalized names use IDNA.
dkimSelectorsarrayOnly these selectors are queried; no selector enumeration.

Events and prices

EventTitleCharged whenFREE / BRONZESILVERGOLD / PLATINUM / DIAMOND
domain-checkedDomain checkedOne domain resolved and assessed successfully.$0.002$0.0018$0.0016

Platform usage is not passed through. Apify's automatic actor-start event remains $0.00005 per started GB (one GB or less counts once). The synthetic dataset-item event is absent. Charge limits stop further paying work; unprocessed inputs receive uncharged errors. Completed readable pending events are settled on abort.

Worked cost example: ten successful primary events cost $0.02 at list, plus actor start. Failures are not included in that count.

Call it from an agent

Through Apify's MCP server (https://mcp.apify.com) use call-actor:

{
"actor": "hermeskd/dns-and-email-auth",
"input": {
"domains": [
"apify.com"
]
},
"callOptions": {
"maxTotalChargeUsd": 0.05,
"timeout": 600
},
"waitSecs": 30
}

Then call get-dataset-items with the returned defaultDatasetId. Dedicated tool URL: https://mcp.apify.com?tools=hermeskd/dns-and-email-auth

Output fields

FieldMeaning
domainNormalized domain, or original invalid input.
okTrue when records were resolved and a readable assessment was produced.
recordsA, AAAA, CNAME, MX, NS, TXT, CAA and SOA; report mailboxes redacted and SOA rname omitted.
spfStatic recursive SPF term assessment; macro-dependent validity null, not a sender/IP authorization verdict.
dmarcPolicy/alignment and reporting destination domains only.
mtaStsMTA-STS TXT presence/id validation only; no HTTPS policy claim.
tlsRptTLS-RPT TXT presence and reporting domains only.
bimiDefault-selector BIMI TXT presence only; no logo/certificate validation.
dkimCaller-named selector key assessments; RSA DER parsed; unsupported algorithms unassessed.
dnssecRecursive resolver evidence, not local cryptographic validation.
findingsAuthentication findings.
errorFailure, always uncharged.

Limits and run time

1–100 domains and at most 20 caller-named DKIM selectors. Queries use the configured recursive resolver with a five-second lifetime; no selector guessing. SPF reports the known recursive lookup-causing term count, stopping at eleven; it does not authenticate a sender/IP. Macro-dependent validity is null. DNSSEC validated is the resolver AD flag on the NS response, not local cryptographic validation or mere DS presence. MTA-STS is a TXT check, not an HTTPS policy check. BIMI is default-selector TXT presence only. Report mailboxes are removed even from raw TXT/CAA values, and SOA rname is omitted.

The default run timeout is 600 seconds. Typical run time on Apify, measured by its deploy of 2026-10-21: the minimal input under How to use it took 3–4 seconds a run at the default 512 MB (three runs, peak memory 51 MiB). The same input also ran and passed the pricing floor at 256 MB and 1,024 MB (the deploy's memory probes).

Errors

CodeMeaning
nxdomainThe DNS name does not exist.
servfailThe configured recursive resolver could not answer.
invalid_domainInput is not a valid domain name.
timeoutThe input did not finish within the run's time budget.
invalid_inputThe run input passed the input schema but cannot be used; the message names the field.
internal_errorUnexpected failure; the message carries the error class.
charge_limit_reachedThe run reached its maximum total charge; this input was not processed.
robots_disallowedrobots.txt forbids fetching the URL; no request was made to it.
blocked_hostThe host is on the deny-list or resolves to a private or local address; no request was made.
download_failedThe request or connection failed within its bounded deadline.

No failure record is charged. A run fails only when all input outcomes are Actor-side failures; caller errors and a mixture of caller/Actor failures do not fail the run.

Sources and terms

Public DNS protocol records are queried through the configured recursive resolver under a five-second query lifetime, with no alternate resolver selected by the Actor. Queries are a few dozen per domain; use resolvers fairly. Only caller-named DKIM selectors are queried. Reporting mailbox local parts are removed from raw records and assessments; SOA rname is omitted. DNSSEC validated reports recursive-resolver AD evidence, not local cryptographic validation. BIMI is presence only; no certificate, logo or identity verification is claimed. No caller credentials, cookies, SMTP login or sending is involved. The 2026-10-18 GitHub-hosted production-container run resolved public DNS and produced the genuine record shown above.

Not affiliated

This Actor is not affiliated with Google, Apify, IANA, Verisign or other named protocol/source providers. Third-party names describe compatibility and source material.

Changelog

  • 1.0 (2026-10-26) — store listing rewritten for the people and agents searching for this job: title, description, search-engine title and description, categories, and the README in the order a searcher reads it (what it does, a real result, how to use it, prices, the agent call).
  • 1.0 (2026-10-21) — first public release on Apify Store, after the deploy's typical calls, memory probes, benchmarks and pricing floor passed on the platform.
  • 1.0 (2026-10-19) — repairs from an independent review: DNS privacy, malformed publisher URLs, empty sitemap failures, responsive assets and schema prefill, as applicable to this Actor.
  • 1.0 (2026-10-18) — the production image, smoke input, three example tasks and benchmarks passed on GitHub-hosted Linux.
  • 1.0 (2026-10-17) — first implementation.