Public catalogue API
The public API mirrors what the website shows to a signed-out visitor. It uses the same queries and visibility rules as the website: a draft, hidden or removed script is not in any response, and asking for one returns 404 exactly as an unknown slug does.
It never returns script source, internal loader files, ScriptBunker Keys, device information, e-mail addresses, moderation information or creator-private analytics. A script's loader field is the same public loader URL and loadstring the website offers with Copy Script.
No authentication is needed. Responses allow cross-origin GET requests.
Endpoints
| Endpoint | Description |
|---|---|
GET /api/v1/public/scripts | Published scripts, paginated |
GET /api/v1/public/scripts/{slug} | One script with its changelog and community compatibility |
GET /api/v1/public/games | Games with at least one published script (plus universal) |
GET /api/v1/public/games/{slug} | One game |
GET /api/v1/public/games/{slug}/scripts | Published scripts for a game |
GET /api/v1/public/creators/{username} | A creator's public profile and published scripts |
GET /api/v1/public/trending | The site's trending ranking |
GET /api/v1/public/search | Relevance-ranked scripts plus matching games |
Parameters
| Parameter | Applies to | Values |
|---|---|---|
page | lists | 1–1000 (default 1) |
pageSize | lists | 1–50 (default 20) |
sort | scripts | latest (default), popular (lifetime views), trending |
access | scripts, search | keyless, external_key, scriptbunker_keys |
game | scripts | a game slug, or universal |
search | scripts, games | 2–80 characters |
q | search | 2–80 characters (required) |
limit | trending, search | 1–20 |
Out-of-range numbers are clamped to the limits above rather than rejected. An unknown sort or access value is ignored.
Access modes
access.mode is one of three values and they are never merged:
mode | label | Meaning |
|---|---|---|
keyless | Keyless | The script needs no key |
external_key | External Key System | The creator runs their own key system; ScriptBunker only records that |
scriptbunker_keys | ScriptBunker Keys | The project uses ScriptBunker's temporary, device-bound keys (keyDurationSeconds is set) |
Example
curl "https://scriptbunker.com/api/v1/public/scripts?access=keyless&sort=trending&pageSize=2"
{
"data": [
{
"id": "0b6f3c8e-…",
"slug": "infinite-yield",
"title": "Infinite Yield",
"url": "https://scriptbunker.com/scripts/infinite-yield",
"game": { "name": "Universal", "slug": "universal" },
"supportedGames": [],
"creator": { "username": "edgeiy", "displayName": "Edge", "verified": true, "url": "https://scriptbunker.com/creators/edgeiy" },
"access": { "mode": "keyless", "label": "Keyless", "keyDurationSeconds": null },
"version": "2.4.0",
"platforms": ["PC"],
"features": ["Commands", "Fly"],
"description": "…",
"projectMode": "single",
"stats": { "views": 1280, "likes": 96, "comments": 12 },
"media": { "thumbnail": "https://scriptbunker.com/…", "banner": "https://scriptbunker.com/…", "gameIcon": "https://scriptbunker.com/…" },
"loader": {
"url": "https://scriptbunker.com/loader/infinite-yield",
"loadstring": "loadstring(game:HttpGet(\"https://scriptbunker.com/loader/infinite-yield\"))()"
},
"updatedAt": "2026-09-18T14:02:11.000Z"
}
],
"meta": { "total": 41, "page": 1, "pageSize": 2, "totalPages": 21 }
}
GET /scripts/{slug} returns the same object plus changelog (entries of { version, date, changes[] }; date is human readable) and compatibility:
"compatibility": {
"version": "2.4.0",
"environments": [
{ "executor": "delta", "executorLabel": "Delta", "platform": "android", "platformLabel": "Android", "reports": 47, "working": 44, "notWorking": 3, "percentWorking": 94, "lastReportAt": "2026-09-19T09:12:00.000Z" }
]
}
Compatibility numbers are community reports about the release currently served, not a guarantee and not a safety signal. percentWorking is null until an environment has at least 5 reports. See Compatibility reports.
Caching
Responses are cacheable for 30 seconds (Cache-Control: public, max-age=30). A new release or a moderation action can therefore take up to that long to show up.