The People API is ICP-style people discovery across Signalbase’s signal-driven dataset. Filter by title, function, seniority, geography, and company attributes to build a target list — and every person you get back arrives with a matched_signal inline (a funding round, acquisition, or job change) that tells you why now: the timing reason to reach out, not just who matches your ICP.This is not a static contact database. People whose company has no active signal within the requested window are excluded by design. It is also a search endpoint — it reads existing records and never triggers the enrichment pipeline.
Every result includes a matched_signal — the latest signal that matched your filters. Because Signalbase filters first and then surfaces the latest matching signal, matched_signal is always consistent with your query, but it is not necessarily the person’s newest overall signal.The is_latest_signal boolean tells you which case you’re in:
true — the matched signal is also the person’s most recent signal.
false — an older signal matched your filters, and the person has a more recent signal that did not match.
When you don’t pass signal_type, matched_signal is the person’s newest qualifying signal of any supported type (funding_round, acquisition, job_change), so types can mix across a page. Pass signal_type to pin the surface to specific type(s).
You can get the total number of people matching any filter combination without consuming credits by adding count=true to your request. This returns an empty data array with full pagination metadata, including totalCount.
curl -X GET "https://www.trysignalbase.com/api/v2/people?count=true&seniority=c_level&signal_type=funding_round&signal_date_range=6m" \ -H "Authorization: Bearer YOUR_API_KEY"
Use count mode to preview how many people match your filters before fetching results. This is useful for building filter UIs, showing result counts, or validating queries — all at zero credit cost.
Different filters AND together; comma-separated values within one filter OR together. For example, seniority=c_level,vp&country=US returns people who are (C-level OR VP) AND in the US.
A person qualifies if any of their signals matches the filters; the latest matching one is surfaced as matched_signal.
Results merge two sources (current company employees and job-change subjects) and are deduplicated before pagination by normalized person LinkedIn URL, falling back to normalized name + company domain/LinkedIn/name.
The endpoint is currently active-only (current employees). include_former=true returns a 400 because job-change records have no current/former semantics yet, so honoring the flag would silently mix records. Until that data dependency is defined, every result has status: "active".
Person names are masked in responses (first name + last initial, e.g. Sarah K.), consistent with the Job Change and Employees endpoints. Use linkedin_url to identify a specific person.