List people showing intent on a topic

The person-grain TAM direction: given a topic_id, return the people
(as HEMs) who show intent on it, ordered by perc_score, strongest
first, with cursor pagination. Each HEM is a deterministic match key
(sha256 of a normalized email) you can intersect against your own
contacts; raw emails are never returned. count (the topic's total
people) is returned only on the first page.

Filtering by one of your audiences

Pass audience_id to restrict results to people in that audience, so one
call returns the people matching your persona and showing intent on
the topic, instead of the whole topic. A typical flow is to page these
HEMs, deduplicate against HEMs you have already resolved, and call
GET /api/v1/lookup only for the ones that are new to you.

Which audiences can be used. Filtering works on your persona and
account audiences, once each is enabled for intent filtering. Ask your
account team to enable one. It becomes available the day after it is
enabled; until then, and for any audience that is not enabled, the
request returns 404. An audience matching more than about 50 million
people cannot be enabled.

Audience results are built ahead of time from your audience's members,
so they behave like the unfiltered endpoint:

  • Pages are full. Every page except the last holds page_size
    people, strongest intent first. The one exception: someone who opts
    out after that day's build is removed when the page is read, so a page
    can occasionally come back one short. Page until next_cursor is
    absent.
  • count is exact as of that day's build: the number of people in
    your audience with intent on the topic, honoring min_score and
    min_perc_score. An audience with no overlap returns count: 0.
  • Every member counts, however they rank. A member with intent on
    the topic is included even if many people outside your audience rank
    above them.

resolve is not supported with audience_id and returns 400; resolve
the returned HEMs with GET /api/v1/lookup. resolve_linkedin works as
usual.

Filtered responses also carry audience_as_of, the date of the audience
membership snapshot. It is reported separately from as_of (the intent
date) because the two are rebuilt on different schedules, so a filtered
result is the intersection of two snapshots taken at different times.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required

The topic to list people for.

string

Optional. Restrict results to people who are members of one of your audiences, so a single call returns only the people in that audience who show intent on the topic.
The audience must belong to your organization and must be enabled for intent filtering. An id that does not exist, does not belong to you, or has not been enabled returns 404 in every case; contact your account team to enable one.
Pages are full and count is exact as of the day's build, honoring min_score and min_perc_score; a later privacy opt-out can still shorten a page. Not combinable with resolve.

string
enum

Minimum intent tier. high returns only high, medium returns high+medium, and omitting it or low returns all.

Allowed:
integer
0 to 99

Drop people below this intent strength rating. 0 or omitted keeps all.

integer
1 to 500

People per page (default 50, max 500). An upper bound, not a guarantee: people who have exercised a privacy opt-out are removed after the page is read, so a page can come back with fewer results than requested, or occasionally empty. Do not treat a short or empty page as the end of the results; page until next_cursor is absent.

string

Opaque pagination cursor from a prior response's next_cursor. Omit for the first page.

boolean

When true, include seen_email (the unhashed email whose sha256 equals the hem) on each result where we have it. Off by default. Billed at the same intent rate. Not supported with audience_id (returns 400); use GET /api/v1/lookup for those HEMs.

boolean

When true, include linkedin_url on each result where we have it. Off by default. Additive: hem is still returned for everyone, and a person with no profile in our index is still returned, just without the field. Roughly 40% of people with intent carry a LinkedIn profile, so do not treat a missing linkedin_url as an unmatched person. Billed at the same intent rate.

boolean

Cost preview. When true, the request is fully resolved and the billable quantity is returned as records_to_charge, but nothing is billed and no results are returned. Default false.

Responses

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json