Discover distinct companies that have one or more signals matching the
filter, sorted by most-recent signal. Each result is a single company
with its top-N signals attached (signals_per_entity, default 25).
Use this for ICP / audience-building workflows where you want a list
of unique companies rather than a flat list of signals.
Subtype filtering
Pass signal_subtypes (array, max 25 — OR semantics) to narrow to
specific subtypes, e.g. only hiringSalesRoles within
hiring-trends. The list is CROSS-TYPE: it applies across all
requested signal_types, and SEC filing types share content-tag
subtypes — {"signal_types":["sec-8k","sec-10k"], "signal_subtypes":["aiInvestment"]} is a first-class pattern.
Discover valid values via the per-type subtypes array on
GET /v1/signals/types?include_counts=true. Matching is
case-insensitive against the known vocabulary; unknown values fall
back to exact match (0 results, never a 400). The singular
signal_subtype remains supported and is unioned with the array.
content_filters (social + podcast search)
Pass content_filters to search inside the enriched content of
social posts and podcast transcripts (the seven social + two podcast
signal types only — see ContentFilters). Structured clauses
(tech_mentioned, competitors_mentioned, pain_points,
initiatives) are exact/fast (typically sub-second) and match social
types only — keywords is the only clause that matches podcast
content; broad free-text keywords over a wide window is the one
thing that can be slow.
Self-service responses
- 408
query_timeout(default, always on): a broad content search
that runs out of time returns tailored guidance —messagenames the
broad term(s) and lists ordered fixes, with
details.suggestions/details.broad_terms. Apply a suggestion and
retry; not charged. - 422
query_too_broad(OFF by default, behind
SEARCH_REJECT_BROAD_KEYWORD): when enabled, an obviously-too-broad
query is rejected up front with the same guidance body instead of
grinding into a 408. hint(on a 200 with 0 results from acontent_filters
search): an optional top-level string explaining the likely cause
(e.g. exact-match fields need canonical names like"Salesforce",
not"Sales"; or widendetected_after).notice(on a 200 when an entity filter is applied, or when a
subtype filter includes a high-volume signal type): an optional
top-level string noting results were limited to the most recent 14
days (see thedetected_after14-day cap).
Credit cost: 2 per company returned.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||

