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:

How a job works

The three tools work the same way:

  1. You POST the input. Emelia answers at once with { "success": true, "jobId": "..." }.
  2. You GET the job every 3 to 5 seconds until its status is no longer running.
  3. You read the result in data: status is done (or error), with the email, the number or the verdict.
ToolStartResultHistoryTypical duration
Email FinderPOST /tools/find/emailGET /tools/find/email/{jobId}GET /tools/find/emailSeconds, up to about 4 minutes
Phone FinderPOST /tools/find/phoneGET /tools/find/phone/{jobId}GET /tools/find/phoneNo fixed upper bound
Email VerifierPOST /tools/verify/emailGET /tools/verify/email/{jobId}GET /tools/verify/emailUnder 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

ToolCostRefunded when
Email Finder1 creditNo email is found, or the search could not start. Not on a timeout.
Phone Finder50 creditsNo number is found, or the search could not start.
Email Verifier0.25 creditNever.

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:

  1. Filter first. Remove the contacts you will not reach before spending credits.
  2. Start every job, then poll them. Waiting for each job before starting the next one turns minutes into hours.
  3. Keep the jobId of every contact, and write the results back to your list with Update a contact.
  4. 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.

On this page