Skip to main content
GET
Category whitespace API

Frequently asked questions

Domains that visibly have not bought yet: they run an anchor technology you can qualify on, and run nothing at all in the category you sell into. “Shopify stores with no email marketing tool” is the canonical query.
Whitespace is a current-state signal about presence and absence, not a transition between two states. There is nothing to look back over. This also means it works from day one and needs no monitoring-window maturity, unlike adoption and churn.
Very. Any active detection of a technology in the missing category disqualifies the domain, even a flaky one, and the check runs at domain level rather than per subdomain — if the company has the tool anywhere, they are excluded. We would rather drop a real prospect than surface a false gap. The anchor side is the opposite: it is gated by min_confidence so the qualifying presence is trustworthy.
Use limit with offset. Whitespace matches routinely run into the millions and results are ordered alphabetically by domain, so paging is stable within one corpus generation. This is the only signal endpoint with offset paging — the transition signals are recency-ordered, where the newest rows are the product.
An unqualified “every domain without category C” query is rejected with a 400. It would return most of the internet and would not be a prospect list. The anchor is what makes the result actionable.

Authorizations

Authorization
string
header
required

API key in format tapi_live_[32-char] (live) or tapi_test_[32-char] (test)

Query Parameters

technology_id
integer

Scope by BuiltWith technology id. Provide exactly one of technology_id, technology or category_id.

technology
string

Scope by exact technology name. The technology must be detectable.

category_id
integer

Scope by category — fans out to every detectable technology whose primary category is this one.

missing_category_id
integer

Required. The category the domain must run no tool in. Must differ from the anchor category.

min_confidence
number<float>
default:0.5

Minimum detection_rate gating the anchor presence. The gap side counts any active detection, which is deliberately conservative.

limit
integer
default:100

Rows returned. Clamped to 1–1000.

Required range: 1 <= x <= 1000
offset
integer
default:0

Pagination offset, clamped to 0–1,000,000. Results are ordered alphabetically by domain, so paging is stable within one corpus generation.

country
string

Filter to companies in this country (case-insensitive).

city
string

Filter to companies in this city (case-insensitive).

state
string

Filter to companies in this state or region (case-insensitive).

industry
string

Filter to companies in this industry (case-insensitive).

industry_code
integer

Filter by exact LinkedIn industry code.

employees
string

Filter by exact LinkedIn employee band. Unknown bands are rejected with INVALID_EMPLOYEE_BAND and the allowed list.

company_type
string

Filter by exact company type.

founded_min
integer

Only companies founded in or after this year.

Required range: 1800 <= x <= 2025
founded_max
integer

Only companies founded in or before this year.

Required range: 1800 <= x <= 2025
company
boolean

Set to true to attach the company card without filtering results (enrich-only mode).

has_email
boolean

Filter to domains where the crawler found (or did not find) an email address. false is a real filter, not a no-op.

has_phone
boolean

Filter to domains where the crawler found (or did not find) a phone number.

social
enum<string>

Filter to domains publishing a profile on this platform.

Available options:
linkedin,
x,
facebook,
instagram,
youtube,
github,
tiktok,
discord,
reddit,
crunchbase,
slack
language
string

Filter by the site's primary language.

web_country
string

Filter by the country the site declares in its schema.org markup. Accepts ISO-2, English name or common variants.

segment_id
string

Apply a saved audience instead of inline filters. Filter audiences replay their firmographic predicates; list audiences restrict rows to their member domains. Mutually exclusive with inline firmographic parameters.

Response

Domains with the anchor and no tool in the target category

success
boolean
Example:

true

data
object