AI Ark / Find emails for a people search result
AI Ark tool ai-ark-people-email-finder on looot: input fields, $0.194 per call, output shape, and code to run it with curl, JavaScript or Python.
Triggers email finding for a previous People Search result set, using the trackId from the People Search API response. This is step 2 of the two-step list-building flow (search → find emails). Credit Usage: 1 credit per found valid email (0.5 for the people data + 0.5 for the real-time BounceBan-verified email), and 0 credits for people where no valid email is found. Example: 25 people submitted, 18 valid emails found = 18 × 1 = 18 credits; the other 7 cost nothing. Unlike Export People with Email (0.5 per person regardless + 0.5 per found email), here you only pay for delivered emails. Email Verification: All emails (SMTP & CATCH_ALL) returned by the API are verified in real time by BounceBan, safe to send, no re-verification needed. Important: Each trackId can only be used once. After the first request, the track ID is consumed and subsequent requests with the same ID will fail. The trackId also expires 6 hours after the original People Search response. Provide a webhook URL to receive asynchronous notifications when email finding completes. When the job completes, we POST the result to your webhook URL. Auto-refund window: A submission that is charged but never delivered is auto-refunded after up to 10 hours. Rate limits (per token): If a token already has 500 requests in flight, a further submit is rejected with 400 too many pending requests, drain below the cap (or wait for completions), then retry. 10 jobs are processed at once. Limits are independent per service and per token. The response includes statistics</cod
- Tool id:
ai-ark-people-email-finder - Provider: AI Ark
- Job: Find emails for the people of an earlier search (
people.search.emails) - Price: $0.194 per call. A call that fails at the provider costs $0.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
trackId |
string | yes | The <code>trackId</code> from a previous People Search response. <strong>Single use</strong> and expires <strong>6 hours</strong> after the search. A used/expired id returns 404, run the search again for a fresh one. |
webhook |
string | yes | HTTPS URL notified when the job completes (retried up to 3×). You can re-send later via the <code>notify</code> endpoint. |
Output
The run’s result holds the provider’s answer. Signed in, looot inspect ai-ark-people-email-finder prints its fields.
Run it
Every call needs your API token in LOOOT_TOKEN; Sign in shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With wait: 30 the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll GET /v1/runs/<runId>.
Example input with placeholder values:
curl -X POST "https://api.looot.ai/v1/runs" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"endpointId":"ai-ark-people-email-finder","input":{"trackId":"<trackId>","webhook":"https://example.com/webhook"},"wait":30}'const response = await fetch("https://api.looot.ai/v1/runs", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
endpointId: "ai-ark-people-email-finder",
input: {
trackId: "<trackId>",
webhook: "https://example.com/webhook",
},
wait: 30,
}),
});
const run = await response.json();
console.log(run.status, run.result);import os
import uuid
import requests
response = requests.post(
"https://api.looot.ai/v1/runs",
headers={
"Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"endpointId": "ai-ark-people-email-finder",
"input": {
"trackId": "<trackId>",
"webhook": "https://example.com/webhook",
},
"wait": 30,
},
timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))To let looot pick among every provider of this job instead, send job:people.search.emails as endpointId; see the job page.