Skip to content

ContactPoint.findPhone

Find a person’s direct phone and whether it is a mobile, from their profile URL, email address or name and company; a miss is free.

Price
1.7¢ a number found
Success rate
92.9% of 1,002,342 calls
Freshness
Fresh for 90 days
Emits
ContactPoint.found
Capability
Enrichment
POST https://api.sb/{your-domain}/contact-points/find-phone

Inputs

NameTypeMeaning
profileUrlstringTheir LinkedIn profile URL. Pass this, email, or name with hostname.
emailstringTheir work email.
namestringTheir full name, with hostname.
hostnameHostnameTheir company’s domain, with name.
checkLinebooleanReport the line type: mobile, landline or VoIP. Default true.
maxCostnumberThe most this person may cost, in USD. Routes are walked cheapest first and stop here. Default 0.05.

Outputs

FieldTypeUnitWhat null means
numberstring | nullE.164No route found a number under maxCost: a miss, and free.
lineType'mobile' | 'landline' | 'voip' | nullNone.Unknown, or checkLine: false.
countrystring | nullISO 3166-1Unknown.
observedAtstringISO 8601Never null.
methodObserved['method']None.Never null.
costCostUSDNever null. In try mode usd is 0 and maxUsd is what the call would have cost.

Read the result

FieldValueWhat it meansWhat to do
numbernull at the 5¢ capAbout half of people get a number under the default cap; the rest sit on dearer routes.Raise maxCost to 0.30 for the people worth a call: about 9 in 10 get a number, at about 9¢ each. (the route plan, assuming independent misses: our planning number)
lineTypelandline or voipLikely a switchboard or a desk line.Call in business hours, or write instead. (our planning number)
numberThe wrong person answersReviews of phone reads report numbers that belong to someone else.Start with email; a phone is a later step, after a reply. (reviews of phone reads)

Effects

Action class

None: it reads, so no approval rule names it

Modes
  • try: Runs the read and returns real rows; nothing is saved and nothing is billed.
  • send: Returns a pending Action at once; its Event carries the rows when the read finishes.
  • do: Waits for the read and returns the rows, billed per result.
Idempotency

The same Idempotency-Key with the same input replays the first answer at $0; with other input it returns 409.

Saved or shared

Nothing is written to your records. Readings about people are never shared across startups.

Emits

ContactPoint.found with { number, lineType, country }

Performed by

Prospector

Price

About 1.7¢ a number found. At most 5¢ a number found. Free: a miss, on every route. maxCost defaults to 5¢. 20 people worth a call: 20 × 1.7¢ a number found is about 34¢.

Reliability

The first route succeeds 92.9% of 1,002,342 calls. If it fails, the call refuses with sources-busy and nothing is spent.

Freshness

A reading younger than 90 days returns at $0. Readings about people are never shared across startups.

Batch and pages

Up to 1 person a call. It answers in one response.

Rate

The shared rate rules: 10 calls a second per key, and an array input counts as one call.

Refuses when

This call has no refusals of its own. Every data call can also meet the shared data-call refusals: filter-unsupported, input-missing, limit-exceeded, max-cost, rate-limited, sources-busy, venue-unsupported.

When it waits

Returns in one response; nothing waits.

Example

Text
What is Dana Whitfield’s direct phone? Her profile is
linkedin.com/in/dana-whitfield-pm; spend up to 5¢.

To retry, send the same Idempotency-Key: the retry returns the first answer for $0. A new key reads again.

Test values

A sk_test_ key answers these the same way every time, at $0 (every test value).

Test valueAlways returnsWhat it is for
maxCost: 0.0001Refuses with max-costAny priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap.
rate-limited.testRefuses with rate-limitedAny call naming this hostname answers 429 with Retry-After, so your retry logic runs.
sources-busy.testRefuses with sources-busyAny call naming this hostname answers 503 as if every route were busy, and nothing is spent.

Used by

None.