search_people
Search the people graph. Combines people-specific filters
(prospect_query) with company-specific filters (account_query) to
find prospects at target companies.
When to use it
Section titled “When to use it”- “Find data engineers at fintech companies with 200–1,000 employees in California.”
- “Get me everyone who attended TechCrunch 2024 in the security industry.”
- Any structured discovery query that doesn’t fit
ai_prospecting’s ranked output.
Query structure
Section titled “Query structure”Queries use a recursive CompositeFilter:
- Composite:
{"and": [...]},{"or": [...]},{"not": [...]}. - Leaf condition:
{"field": "<name>", "op": "<operator>", "value": "<val>"}.
Operators. gt, gte, lt, lte, eq, neq, like, ilike,
str_contains, str_contains_any, in, not_in, is_null,
is_not_null, exists, not_exists.
Common field types.
| Type | Where | Example |
|---|---|---|
| Persona | prospect_query | {"field": "data engineer", "op": "exists"} — call get_personas first. |
| Event | prospect_query | {"field": "Event - TechCrunch 2024", "op": "exists"} — call get_events first. |
| Technology | either | {"field": "AWS", "op": "exists"} |
| Seniority | either | {"field": "seniority_executive", "op": "exists"} |
| Industry | account_query | {"field": "industry", "op": "eq", "value": "telecommunications"} — call get_industries first. |
| Company size | account_query | {"field": "size", "op": "in", "value": ["201-500"]} |
| Location | both | contact_country / contact_region (prospect); location_country / location_region (account). |
Inputs
Section titled “Inputs”| Parameter | Type | Required | Description |
|---|---|---|---|
prospect_query | object | Yes | CompositeFilter over the people graph. |
account_query | object | No | CompositeFilter over the company graph. Defaults to match-all. |
prospect_display_queries | string[] | No | Fields to return per prospect. |
account_display_queries | string[] | No | Fields to return per matched account. |
Display fields. Prospect: contact_linkedin_url, contact_linkedin_id,
full_name, job_title, contact_country, contact_region,
seniority_executive, seniority_director, seniority_teamlead,
seniority_ic. Account: company_linkedin_url, company_linkedin_id,
company_website, name, size, industry, location_country,
location_region, seniority_*.
Returns
Section titled “Returns”JSON with a dataset handle, preview_rows
(first ~20), facets (top-N value counts per country / industry /
seniority / size), total_count (Forschung’s true server-side match
count), fetched_count, and truncated.
When the result exceeds 100 rows, the response includes a
cost_warning field reminding the agent that
contact_data_enrichment will
trigger the two-phase consent flow.
- Large results are returned as a dataset — never inlined.
- To enrich the matched contacts, pass
dataset_idtocontact_data_enrichment(it reads rows server-side). - For slicing or pagination, use
query_datasets.