Clean an email list before you send to avoid bounces
Check a list of email addresses for syntax, domain, MX records and mailbox status as JSON, so you send only to deliverable ones and protect your sender name.
A list of email addresses from a signup form, a trade show or a scraped lead file always has dead ones in it, and sending to them raises your bounce rate and hurts your sender reputation. You want to know which addresses to drop before the first email goes out. Lovely Router checks them. Send a list of addresses, get one JSON object per email, pay per email from a prepaid balance. Call it from a CRM export script, a signup flow or an AI agent with one API key.
Hand it to your AI agent
Copy this prompt into Claude Code, Cursor, Codex or any coding agent. It tells the agent where the docs are and how to use your API key.
Clean an email list before you send to avoid bounces. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>How it works
Export the list
Take the addresses from your CRM, signup table or lead sheet. One address is one email.
Run the tool
Send them to
POST /v1/tools/email-verify/runwithmax_resultsset to the number of addresses. The run holds its maximum cost from your balance and returns one result per email.Keep the good ones
Write the result back to your list. Send to deliverable addresses, and suppress or review the rest.
Verify a list with one request
Verify email addresses takes addresses in emails. One run checks up to 500:
curl https://lovelyrouter.com/v1/tools/email-verify/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"emails": ["hello@example.com", "nobody.here@example.com"]
},
"max_results": 2
}'A run still going after 60 seconds returns 202; Run a tool shows how to poll.
What each email holds
| Field group | What you get |
|---|---|
| Syntax | Whether the address is well formed |
| Domain | Whether the domain is valid |
| MX records | Whether the domain can receive mail |
| Mailbox | The status of the mailbox |
Inspect one result to see the exact field names and values before you write your filter.
Recipes
Export the list, verify it, and import only the deliverable addresses into your sending tool.
Split it into runs of 500, verify each batch, and keep a column with the result.
Verify new addresses from your backend and ask users to correct the ones that fail.
Verify the emails found for a prospecting list and send first to the verified ones.
Verify the contacts you have not emailed in a year and mark the dead ones as inactive.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Verify the emails in leads.csv, add a column with the result, and write the deliverable ones to clean.csv. Set max_results to 500."
Email addresses are personal data. You are responsible for using them lawfully, including privacy and anti-spam rules, and verifying an address does not give you consent to email it.
Pair it with lead sources
Verification works best at the end of a prospecting pipeline:
Check whether email addresses are deliverable: syntax, domain, MX records and mailbox status.
Crawl websites and extract emails, phone numbers and social profile links. One result = one website (up to 5 of its pages crawled, contacts merged).
Local businesses from Google Maps plus the emails, phones and social links found on their websites. Built for local lead lists.
Work email address for LinkedIn profile URLs.
website-contactscollects contact details from company websites.google-maps-leadsbuilds local business lead lists.linkedin-email-finderlooks for addresses tied to LinkedIn profiles.
For the full workflow, see lead generation.
What you pay
You pay per email: starting a run holds its maximum cost, the per-call fee plus the per-email fee times max_results, and the run settles to what it returned. The rest of the hold goes back to your balance. A run that fails or times out pays only for the emails it delivered, and a run refused at the start costs nothing.
Verifying a list of 2,000 is billed as 2,000 emails. There is no subscription and no monthly minimum: top up from $5, and one balance pays for tools and models. The card above shows today's price; pricing lists every tool.
Frequently asked questions
What does the check cover?+
Syntax, domain, MX records and mailbox status.
How many addresses can I send in one run?+
Up to 500 per run. For a longer list, split it into batches and start several runs.
Can I verify addresses I found myself?+
Yes. The tool checks any address you send. You remain responsible for sending lawfully.
Does it send an email to the address?+
The tool description does not say how the mailbox status is determined, so it makes no claim about this. Look at a few results to see what you get.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Failed runs pay only for the results they delivered, and nothing renews automatically.
Building a prospect list? See lead generation, and the rest of the tool catalog.