Company Email Security Checker
Check SPF, DMARC, DKIM, MX and BIMI for a list of domains in bulk and get an A-to-F email-security grade plus the mail provider.
Check SPF, DMARC, DKIM, MX and BIMI for a list of domains in bulk and get an A-to-F email-security grade plus the mail provider. Pure DNS - no scraping, no blocks. GDPR-clean. Free on a domain that doesn't resolve.
$4.00 / 1,000 · 100.0% success over 29 public runs in the last 30 days.
Run it on Apify → Free to try - runs bill per result on your own account.
What you give it
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
domains |
array | The domains to check email security for, one per line. A bare domain (stripe.com), a URL or a www host all work. Only have company names? Run the Company Domain Finder first. | ["stripe.com", "github.com", "example.com"] |
maxItems |
integer | Stop after this many domains. Default 1000; free-plan runs are capped at 5. | 1000 |
What you get back
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
A real result row from a recent run:
{
"bimi": false,
"checkedAt": "2026-11-04T12:50:06.468Z",
"dkim": {
"present": true,
"selectors": [
"google",
"s1",
"s2",
"mandrill"
]
},
"dmarc": {
"aggregateReports": true,
"pct": 100,
"policy": "reject",
"present": true,
"record": "v=DMARC1; p=reject; pct=100; fo=1; rua=mailto:dmarc-reports@stripe.com; ruf=mailto:dmarc-forensics@stripe.com;"
},
"domain": "stripe.com",
"grade": "A",
"hasMx": true,
"input": "stripe.com",
"mailProvider": "Google Workspace",
"mtaSts": false,
"mxHosts": [
"aspmx.l.google.com",
"alt1.aspmx.l.google.com",
"alt2.aspmx.l.google.com",
"aspmx2.googlemail.com",
"aspmx3.googlemail.com"
],
"spf": {
"present": true,
"qualifier": "~all",
"record": "v=spf1 ip4:198.2.180.60/32 ip4:13.111.2.227/32 include:spf1.stripe.com include:greenhouse-outbound-mail.stripe.com include:_spf.qualtrics.com ~all"
},
"status": "checked"
}
| Field | Type | Meaning |
|---|---|---|
input |
string | The domain from the input. |
domain |
['string', 'null'] | The normalized domain, or null if invalid. |
grade |
['string', 'null'] | A (DMARC reject + SPF) down to F (no SPF, no DMARC). The domain's defence against email spoofing, from the records a receiver enforces. |
hasMx |
boolean | Whether the domain receives email (has MX records). |
mxHosts |
array | MX hostnames, by priority. |
mailProvider |
['string', 'null'] | The mailbox provider inferred from the MX hosts. |
spf |
object | SPF record: present, the record, and the all-qualifier (-all strict, ~all soft, ?all/+all open). |
dmarc |
object | DMARC policy: present, p= (none/quarantine/reject), pct, and whether aggregate reports (rua) are collected. |
dkim |
object | DKIM found by probing common selectors (best effort - a miss does not disprove DKIM). |
bimi |
boolean | Whether a BIMI record (inbox brand logo) is published. |
mtaSts |
boolean | Whether MTA-STS (enforced TLS for inbound mail) is published. |
status |
string | checked, unreachable (domain does not resolve), or invalid. |
checkedAt |
string | When the check ran (ISO timestamp). |
Health
100.0% success over 29 public runs in the last 30 days. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.