Public catalogue API

Read-only access to published scripts, games and creators.

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

EndpointDescription
GET /api/v1/public/scriptsPublished scripts, paginated
GET /api/v1/public/scripts/{slug}One script with its changelog and community compatibility
GET /api/v1/public/gamesGames with at least one published script (plus universal)
GET /api/v1/public/games/{slug}One game
GET /api/v1/public/games/{slug}/scriptsPublished scripts for a game
GET /api/v1/public/creators/{username}A creator's public profile and published scripts
GET /api/v1/public/trendingThe site's trending ranking
GET /api/v1/public/searchRelevance-ranked scripts plus matching games

Parameters

ParameterApplies toValues
pagelists1–1000 (default 1)
pageSizelists1–50 (default 20)
sortscriptslatest (default), popular (lifetime views), trending
accessscripts, searchkeyless, external_key, scriptbunker_keys
gamescriptsa game slug, or universal
searchscripts, games2–80 characters
qsearch2–80 characters (required)
limittrending, search1–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:

modelabelMeaning
keylessKeylessThe script needs no key
external_keyExternal Key SystemThe creator runs their own key system; ScriptBunker only records that
scriptbunker_keysScriptBunker KeysThe 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.