Checking an address never emails it, not even by accident. Here’s why that holds

Start for free

Compared

Real-time vs. bulk verification

The same checks and the same four verdicts, in two shapes. Real-time answers one address while somebody waits; bulk works through a list you already have.

Real-time vs. bulk verification
What you want to knowReal-timeBulk
When the question is askedAt the moment of entry, before the record existsAfter the list exists, usually before a send
Who is waitingA person, looking at your formNobody
What a slow domain costsA form that waits — so it answers unknown insteadNothing. The job simply takes longer
The verdicts you getThe same four, with the same evidenceThe same four, with the same evidence
How it is usedOne API request per addressA file uploaded and worked through
What it is forKeeping bad addresses out of the listGetting bad addresses out of the list

This is a choice about when you ask, not about what you get. Both run the same stages against the same infrastructure and return the same vocabulary, and an address checked either way gets the same verdict for the same reasons.

What differs is who is waiting. In a signup form somebody is looking at a spinner, so latency is the constraint that shapes everything: a domain that greylists cannot be resolved inside a request that a person is sitting through, and the honest answer within a reasonable time is unknown. Design for that. An address that comes back unknown at the point of entry is not a reason to block the signup — it is a reason to accept it and check again later.

In a bulk run nobody is waiting, so the same slow domain costs nothing. The job takes as long as it takes and every address gets the fullest answer available.

Most teams that use both use them for what they are: real-time at the point of collection, so bad addresses never enter the list, and bulk before a send, because an address verified eight months ago is not a fact about today.

Where this shows up in a result

Reason codes from the closed vocabulary in the API response. These are the exact strings an integration writes an if against.

Where this shows up in a result
SMTP_GREYLISTEDGreylisted, a retry is required
SMTP_CONNECT_TIMEOUTMail server did not answer in time

Run one and see the difference.

The free checker returns the whole result — every stage, every reason code, nothing held back.