INDIESHEET · DEVELOPERS
IndieSheet API & developer docs
Read the IndieSheet launch directory from code, scripts and AI agents.
IndieSheet offers a small public, read-only JSON API over its directory of independent software products. It is the same data that powers indiesheet.com, so it is always current.
Machine-readable resources
- OpenAPI 3.1 specification at
/openapi.json: every endpoint with an operation ID, typed parameters and response schemas, ready for function calling. - llms.txt: a guide for AI agents, with when to use IndieSheet and links to every page as Markdown.
- Markdown pages: send
Accept: text/markdownto any page, or append.mdto its path, for example/tool/rotli.md. - Sitemap: every public URL.
Authentication
None. The API is public and read-only, so there is no API key, token or sign-up. Base URL: https://indiesheet.com. Submitting a launch, upvoting and editing a listing require a signed-in person on the website and are not available through the API.
Endpoints
GET /api/products
Every live product in the directory, ranked by upvotes. Operation ID: listProducts.
curl https://indiesheet.com/api/productsGET /api/products/{slug}
One product's full public page: listing fields, makers, related products and its editorial profile. Answers 404 for unknown slugs. Operation ID: getProduct.
curl https://indiesheet.com/api/products/rotliGET /api/pricing
Whether the paid instant launch is available, and its price. Operation ID: getLaunchPricing.
curl https://indiesheet.com/api/pricingGET /api/dr-club
Maker websites in the DR Club with their Domain Rating, 30- and 90-day changes and tier. Operation ID: getDrClubLeaderboard.
curl https://indiesheet.com/api/dr-clubExample response
{
"products": [
{
"slug": "rotli",
"name": "Rotli",
"description": "Notes and tasks app for Mac",
"category": "Productivity",
"type": "App",
"price": "Free",
"maker": "Seth Medina",
"websiteUrl": "https://rotli.co/",
"upvotes": 0
}
],
"canUpvote": true
}Errors and fair use
Errors return JSON as { "error": "message" } with a matching HTTP status, such as 404 for an unknown product. Unknown pages answer 404 and removed pages 410. The data changes a few times a day, so cache responses rather than polling. Questions or a use case the API does not cover yet? Contact us.