Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview
On this page

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"}' \
  --wait

Read 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: outcome is miss. With fallback, the next provider of the job gets a try inside the same hold.
  • Only a linkedin_url and 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. Use top_up, then retry with a new idempotencyKey.

Was this page helpful?