Enrichment
Find professional emails, find phone numbers and verify addresses with the Emelia enrichment API. Every call starts a job that you poll until it is done.
Emelia has three enrichment tools, each with its guide and its routes:
Email Finder API
The professional email of a person, from a name and a company. 1 credit, refunded when nothing is found.
Phone Number Finder API
The phone number of a person, from a LinkedIn profile URL. 50 credits, refunded when nothing is found.
Email Verification API
Whether an address can receive mail. 0.25 credit, never refunded.
How a job works
The three tools work the same way:
- You
POSTthe input. Emelia answers at once with{ "success": true, "jobId": "..." }. - You
GETthe job every 3 to 5 seconds until itsstatusis no longerrunning. - You read the result in
data:statusisdone(orerror), with the email, the number or the verdict.
| Tool | Start | Result | History | Typical duration |
|---|---|---|---|---|
| Email Finder | POST /tools/find/email | GET /tools/find/email/{jobId} | GET /tools/find/email | Seconds, up to about 4 minutes |
| Phone Finder | POST /tools/find/phone | GET /tools/find/phone/{jobId} | GET /tools/find/phone | No fixed upper bound |
| Email Verifier | POST /tools/verify/email | GET /tools/verify/email/{jobId} | GET /tools/verify/email | Under 60 seconds, then error |
This helper starts a job and polls it, for any of the three tools:
# Start the job
JOB_ID=$(curl -s -X POST https://api.emelia.io/tools/verify/email \
-H "Authorization: $EMELIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "claire.fontaine@nexora.io"}' | jq -r .jobId)
# Poll it every 3 seconds until it is no longer running
while true; do
RESULT=$(curl -s "https://api.emelia.io/tools/verify/email/$JOB_ID" -H "Authorization: $EMELIA_API_KEY")
[ "$(echo "$RESULT" | jq -r .data.status)" != "running" ] && break
sleep 3
done
echo "$RESULT"A job still running after your timeout is not lost: keep its jobId and read it later. Never start the same search again instead: it would be billed twice.
Costs and limits
| Tool | Cost | Refunded when |
|---|---|---|
| Email Finder | 1 credit | No email is found, or the search could not start. Not on a timeout. |
| Phone Finder | 50 credits | No number is found, or the search could not start. |
| Email Verifier | 0.25 credit | Never. |
Credits are taken when the job starts. See Credits for the history of your debits. The /tools/... routes are not counted in the per minute rate limit, and their polling is free.
Enrich many contacts
There is no batch route for the tools: you start one job per contact. To go fast:
- Filter first. Remove the contacts you will not reach before spending credits.
- Start every job, then poll them. Waiting for each job before starting the next one turns minutes into hours.
- Keep the
jobIdof every contact, and write the results back to your list with Update a contact. - Stop at the first credit error. The next contacts would fail the same way.
To find the emails of a whole LinkedIn extraction, use Find the emails of a scraper: 1 credit per email found.
From an AI assistant
The MCP server wraps the three tools: find_email, find_phone and verify_email start the job and wait for the result for up to 90 seconds, and get_enrichment_result reads a job that was still running. Note that find_email needs country, even if the tool does not mark it as required.