Get SPF and DMARC presence + records, plus DKIM keys auto-probed across 29 common selectors (Google Workspace, M365, Mailchimp, SendGrid, Postmark, and more). No selector knowledge required, no manual DNS digging. Free tier.
Type any domain to see the live Email security (SPF/DMARC/DKIM) response from the API. Free, no signup — rate-limited to 5 lookups/day per browser.
// Click "Run lookup" to see the live API response for this endpoint
Every other "DKIM API" requires you to know the selector in advance. There's no DNS mechanism to discover selectors — you have to guess. We probe 29 of the most common selectors automatically so you get DKIM data without needing to know what to query.
present (boolean) and records (array of strings). DKIM also returns found (list of matching selectors) so you know which providers a domain uses./domain/{d}/email-security, or grab email + DNS + WHOIS + SSL + subdomains in a single /lookup/{d} call. Same API key, same pricing.Below: a real response for cloudflare.com. The dkim.found array tells you which providers the domain uses, while dkim.records contains the actual public keys.
{
"domain": "cloudflare.com",
"spf": {
"present": true,
"records": [
"v=spf1 ip4:199.15.212.0/22 include:_spf.google.com ~all"
]
},
"dmarc": {
"present": true,
"records": [
"v=DMARC1; p=reject; rua=mailto:dmarc-rua@cloudflare.com"
]
},
"dkim": {
"found": ["google", "selector1"], // 2 of 29 selectors matched
"records": [
{
"selector": "google",
"records": ["v=DKIM1; k=rsa; p=MIGfMA0G..."]
},
{
"selector": "selector1",
"records": ["v=DKIM1; k=rsa; p=MIIBIjANBgk..."]
}
],
"note": "DKIM auto-probed across 29 common selectors. Custom selectors not in this list won't be found."
}
}
Authenticate with your RapidAPI key, then call GET /domain/{domain}/email-security. The Python example below shows the canonical "audit our sending domain" pattern.
curl "https://domain-intelligence-api.p.rapidapi.com/domain/cloudflare.com/email-security" \ -H "X-RapidAPI-Host: domain-intelligence-api.p.rapidapi.com" \ -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY"
import requests
domain = "cloudflare.com"
url = f"https://domain-intelligence-api.p.rapidapi.com/domain/{domain}/email-security"
headers = {
"X-RapidAPI-Host": "domain-intelligence-api.p.rapidapi.com",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
}
r = requests.get(url, headers=headers, timeout=15)
data = r.json()
if not data["spf"]["present"]:
print(f"WARN: {domain} missing SPF")
if not data["dmarc"]["present"]:
print(f"WARN: {domain} missing DMARC")
if not data["dkim"]["found"]:
print(f"WARN: {domain} no DKIM found across 29 selectors")
else:
print(f"OK: {domain} uses DKIM selectors {data['dkim']['found']}")// Node 18+ has built-in fetch — no import needed
const domain = "cloudflare.com";
const res = await fetch(
`https://domain-intelligence-api.p.rapidapi.com/domain/${domain}/email-security`,
{ headers: {
"X-RapidAPI-Host": "domain-intelligence-api.p.rapidapi.com",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
}}
);
const data = await res.json();
console.log("SPF:", data.spf.present, "DMARC:", data.dmarc.present);
console.log("DKIM selectors found:", data.dkim.found);<?php
$domain = "cloudflare.com";
$ch = curl_init("https://domain-intelligence-api.p.rapidapi.com/domain/$domain/email-security");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-RapidAPI-Host: domain-intelligence-api.p.rapidapi.com",
"X-RapidAPI-Key: YOUR_RAPIDAPI_KEY",
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
echo "SPF: " . ($data["spf"]["present"] ? "yes" : "no");Email deliverability tooling, SaaS onboarding flows, anti-phishing, and security audits are the main applications.
Billed monthly via RapidAPI. Same pricing across all endpoints (email security, DNS, WHOIS, SSL, subdomains, and bundled /lookup). Cancel anytime.
Quick answers to common developer questions about the email security API.
google._domainkey.example.com or selector1._domainkey.example.com. There's no DNS mechanism to discover which selectors a domain uses programmatically. Our API probes 29 of the most common selectors (Google Workspace, Microsoft 365, Mailchimp, SendGrid, Postmark, Mandrill, Mailgun, generic selector1/selector2, etc.) so you don't have to know the selector in advance.note field documents this limitation. Common custom selectors (like Amazon SES hash-based selectors) require knowing the selector in advance — in that case you'd query DNS for it directly.p=reject or p=quarantine), and DKIM signing is configured. Run periodically to catch DNS drift before deliverability degrades.Free tier · No credit card · All endpoints included
Get your API key →