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.
| 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 |
/api/v1) and in every body as api_version. Additive changes (new fields) ship without a version bump; anything that removes or renames a field will get /api/v2.slug, founders by username. Internal database IDs are never exposed.url (the Founder.best page), api_url (its JSON) and markdown_url. Products also carry website, the product’s own site.launch_date is YYYY-MM-DD; timestamps are ISO 8601 UTC.null, never omitted, so shapes are stable across products.limit (1-100) and page (1-based). List responses include a pagination object with total, has_more and absolute next / previous URLs.pricing=free,freemium) or repeat the key.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"
}| 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. |
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.