Stream People
Every matching person in one request, as NDJSON
https://app.gethuntd.com. Agency keys receive
403 ENDPOINT_NOT_ON_PLAN. Uses no credits, and counts as one request against your rate limit.Overview
Returns every person matching your filters in a single response, as NDJSON: one JSON object per line, each the same shape as adata[] entry from List People. Use it for backfills and full exports.
The same filters apply. Paging parameters (page, limit,
skip_count) are ignored. See Streaming for when to stream rather than
page.
Reading the Stream
Expect roughly 40 to 100 rows per second: a full backfill of tens of thousands of people takes minutes, not seconds. The stream is not resumable, so a dropped connection means starting again. For very large exports, stream onediscovered_from / discovered_to window at a time.
Mid-stream Errors
Once rows are flowing the HTTP status is already sent, so a failure can’t be a status code. Instead the last line is an error object and the connection closes:error key as a truncated result, not data: discard or mark what you
collected as partial, then retry.
Errors
Returned as a normal HTTP error, before any rows are sent:Authorizations
API key in format: hntd_{id}_{secret}. Create one in Settings → API & webhooks. Authorization: Bearer is also accepted.
Query Parameters
The last N UTC days, including today (2 = today and yesterday). "Discovered" means when we last checked the row, not when it was confirmed. Can't be combined with discovered_from / discovered_to.
1 <= x <= 366Inclusive UTC start day, YYYY-MM-DD.
"2026-07-01"
Inclusive UTC end day, YYYY-MM-DD.
"2026-07-31"
Restrict to one source slug, as returned by List Sources.
"gong"
true: confirmed users only. false: checked but not a user. all: both.
all, true, false Response
NDJSON: one person object per line, the same shape as a data[] entry from the paginated endpoint. If the stream fails after it started, the last line is an error object instead: treat it as a truncated result.
A person Huntd tracks for your organization
Stable identifier. Use it to deduplicate across pages and runs.
First name.
Last name.
Email address.
Job title as we observed it.
Derived from the job title.
Derived from the job title.
Derived from the job title.
Company display name.
Normalized domain. Joins directly to domain on List Companies.
Employee count.
Comma-separated industry labels.
Location as we observed it.
Country.
LinkedIn profile URL.
Source slugs this person is a confirmed user of. Empty means we checked and found no user account, not that they are untracked.
When we last checked this person (UTC). Always agrees with the date filter, so it is safe as an incremental-sync cursor.