Skip to content

Catalog API

The marketplace is a static catalog. Browse it in the browser, or pull the same listings from the JSON feed when you are writing installers, dashboards, or CI checks. Building aPlugin class and submitting a listing stay in theplugin guides.

JSON feed

GET/plugins/feed.jsonreturns every published listing. The body is regenerated with the docs site. Cache it for a few minutes; it is not a live search API.

{
  "generated_at": "2026-09-20T18:00:00.000Z",
  "count": 1,
  "plugins": [
    {
      "slug": "orbit-branding",
      "name": "Orbit Branding",
      "summary": "…",
      "url": "https://orbit.almasix.com/plugins/orbit-branding/",
      "author": { "slug": "almasix", "name": "Almasix" },
      "categories": ["theme"],
      "orbit_versions": ["0.4"],
      "price": "free",
      "package": "almasix-orbit",
      "repository": "https://github.com/almasix-dev/almasix-orbit",
      "docs_url": null,
      "license": "MIT",
      "keywords": ["branding", "theme"],
      "official": true,
      "featured": true,
      "stars": 1,
      "installs": null,
      "github_url": "https://github.com/almasix-dev/almasix-orbit",
      "pypi_url": "https://pypi.org/project/almasix-orbit/",
      "published_at": "2026-04-01"
    }
  ]
}
  • price is "free" or a display string such as "$29".
  • stars and installs may be null when GitHub or PyPI has no figure.
  • Draft and archived registry entries never appear.

Open feed.json

HTML routes

URLWhat it is
/plugins/Browse grid (all published listings)
/plugins/paid/Paid listings only
/plugins/authors/Authors with at least one published plugin
/plugins/authors/<slug>/One author’s listings
/plugins/categories/Category index
/plugins/categories/<slug>/One category
/plugins/<slug>/A single listing (same slug as the feed)

Shareable browse filters

The browse grid writes filters into the query string so a search is a URL you can store or open from a script. Missing keys mean “no filter.”

ParamMeaning
qCase-insensitive match on name, author, package, or summary
pricefree or paid (ignored on /plugins/paid/)
categoryCategory slug, e.g. theme
versionOrbit line, e.g. 0.3
sortnewest (default), oldest, stars,installs, name-asc, name-desc
official1 to keep Almasix listings only
dark1 to keep dark-mode-ready listings

Example:/plugins/?q=branding&category=theme&official=1

Write a plugin, then list it

The catalog does not compile Python. Subclass Plugin, publish the package, then open a registry pull request.

Building a pluginListing a pluginBrowse listings