Find a phone number
Find a phone number for a person from their name and company domain, or from a LinkedIn URL, through looot.
people.phone.find looks up a phone number for one person. It is priced higher than an email
lookup, so quote it before you run a list.
What it costs
search {"filters": {"capability": "people.phone.find"}, "prefer": "cheapest"}
On 2026-09-28 the cheapest listed people.phone.find provider priced around $0.0445 per call.
Read the live number and check balance before a batch.
Run the lookup
Send first_name and last_name (or name) plus domain, or a linkedin_url if that is what
you have:
run {"endpointId": "job:people.phone.find", "input": {"first_name": "Jane", "last_name": "Doe", "domain": "example.com"}, "idempotencyKey": "phone-jane-doe", "fallback": {"maxAttempts": 3, "maxCostUsd": 0.2}}curl -s "https://api.looot.ai/v1/runs?wait=20" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpointId": "job:people.phone.find",
"input": {"first_name": "Jane", "last_name": "Doe", "domain": "example.com"},
"idempotencyKey": "phone-jane-doe",
"fallback": {"maxAttempts": 3, "maxCostUsd": 0.2}
}'looot run job:people.phone.find \
--input '{"first_name": "Jane", "last_name": "Doe", "domain": "example.com"}' \
--waitRead the result
This job has no normalized map proven yet (no completed run currently sits on a mapped
endpoint), so read the phone number from result and check which provider answered
(servedProviderId). Before you rely on an exact field name, run search for people.phone.find
and read jobInputs, or inspect the endpoint that answered.
What the answer looks like
| Field | What it is |
|---|---|
status |
completed, failed, queued, running |
outcome |
hit, weak, miss, error, rejected, skipped or pending |
servedProviderId |
the provider that answered |
actualCost |
what this run charged |
route.summary |
fallback runs only |
On a miss or error
- No number found:
outcomeismiss. Withfallback, the next provider of the job gets a try inside the same hold. - Only a
linkedin_urland no domain or name: some providers need domain and name together; add whichever you have, or search for the person’s domain first. insufficient_balance: the run is blocked and not charged. Usetop_up, then retry with a newidempotencyKey.