Check email syntax offline (free)
check_email_syntaxVerify and normalize email address syntax locally before deliverability checks. Free, returns one row per input with a reason code flagging invalid formats.
Instructions
WHAT: Check whether strings are syntactically valid email addresses and normalize them (extracts "Name ", lowercases the domain), entirely locally. WHEN TO USE: fast pre-filtering or parsing before calling validate_emails, or when only the format matters. WHEN NOT TO USE: it does not check that the domain exists, has MX records, is disposable, a role account or a typo - use validate_emails (paid) for deliverability. COST: free; pure local function, no network, no APIFY_TOKEN. BEHAVIOR: synchronous and CPU-bound, no rate limit; 10,000 addresses return in well under a second. RETURNS: one "email_syntax" row per input element; reason is null or INVALID_SYNTAX. PARAMETERS: emails: each element is checked on its own and returns exactly one row, in input order (no splitting of comma/semicolon lists, no deduplication - unlike validate_emails). Normalization before checking: surrounding whitespace is trimmed, a trailing "Name " is reduced to addr, and the domain is lowercased (the local part keeps its case). Syntax rules: total <= 254 chars, local part <= 64 chars with no leading/trailing or double dot, domain labels of letters/digits/hyphens and a 2-63 letter TLD; quoted local parts, IP-literal domains and non-ASCII (IDN) addresses are reported as INVALID_SYNTAX here. input always echoes the original string so you can map rows back. EXAMPLE: {"emails":["Jane jane@Example.com"]} -> email "jane@example.com", syntax_valid true, domain "example.com".
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | Required. 1-10000 strings, one address per element; bare "jane@acme.com" or "Name <addr>" form (one row per element, no list splitting). Example: ["Jane <jane@Example.com>","not-an-email"] |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of rows returned | |
| items | Yes | Result rows; each has a "type" field (data rows or machine-readable "error" rows) |