API reference / Email verification
Find an email address
Written and maintained by The ProspectAPIs team
POST/v1/email/find
POST /v1/email/find is the ProspectAPIs operation emailFind, in the Email verification group of the REST API. Checks the common company patterns for a person against the mail server, most common first, and returns the first that is valid. $0.02 only when an address is found; nothing found, a catch-all domain (best_guess, unconfirmed) or an unknown answer is free. Cost: $0.02 per found address; nothing found or catch-all is free. Send your API key as a Bearer token in the Authorization header.
How this fits with the rest of the email verification API, with worked examples, is in the email verification guide.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| Idempotency-Key | header | string | Make a retry safe: the same key and body within 24 hours replays the first answer, unbilled. |
Request body
JSON (EmailFindRequest).
| Field | Type | Description |
|---|---|---|
| first_name required | string | At most 80 characters. |
| last_name | string | At most 80 characters. |
| domain required | string |
{
"first_name": "first name",
"domain": "acme.com"
}Responses
| Status | Meaning |
|---|---|
| 200 | The result. |
| 400 | The request was invalid (e.g. a bad filter or input); nothing was charged. |
| 401 | The API key is missing or invalid. |
| 402 | Out of credits. The body carries top_up_url; nothing was charged. |
| 429 | Per-account probe budget reached; Retry-After. |
Every error answers with the same JSON body, an error string and sometimes a code; the errors page lists each status and when it happens. A per-key 429 carries Retry-After; see rate limits.
200 response fields
The result. The body is a EmailFindResult.
| Field | Type | Description |
|---|---|---|
| status | string: found, catch_all, unknown, not_found | |
| string or null | ||
| pattern | string or null | |
| best_guess | string or null | |
| domain | string | |
| score | integer | |
| recommendation | string | |
| reason | string or null | |
| checked | array of object | |
| checked[].email | string | |
| checked[].pattern | string | |
| checked[].status | string | |
| checked[].reason | string or null | |
| charged | boolean | |
| amount_usd | number | |
| checked_at | string (date-time) |
Code samples
Each sample sends the same request. Set PROSPECTAPIS_KEY in your environment first. Values come from the spec's examples; replace them with your own.
curl -X POST https://api.prospectapis.com/v1/email/find \
-H "Authorization: Bearer $PROSPECTAPIS_KEY" \
-H "Content-Type: application/json" \
-d '{ "first_name": "first name", "domain": "acme.com" }'const res = await fetch("https://api.prospectapis.com/v1/email/find", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PROSPECTAPIS_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"first_name": "first name",
"domain": "acme.com"
}),
});
if (!res.ok) throw new Error(`${res.status}: ${(await res.json().catch(() => ({}))).error ?? res.statusText}`);
const data = await res.json();
console.log(data);import os, requests
res = requests.post(
"https://api.prospectapis.com/v1/email/find",
headers={"Authorization": f"Bearer {os.environ['PROSPECTAPIS_KEY']}"},
json={
"first_name": "first name",
"domain": "acme.com",
},
timeout=30,
)
res.raise_for_status()
data = res.json()
print(data)Billing
Billing reserves before it serves: the call holds what it may cost, serves at most what that hold covers, and refunds the rest when the response closes. Any non-2xx answer refunds the whole hold, so a failed call costs nothing. The response reports your balance in X-Credits-Remaining.
Related
The email verification guide covers this area end to end. Previous operation: Report what happened when you sent. Next operation: Look up an email domain. Every operation, grouped by area, is on the API reference index.
Create a free account to get a key, then run the samples above with your own values (this call acts for real, so use real inputs).
Was this page helpful?