Catalog API
Query the plugin catalog as JSON from your own tools.
The catalog exposes the same query the listing page runs, as JSON, for tools that want to build on it. No API key, no locale prefix: plugin data is never translated, so one endpoint answers everyone.
GET /api/plugins?q=&category=&author=&web=1&sort=stars&page=1&per_page=50
| Param | Meaning |
|---|---|
q |
Full-text search over name, description and README |
category |
A tag from the catalog (the categories list on the site; the value is an npm keyword) |
author |
A creator login across npm / GitHub / Gitee |
web |
1 to keep only plugins with a web UI |
sort |
stars (default), recent, name |
page |
1-based page number, default 1 |
per_page |
1β100, default 50 |
Response
{
"total": 2307,
"page": 1,
"perPage": 50,
"pages": 47,
"plugins": [
{
"slug": "upstream-radar",
"npmName": "upstream-radar",
"name": "upstream-radar",
"description": "watch upstream repos for new releases",
"version": "0.1.0",
"license": "MIT",
"homepage": null,
"totalStars": 12,
"totalForks": 0,
"hasWebUi": false,
"publishedAt": "2026-08-20T07:17:36.155Z",
"updatedAt": "2026-08-22T02:00:00.000Z",
"tags": ["agent", "dsh"]
}
]
}
totalStars is the sum across all source mirrors (a plugin published on both
GitHub and Gitee counts both); tags are the package's npm keywords. There is
no next/prev link object β compute them from page and pages.
Example
curl -s 'https://plugins.example.com/api/plugins?q=memory&sort=stars&per_page=10'
The catalog refreshes daily at 02:00 UTC, so numbers can lag a release by up to a day β the same schedule the site's listings follow.
Last updated 2026-08-22