← All APIs Validation

Bulk DMARC Record Lookup API

Look up DMARC email security records for one or many domains at once.

Give this tool a list of domain names and it will instantly check each one's DMARC email security record. DMARC is a standard that tells email providers how to handle fake or spoofed emails pretending to come from your domain. For each domain you submit, you get back whether a valid record exists, what the policy is (none, quarantine, or reject), whether reporting addresses are set up, and the full raw record text. Perfect for auditing many domains at once without any setup.

POSThttps://dmarc-lookup.underscoredone.com/dmarc-lookup
Pricing

$0.01 per request — pay via x402/USDC. No account needed.

How to use

Call this endpoint with POST and a JSON body containing a 'domains' array of bare domain names (no http:// or www), e.g. {"domains": ["example.com", "mycompany.org"]}. Comma-separated strings inside an array entry are also tolerated and will be split. Each domain in the response will have: 'domain' (the input domain), 'recordStatus' ('Valid', 'Invalid', or 'Not Found'), 'domainPolicy' (the p= tag value such as 'none', 'quarantine', 'reject', or empty string if not found), 'reportingEnabled' (true if rua or ruf tags are present), and 'rawRecord' (the full TXT record string, or empty string if none). A 'Valid' record has both v=DMARC1 and a p= tag. 'Invalid' means a record was found but is missing one of those required tags. 'Not Found' means no TXT record exists at _dmarc.{domain}. DNS failures for a specific domain are returned as 'Not Found' rather than errors. A 400 is only returned if the domains array is empty or every entry is blank. A 422 is returned if the 'domains' field is missing from the body or is not an array.

Input parameters
NameTypeRequiredDescription
domainsarrayyesA list of one or more domain names to check. Use bare domain names only — no http://, https://, or www. Example: ["onescales.com", "hillms.com"]
Example response
{
  "api_version": "1.0.0",
  "results": [
    {
      "domain": "onescales.com",
      "recordStatus": "Valid",
      "domainPolicy": "reject",
      "reportingEnabled": true,
      "rawRecord": "v=DMARC1;p=reject;rua=mailto:[email protected],mailto:[email protected],mailto:[email protected];ruf=mailto:[email protected];fo=1;"
    },
    {
      "domain": "hillms.com",
      "recordStatus": "Valid",
      "domainPolicy": "reject",
      "reportingEnabled": true,
      "rawRecord": "v=DMARC1;p=reject;rua=mailto:[email protected];"
    },
    {
      "domain": "nodmarc-example.com",
      "recordStatus": "Not Found",
      "domainPolicy": "",
      "reportingEnabled": false,
      "rawRecord": ""
    }
  ],
  "total": 3,
  "valid_count": 2,
  "invalid_count": 0,
  "not_found_count": 1
}
Error responses
StatusMeaning
400Bad request — your input failed validation or could not be processed. Check the detail field for specifics.
402Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol.
422Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics.
Links