Skip to content

Prospect.count

Count the people who match your titles and companies, and how many have a work email on file, free.

Price
Free
Success rate
100% of 2,861,763 calls
Freshness
Fresh for 7 days
Emits
Prospect.counted
Capability
Enrichment
GET https://api.sb/{your-domain}/prospects/count

Inputs

NameTypeMeaning
icpstringAn ICP id; its Persona fills where. Pass this or where.
whereProspectFilterTitles, seniority, departments, locations, countries, the companies they work at, and organizationWhere for the company filters.
kind'person' | 'creator'Count creators by audience instead of people by role. Default 'person'.
strictbooleanRefuse with filter-unsupported, at $0, instead of listing an unapplied filter in ignored. Default false.

Outputs

FieldTypeUnitWhat null means
countnumberpeopleNever null: 0 means no one matched.
withEmailnumber | nullpeopleThe source does not say how many have a work email on file.
ignoredstring[]None.Never null: empty when every filter you sent was applied.
observedAtstringISO 8601Never null.
methodObserved['method']None.Never null; counts read 'estimated'.

Read the result

FieldValueWhat it meansWhat to do
withEmailUnder half of countMany of these people will cost a find that misses, which is free, before one that hits.Plan reach from withEmail, not count. (the free-miss rule)
countUnder 900At 400 new contacts a month the audience lasts about 2 months.Widen the titles with similarTitles, or add a second role at the same companies. (list saturation math, our planning number)
ignoreddepartments listedDepartment is the people filter routes take least often, about 1 call in 5, so the count is wider than asked.Put the department words into titles, which routes apply on 99% of calls. (filter coverage, measured across 9,229,085 people-search calls)

Effects

Action class

None: it reads, so no approval rule names it

Modes
  • try: Counts and stores nothing; a count is free in every mode.
  • send: Returns a pending Action at once; its Event carries the rows when the read finishes.
  • do: Waits for the count; a count is free in every mode.
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. A count names no one, so it is shared across startups for the same filters for 7 days.

Emits

Prospect.counted with { count, withEmail, where }

Performed by

Prospector

Price

Free. Free: every count, in every mode.

Reliability

The first route succeeds 100% of 2,861,763 calls. If it fails, a second route answers at 99.1% of 30,491 calls, and you pay for one.

Freshness

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

Batch and pages

Up to 1 filter set 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

CheckErrorFixThen call
A call sent with strict: true and a filter no route can applyfilter-unsupportedDrop that filter, or send without strict and read what comes back in ignored.Organization.count

Every data call can also meet the shared data-call refusals: input-missing, limit-exceeded, max-cost, rate-limited, sources-busy, venue-unsupported.

The filter-unsupported payload
JSON
{
  "type": "https://startupbuilder.dev/errors/filter-unsupported",
  "title": "No route can apply a filter you sent",
  "status": 422,
  "detail": "A call sent with `strict: true` and a filter no route can apply.",
  "fix": "Drop that filter, or send without `strict` and read what comes back in `ignored`.",
  "next": {
    "verb": "Organization.count",
    "input": {
      "where": {
        "industries": [
          "property management"
        ],
        "headcount": {
          "min": 20,
          "max": 200
        },
        "countries": [
          "US"
        ]
      }
    }
  },
  "instance": "https://api.sb/leaseline.app/actions/action_1"
}

When it waits

Returns in one response; nothing waits.

Example

Text
How many property managers and owners work at US property management
companies with 20 to 200 staff? Spend nothing.

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.