GET /v1/follows/enriched
New follows with full enrichment: AI classification + your custom rules + your custom tags, all merged into each result.
This is the most powerful endpoint for building custom workflows.
Cost: Draws on your monthly usage.
curl "https://frontrun.vc/v1/follows/enriched?since=48h" \
-H "X-API-Key: your_api_key"Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
since | string (query) | "24h" | Time window: "24h", "48h", "7d", etc. |
username | string (query) | -- | Filter to a specific tracked account. |
sector / keyword / entity_type / tag | string (query) | -- | Filter the returned follows. Use entity_type=company to drop people and keep only companies. |
cursor | string (query) | -- | Opaque watermark from a previous response's next_cursor. Resumes exactly where that run stopped, so a retry never double-counts or drops records. Overrides since. See Budgets & Cursors. |
Response
{
"since": "2026-03-07T04:00:00.000Z",
"accounts_checked": 50,
"total_new_follows": 12,
"has_more": false,
"next_cursor": "frc1_eyJ2IjoxLCJzIjoiMWEyYi4uLiIsImQiOiIyMDI2LTA4LTA3In0.Kd3...",
"usage_pct": 12,
"usage_resets_at": "2026-11-01T00:00:00Z",
"results": [
{
"tracked_account": "pmarca",
"as_of": "2026-04-20T08:00:00Z",
"new_follows_count": 3,
"new_follows": [
{
"twitter_user_id": "1111111111",
"username": "stealth_ai_co",
"name": "StealthAI",
"description": "Automating enterprise workflows with LLMs",
"verified": true,
"classification": {
"is_company": true,
"confidence": "high",
"sector": "AI/ML",
"entity_type": "startup"
},
"custom": {
"tags": ["thesis-match", "watchlist"],
"sector": "AI Infrastructure",
"priority": "high",
"matched_rule": "AI Infra"
}
}
]
}
]
}Companies only
New follows include people as well as companies. For startup sourcing, pass entity_type=company to keep only companies.
curl "https://frontrun.vc/v1/follows/enriched?since=7d§or=AI&entity_type=company" \
-H "X-API-Key: your_api_key"In a live test, sector=AI alone returned 13 people and 18 companies. Adding entity_type=company returned the 18 companies.
Starter companies
On a new account your own window is often thin. When it is, the response adds a separate starter_companies array and a starter_note, so the answer is not empty on day one.
The starter block is added only when all of these hold:
- the key was created from a Frontrun account
- fewer than 10 of your own follows matched in the window
- it is the first page: no
cursor,offset0 - no
usernamefilter
Starter rows are filtered by the same sector and keyword you sent, and handles already in results are dropped. They are never mixed into results: results only ever holds follows made by your tracked accounts.
{
"total_new_follows": 3,
"results": [ ... ],
"starter_companies": [
{
"username": "agent_ops_hq",
"name": "AgentOps",
"description": "Observability for AI agents",
"sector": "AI",
"website": "https://agentops.example",
"followers": 860,
"stage": "pre-seed",
"flagged_at": "2026-09-12T09:30:00.000Z",
"tracked_followers": null,
"source": "starter",
"via": "onboarding",
"x_url": "https://x.com/agent_ops_hq"
}
],
"starter_note": "starter_companies: the last 30 days of companies in your sectors, from the whole Frontrun network, not from accounts you track. They are here so a new account is not empty and fade out as your own list grows. GET /v1/companies lists both."
}Every starter row has source: "starter". Starter companies come from the whole Frontrun network, not from your tracked accounts. GET /v1/companies returns your own companies and the starter set together.
How custom data merges
- AI classification is always included
- Custom tags (from
POST /v1/tags) are merged - manual overrides take priority - Classification rules (from
POST /v1/classify/rules) are evaluated against each entity - If both a manual tag and a rule match, they're merged (tags combined, manual sector takes priority)