API
Everything on this site comes from a free JSON API. No key needed; each address can make 240 requests a minute.
Interactive reference: https://undercurrent-api.vercel.app/docs
| Endpoint | What it returns |
|---|---|
| GET /api/overview | Headline numbers, risers, fallers, breakouts and the biggest switches. |
| GET /api/tools?category=&stage=&sort=momentum&limit=50 | Search and filter every tracked tool. |
| GET /api/tools/{id} | Everything about one tool: momentum, stage, drivers, migrations, companions, health and rivals. |
| GET /api/tools/{id}/series | Monthly history for every signal, plus the 12-month forecast. |
| GET /api/compare?ids=jest,vitest | Up to six tools side by side, including switches between them. |
| GET /api/categories | Every category with its leader and its fastest mover. |
| GET /api/categories/{id} | One category, with each rival's share over time. |
| GET /api/migrations?domain=&min_repos=2 | Switch counts between rivals, overall and by year. |
| GET /api/migrations/examples?from_tool=jest&to_tool=vitest | The repositories and commits behind one switch. |
| POST /api/check-stack | Send { content, filename } for any dependency file and get a verdict per dependency. |
| GET /api/badge/{id}.svg | A README badge with the tool's momentum and stage. |
| GET /api/reports and /api/reports/{YYYY-MM} | Monthly State of Tools reports. |
| GET /api/forecasts/accuracy | How past forecasts compared with what actually happened. |
| POST /api/alerts/subscribe | Send { email, tools: [ids] } to follow tools. |
| GET /api/status | Health of every crawler and how fresh each data source is. |
Example
curl https://undercurrent-api.vercel.app/api/tools/vitest
curl -X POST https://undercurrent-api.vercel.app/api/check-stack \
-H "Content-Type: application/json" \
-d '{"filename": "requirements.txt", "content": "flask\nrequests\nnose"}'