Email Deliverability Checker: SPF, DKIM & DMARC Audit avatar

Email Deliverability Checker: SPF, DKIM & DMARC Audit

Pricing

from $8.00 / 1,000 domain auditeds

Go to Apify Store
Email Deliverability Checker: SPF, DKIM & DMARC Audit

Email Deliverability Checker: SPF, DKIM & DMARC Audit

Bulk SPF, DKIM, DMARC, MTA-STS and BIMI checker. Grades each domain A-F with plain-English fixes and flags whether it meets Gmail and Yahoo bulk-sender rules. $0.008 per domain.

Pricing

from $8.00 / 1,000 domain auditeds

Rating

0.0

(0)

Developer

K09 Tools

K09 Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Check whether a domain's email setup will land in the inbox. This bulk SPF, DKIM and DMARC checker audits one domain or thousands. Each domain gets an A–F grade, a score out of 100, and plain-English fixes you can paste into your DNS. It also flags whether the domain has the basics Gmail and Yahoo require from bulk senders.

Checking a single domain? Try the free browser version: K09 SPF, DKIM & DMARC Checker. This Actor is for lists of domains, CSV export, the API and scheduled monitoring.

Use it to: audit your own sending domains before a campaign, check client domains (agencies, MSPs, IT consultants), qualify leads by email-security maturity, or monitor a portfolio of domains for misconfigurations.

What it checks

CheckDetails
SPFRecord present, exactly one record, final all policy (-all, ~all, ?all, +all), the 10-DNS-lookup limit (counted recursively through includes and redirects), broken includes, deprecated ptr.
DMARCRecord present, policy (none / quarantine / reject), reporting address (rua), pct, duplicate records.
DKIMProbes 40+ common selectors (Google Workspace, Microsoft 365, Mailchimp, SendGrid, Amazon SES, Zoho, Proton, HubSpot and more). Detects revoked keys and wildcard DNS so you don't get false positives.
MXWhether the domain can receive mail.
MTA-STS & TLS-RPTTransport-security policies for inbound mail.
BIMIBrand-logo record.

Grades

PointsGrade
90–100A
75–89B
60–74C
40–59D
0–39F

Points: SPF 30, DMARC 40 (a reject policy scores highest), DKIM 20, MTA-STS / TLS-RPT / BIMI 10.

Input

Enter domains, email addresses or website URLs (they're normalized to the domain), paste a list, or upload a CSV/TXT file. Duplicates are checked once.

Output

One row per domain. The Audit view gives a quick overview, and the All issues & fixes view lists every issue with its fix:

{
"domain": "example.com",
"grade": "C",
"score": 65,
"meetsBulkSenderBasics": false,
"spfSummary": "-all · 0 lookups",
"dmarcSummary": "p=reject",
"dkimSummary": "unknown (wildcard DNS)",
"topFix": "DMARC has no \"rua\" address, so you get no reports. Add \"rua=mailto:dmarc@example.com\" ...",
"issues": [{ "severity": "warning", "message": "...", "fix": "..." }]
}

Full raw records (SPF, DMARC, DKIM selectors found, MX hosts) are included for each domain.

Limitations

  • DKIM keys can't be listed from DNS, only guessed by selector name. "Not found" means "not under a common selector name". The domain may still sign with a custom one.
  • DMARC alignment and actual mail delivery can't be verified from DNS alone. meetsBulkSenderBasics means the required records exist and look valid.
  • Only public DNS is queried. Nothing is sent to the domains' mail servers.

Pricing

$0.008 per domain audited (duplicates and invalid entries are free). If you set a maximum cost for the run, the Actor audits as many domains as that covers.

Use it from code or AI agents

Every run can be started from the API, and results come back as JSON, CSV or Excel. Replace YOUR_APIFY_TOKEN with the token from Apify Console → Settings → API & Integrations.

cURL (runs the Actor and returns the results in one call):

curl -X POST "https://api.apify.com/v2/acts/k09~email-domain-audit/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":["example.com","yourcompany.com"]}'

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("k09/email-domain-audit").call(run_input={
"domains": [
"example.com",
"yourcompany.com"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('k09/email-domain-audit').call({
"domains": [
"example.com",
"yourcompany.com"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

No-code and AI agents: the Actor works with Apify's Zapier, Make and n8n integrations, can run on a schedule from the Console, and can be used as a tool by AI agents through Apify's MCP server (see Apify's MCP documentation).