The whole index, as JSON
No key, no account, CORS open to everyone. Every screen on this site makes exactly one call, and these are the calls.
curl https://blockdex.kynth.studio/api/search?q=marqueeItems
62,855
2026-08-03Every entry across every indexed manifest.Registries
800
2026-08-03Each one addressable by slug.Verified free
22,659
2026-08-03access=free filters to exactly these.Cache
15 min, SWR 24 h
The corpus is rebuilt once a night; anything shorter is load without freshness.Endpoints
6 calls, all GET| Endpoint | What it answers | Try it |
|---|---|---|
| /api/searchGET | Item-level search across every indexed registry, ranked in Postgres and counted in the same pass. Omit q to browse the whole corpus. Nothing is re-sorted on the client — the order that comes back is the order to render. | Run it |
| /api/items/{registry}/{name}GET | One component, with everything its page needs in a single call: install command, dependencies, files it writes, the access verdict, whether its registry permits framing, and its siblings. | Run it |
| /api/registriesGET | Every registry the crawl reaches, one row each, with its inventory counts and its GitHub facts. | Run it |
| /api/registries/{slug}GET | One registry plus its whole inventory, grouped by kind, with anything that has since been removed from its manifest. | Run it |
| /api/statsGET | The corpus counts and when the index was last rebuilt. This is where every figure on this site comes from. | Run it |
| /api/healthGET | Liveness, for anything polling it. | Run it |
/api/search
/api/search?q=marquee&access=free&limit=10| Parameter | Accepts |
|---|---|
| q | Free text. Omit to browse everything. |
| kind | component · block · hook · example · lib · theme · other |
| type | The raw registry type, e.g. registry:ui |
| access | free · paid · unknown |
| registry | A registry slug |
| sort | relevance (default) · name · newest · stars |
| limit | Default 40, max 200 |
| offset | Default 0, max 5000 |
/api/registries
/api/registries?sort=stars&limit=20| Parameter | Accepts |
|---|---|
| sort | items (default) · stars · name · fresh · newest |
| access | free · paid · mixed · unknown |
| include | gone — adds registries that have stopped answering |
| limit | Default 200, max 500 |
What the data is, and is not
Everything here is derived from what a registry actually served. The access verdict is a measurement — an item endpoint was fetched and either answered or returned 401 — and unknown means the registry serves no item endpoint we could ask, which is deliberately neither free nor paid.
There is no quality score, no rating and no ranking of registries against each other, because a crawler cannot establish any of those. Ordering by stars orders by GitHub stars and means nothing more than that. Licence fields are the string the repository published; they are not a licence interpretation and are not advice.
Errors are JSON too — { "error": "…" } — so a consumer never has to parse an HTML error page. If a call times out it is the database waking up rather than a result; the same call a moment later will answer.
BlockDex is not affiliated with shadcn or with any registry it indexes. How the index is built.
