Skip to content

Organization.resolve

Turn one clue, a visitor’s IP address, an email address or a company name, into the one company it belongs to.

Price
Free
Success rate
99.97% of 419,320 calls
Freshness
Fresh for 30 days
Emits
Organization.resolved
Capability
Enrichment
POST https://api.sb/{your-domain}/organizations/resolve

Options and prices

You getInput that selects itPriceSuccess rate
The company behind a visit{"ip":"…"}About 1¢ a match100% of 2,492 calls
The company behind an email address{"email":"…"}Free99.97% of 419,320 calls
The company behind a name{"name":"…"}Free99.97% of 419,320 calls

Inputs

NameTypeMeaning
ipstringA visitor’s IP address. Pass exactly one of ip, email, name or hostname.
emailstringAn email address; its domain is matched. A free-mail address returns organization: null at $0.
namestringA company name as a person typed it.
hostnameHostnameA domain, to find the saved Organization it belongs to.
savebooleanCreate the Organization in your records when none matches. Saving is a write, so it follows the call’s Mode. Default false.

Outputs

FieldTypeWhat null means
organizationOrganization | nullNo company matched the clue: a residential or mobile IP, a free-mail address, or an unknown name. Free.
organization.confidencenumber, in score 0 to 1Never null when organization is set.
matchedOn'ip' | 'email' | 'name' | 'hostname'Never null: the clue that matched.
createdbooleanNever null: true only when save created the Organization.
observedAtstring, in ISO 8601Never null.
methodObserved['method']Never null. An IP match reads 'estimated'.

Read the result

FieldValueWhat it meansWhat to do
organizationnull on an IPMost visits from home and mobile networks resolve to no company.Read the share of company visits per page, not per visit; it costs nothing. (the single IP route)
confidenceUnder 0.6 on an IPA shared office or a co-working network.Treat it as a lead to check, never as a person to write to. (our planning number)
organization.hostnameA company that fits your customerSomeone there read your pages.Find the person at it with Prospect.find, then write within a day. (the visitor rule in Find customers)

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 unless save is passed. A company match is shared across startups; the IP address and the visit stay yours.

Emits

Organization.resolved with { organization, matchedOn, created }

Performed by

Prospector

Price

Free. Free: a name or a company email, an IP address that matches no company. 300 company visits in a month: 300 × 1¢ a match is about $3.00.

Reliability

The first route succeeds 99.97% of 419,320 calls. If it fails, the call refuses with sources-busy and nothing is spent.

Freshness

A reading younger than 30 days returns at $0. Readings are shared across startups for the same subject and locale.

Batch and pages

Up to 1 clue 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
Which company is behind the visit from 203.0.113.42? Spend up to 1¢.

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