GET /v1/people
The Stealth lane: founders the network is converging on before a company exists. People who just left a role to start something, went stealth on LinkedIn, or are being followed as a builder by several tracked investors. One row per person, with the day we first reported them.
The same rows the app's Stealth tab and the Frontrun Report show. Judged and gated: you get the card copy, the links and the followers drawn from your own tracked accounts, never the network's.
Cost: Draws on your monthly usage. Empty answers are free.
Availability: Plans that include the stealth lane (see Pricing). Other keys get 403 lanes_not_enabled. GET /v1/status → lanes.people tells you before you call.
curl "https://frontrun.vc/v1/people?since=7d&lane=stealth&limit=20" \
-H "X-API-Key: your_api_key"Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
since | string (query) | 7d | Window: 7d, 48h, 30d or YYYY-MM-DD. Max 90 days. |
lane | string (query) | -- | stealth (went stealth / left a role, from LinkedIn), follow (the network follows them as a builder), convergence (several tracked accounts converging). Omit for all three. |
q | string (query) | -- | Search name, handle, bio, past company, what they are building. |
scope | string (query) | -- | tracked keeps only people one of your tracked accounts follows. list:<id> does the same for one of your lists (on keys with lists enabled). Omit for everyone the lane reported. |
limit | integer (query) | 50 | Max rows (max 100). |
offset | integer (query) | 0 | Pagination offset. |
Response
{
"since": "2026-10-20",
"lane": "stealth",
"total": 23,
"returned": 2,
"offset": 0,
"has_more": true,
"people": [
{
"entity_id": "b917b9ed-e228-491f-adc9-3980fde6d151",
"name": "Jane Park",
"username": "janepark",
"x_username": "janepark",
"description": "prev: infra @ Stripe. now: building something new",
"profile_image_url": "https://pbs.twimg.com/profile_images/.../400x400.jpg",
"linkedin_url": "https://www.linkedin.com/in/janepark",
"website_url": "https://janepark.com",
"lane": "stealth",
"signal_type": "departed_role",
"trigger_label": "Left Stripe",
"building_claim": true,
"named_company": null,
"prev_orgs": ["Stripe"],
"stealth_started": "2026-10",
"followers_count": 1240,
"x_last_post_at": "2026-10-25",
"judge": {
"card": {
"who": "Ex-Stripe infra engineer, 6 years on payments reliability",
"who_domain": "stripe.com",
"building": "Stealth: something in developer infrastructure",
"building_domain": null,
"credentials": ["Stripe (2020-2026)", "MIT CS"]
}
},
"followed_by": ["garrytan"],
"tracked_by": [],
"followed_by_count": 1,
"first_reported": "2026-10-24",
"last_reported": "2026-10-26"
}
],
"cost_credits": 24,
"balance_credits": 9800
}| Field | Type | Description |
|---|---|---|
lane | string | stealth, follow or convergence: which detector reported the person. |
signal_type | string | null | departed_role when the trigger was leaving a job; otherwise null. |
judge.card | object | The card copy: who (one line on the person), building (what we can say they are building), credentials. Only display copy, never the judgement behind it. |
x_username | string | null | Confirmed X handle. null when we could not confirm one; do not reach out through an unconfirmed handle. |
followed_by / tracked_by | string[] | Which of your tracked accounts follow this person. The network's other followers are never listed. |
followed_by_count | integer | Size of the union of the two lists above. |
first_reported / last_reported | date | The first and most recent day the lane carried this person inside the window. |
Rows are the day's net-new lane: a person reported on several days keeps the freshest card and the first date.
Push instead of poll
Subscribe a webhook to the people event to receive the day's new stealth founders when the lane publishes (about 6 AM ET), with the same filters (lanes, tracked_only).
MCP
The same lane is frontrun_people on the MCP server.