Organization .count
Count the companies that match your filters, free, before you buy a single row.
- Price
- Free
- Success rate
- 100% of 171,792 calls
- Freshness
- Fresh for 7 days
- Emits
Organization.counted- Capability
- Enrichment
GET https: //api.sb/ {your-domain}/ organizations/ count
Inputs
| Name | Type | Meaning |
|---|---|---|
icp | string | An ICP id. Its saved filters fill where. Pass this or where. |
where | OrganizationFilter | The filters every Organization call takes: industries, headcount, countries, regions, technologies, keywords, revenue, funding stages, founded year, open roles. |
strict | boolean | Refuse with filter-unsupported, at $0, instead of listing an unapplied filter in ignored. Default false. |
Outputs
| Field | Type | What null means |
|---|---|---|
count | number, in companies | Never null: a count of 0 means no company matched. |
ignored | string[] | Never null: empty when every filter you sent was applied. |
observedAt | string, in ISO 8601 | Never null. |
method | Observed['method'] | Never null. Counts read 'estimated': they come from a company index, not a live read of each site. |
Read the result
| Field | Value | What it means | What to do |
|---|---|---|---|
count | Under 600 | At 1.5 people a company and 400 new contacts a month, the list runs out in about 2 months. | Add lookalikes and dated reasons to write before you add volume. (list saturation math, our planning number) |
count | Over 4,000 | About 6,000 people at 1.5 a company: well over a year of cold email at 400 new contacts a month. | Size is not your constraint; spend the effort on the sentence that picks who fits. (list saturation math, our planning number) |
ignored | Not empty | No route could apply that filter, so the count is wider than you asked. | Drop the filter, or pass strict: to be refused instead, at $0. (the contract every data call keeps) |
method | estimated | Two company indexes can count the same filters 2 to 3 times apart. | Compare your own segments with each other, never with a count from another tool. (measured across two count sources) |
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-Keywith the same input replays the first answer at $0; with other input it returns 409.- Saved or shared
Nothing about you. The count is shared across startups for the same filters for 7 days.
- Emits
Organization.countedwith{ count,where, ignored } - Performed by
- Price
Free. Free: every count, in every mode.
- Reliability
The first route succeeds 100% of 171,792 calls. If it fails, a second route answers at 100% of 26,256 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
| Check | Error | Fix | Then call |
|---|---|---|---|
A call sent with strict: and a filter no route can apply | filter-unsupported | Drop 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
{
"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
How many US property managers with 20 to 200 staff are there? 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 value | Always returns | What it is for |
|---|---|---|
US property managers with 20 to 200 staff | {"count": | The market Leaseline sells to counts 4,180 companies, every time, for free. |
maxCost: | Refuses with max-cost | Any priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap. |
rate-limited.test | Refuses with rate-limited | Any call naming this hostname answers 429 with Retry-After, so your retry logic runs. |
sources-busy.test | Refuses with sources-busy | Any call naming this hostname answers 503 as if every route were busy, and nothing is spent. |
Used by
- Workflows: Build a verified list · Pick who to sell to first
- Jobs: Find your first customers