input | string | object | Input The address as you sent it. e.g. "Jane.Doe@Gmial.com" |
email | string | null | Email Normalized address: lower case, ASCII (punycode) domain, without spaces, <…> or mailto:. Null when the syntax is invalid. e.g. "jane.doe@gmial.com" |
verdict | string | Verdict invalid_syntax | domain_not_found | no_mail_server | disposable | role | ok | unknown (DNS failed: not charged). e.g. "disposable" |
quality | string | Quality good (passed every check) | risky (role account, likely typo, or not checkable) | bad (cannot or should not receive mail). e.g. "bad" |
reason | string | Reason Short explanation of the verdict. |
deliverable | string | Deliverable no = cannot receive mail; unknown = only a mailbox-level (SMTP) check could tell. This Actor never answers yes. |
domain | string | null | Domain Lower-case ASCII domain of the address. |
canonicalEmail | string | null | Canonical email Provider-aware form for de-duplication (Gmail ignores dots and +tags; Outlook, iCloud, Proton, Fastmail ignore +tags). |
syntaxValid | boolean | Syntax valid Strict RFC 5321/5322 dot-atom syntax as mailbox providers accept it. |
syntaxError | string | null | Syntax error Why the syntax is invalid, e.g. missing_at, multiple_at, local_invalid, domain_invalid, tld_invalid. |
domainExists | boolean | null | Domain exists false: NXDOMAIN or an unknown top-level domain; null: not checked. |
mx | array | MX hosts Mail exchangers by preference (a null MX is reported in nullMx). |
nullMx | boolean | Null MX The domain publishes an RFC 7505 null MX: it accepts no email. |
hasMailServer | boolean | null | Has mail server MX hosts, or the A/AAAA fallback of RFC 5321; null when not checked. |
mailProvider | string | null | Mail provider google | microsoft | zoho | proton | … | other, guessed from the MX hosts. |
disposable | boolean | Disposable Throw-away mailbox domain (CC0 list of about 9,900 domains, including common typo domains). |
freeProvider | boolean | Free provider Free webmail such as Gmail, Outlook or Yahoo. |
role | boolean | Role account Shared functional mailbox such as info@, sales@ or support@. |
typoSuggestion | string | null | Did you mean The address with a likely mistyped domain corrected (jane@gmial.com → jane@gmail.com). |
domainSpf | object | null | Domain SPF { record, allQualifier, includes, multipleRecords } of the domain's SPF record; null when absent or not checked. |
domainDmarc | object | null | Domain DMARC { policy, subdomainPolicy, pct, rua, record } of _dmarc.<domain>; null when absent or not checked. |
spfDmarcLookup | string | null | SPF/DMARC lookup ok | failed: failed means the TXT lookups failed, so a null domainSpf / domainDmarc is unknown rather than absent; null when not checked. |
status | string | Status ok | error | skipped_budget | skipped_free_plan | skipped_unmetered e.g. "ok" |
charged | boolean | Charged Whether this record incurred a pay-per-event charge. |
chargedEvent | string | Charged event Pay-per-event event charged for this record (present only when charged). |
chargedCount | integer | Events charged Events actually charged when the charge came back short (present only then; a warning explains it). |
source | string | Source dns: the checks ran on DNS lookups and bundled lists. |
fetchedAt | string | Checked at ISO timestamp. |
error | object | Error { code, message, provider?, status? } when status is not ok: dns_lookup_failed, timeout; codes set by the runtime: budget_exhausted, free_plan_limit, unmetered, aborted, charge_failed, record_too_large, invalid_record, dataset_push_failed. |
warnings | array | Warnings Notes about this record, e.g. a charge that came back short. |
raw | object | Raw check result The unmodified pre-check result (only with includeRaw). |