API
Public REST API reference.
We expose a public, read-only REST API under https://stremio-addons.net/api/v0/*. No authentication is required and CORS is open to all origins (*).
The /api/v0/* API is experimental and comes with no stability
guarantees; endpoints may change without notice.
Endpoints
GET /api/v0/categories
List all category labels.
Order: by name, ascending.
- 200:
CategoryList. - 500:
{ error: "Failed to fetch categories" }
Example
curl https://stremio-addons.net/api/v0/categoriesGET /api/v0/addons
Paginated approved addons. Only top-level addons are listed (instances are excluded).
Query parameters:
| Name | Type | Default | Notes |
|---|---|---|---|
page | int ≥1 | 1 | Ignored when after resolves. |
limit | int 1–100 | 100 | Clamped to range. |
search | string | Case-insensitive match on name, description, or slug. | |
nsfw | enum | include all | only | exclude. |
category | string | Category slug; repeatable (?category=a&category=b), OR-matched. Multi-word slugs use + (e.g. ?category=tv+shows). | |
sort_by | enum | createdAt | createdAt | stars. |
order | enum | desc | asc | desc. |
after | uuid | Cursor: skip rows up to and including this addon under the current sort. Falls back to offset paging if the uuid is not in the filtered set. |
Order: by sort_by (default createdAt) in the order direction (default desc).
Use whichever paging style fits your use case: the after cursor is ideal for infinite scroll, while page and limit work great for regular numbered pagination.
-
200:
AddonList:{ "addons": [ /* Addon */ ], "pagination": { "page": 1, "limit": 100, "total": 0, "totalPages": 0, "hasNextPage": false, "hasPreviousPage": false } }When
afteris applied,pageis reported as1andhasPreviousPageistrue. -
400:
{ error: "Invalid query parameter(s): ..." } -
500:
{ error: "Failed to fetch addons" }
Example
curl "https://stremio-addons.net/api/v0/addons?search=torrent&sort_by=stars&order=desc&limit=25"GET /api/v0/addons/{uuidOrSlug}
Single approved addon by UUID or slug. Includes approved instances.
- 200:
AddonDetail - 400:
{ error: "UUID or slug is required" } - 404:
{ error: "Addon not found" } - 500:
{ error: "Internal Server Error" }
Example
curl https://stremio-addons.net/api/v0/addons/stremio-addons.netResponses
All responses are JSON unless noted otherwise. Successful requests return 200; errors return the matching HTTP status with a { "error": string } body.
Responses are cached for up to a day (Cache-Control: public, max-age=86400), so newly approved addons and rating changes may take some time to appear.
Object shapes
Category
{
name: string; // human-readable label, e.g. "TV Shows"
slug: string; // url-safe identifier, e.g. "tv+shows"
}CategoryList
{
categories: Category[];
}Addon
{
uuid: string;
url: string; // {SITE_URL}/addons/{slug}
manifestUrl: string;
manifest: object; // Stremio manifest object at the time of indexation
slug: string;
stars: number; // number of users who starred the addon
categories: Category[];
configureUrl: string | null; // null unless manifest.behaviorHints.configurable
createdAt: string; // ISO 8601
updatedAt: string; // ISO 8601
}AddonDetail
Addon plus:
{
documentation: string | null; // raw markdown, not HTML
instances: AddonDetail[]; // approved instances
}Pagination
{
page: number;
limit: number;
total: number;
totalPages: number;
hasNextPage: boolean;
hasPreviousPage: boolean;
}AddonList
{
addons: Addon[];
pagination: Pagination;
}Feedback
Have a use case the current endpoints don't cover? Let us know.