Overview
Base URL, conventions, response envelope, caching, CORS and the full endpoint list for the Founder.best public API.
https://www.founder.best/api/v1The REST API covers the same ground as the MCP server for callers that are not MCP clients: scripts, CI jobs, backends, custom GPT actions and anything that already speaks HTTP. Every endpoint is GET, returns JSON, needs no authentication and is cached at the edge for five minutes.
An OpenAPI 3.1 document is generated from the same enums the handlers validate against, so it cannot drift from the implementation. Import it into Postman, Stainless, a custom GPT, or any client generator. A small discovery document at the base URL links to everything else.
Endpoints
| Method | Path | Returns |
|---|---|---|
GET | /products | Search / filter products, paginated |
GET | /products/{slug} | One product, full record |
GET | /founders | Search founders, paginated |
GET | /founders/{username} | One founder with products |
GET | /launches | Ranked launches for an ISO week |
GET | /trending | Most upvoted recent launches |
GET | /categories | Taxonomy with live counts |
GET | /openapi.json | OpenAPI 3.1 description |
GET | / | Discovery document |
Conventions
- Versioning. The version is in the path (
/api/v1) and in every body asapi_version. Additive changes (new fields) ship without a version bump; anything that removes or renames a field will get/api/v2. - Identifiers. Products are addressed by
slug, founders byusername. Internal database IDs are never exposed. - URLs. Every object carries absolute URLs:
url(the Founder.best page),api_url(its JSON) andmarkdown_url. Products also carrywebsite, the product’s own site. - Dates.
launch_dateisYYYY-MM-DD; timestamps are ISO 8601 UTC. - Nulls. Optional values are
null, never omitted, so shapes are stable across products. - Pagination.
limit(1-100) andpage(1-based). List responses include apaginationobject withtotal,has_moreand absolutenext/previousURLs. - Arrays in query strings. Comma-separate (
pricing=free,freemium) or repeat the key.
Response envelope
Every successful response starts with the same three fields:
{
"api_version": "1",
"generated_at": "2026-09-22T12:00:00.000Z",
"docs": "https://www.founder.best/docs",
…
}Errors use one envelope too - see Errors:
{
"error": { "code": "not_found", "message": "No live product with slug \"acme\". Use /api/v1/products?search= to find products." },
"api_version": "1"
}Caching, CORS and limits
| Header | Value | Meaning |
|---|---|---|
Cache-Control | public, s-maxage=300, stale-while-revalidate=3600 | Edge-cached for 5 minutes; categories for 10; llms files for 60. |
Access-Control-Allow-Origin | * | Callable from browsers and hosted agents. |
X-RateLimit-Limit | 120 | Requests allowed per minute per IP. |
X-RateLimit-Remaining | n | Requests left in the current window. |
X-RateLimit-Reset | unix seconds | When the window resets. |
Retry-After | seconds | Only on 429. |
Legacy paths
The original /api/ai/latest, /api/ai/featured, /api/ai/winners, /api/ai/products/{slug} and /api/ai/founders/{username} feeds now answer with a 308 Permanent Redirect to their /api/v1 equivalent. HTTP clients follow it automatically; update bookmarks when convenient.
