Zenoblox Logo
Integrate

Script API

Read-only public JSON API for public script posts.

Base URL and auth

The public Script API is hosted on zenoblox.com. It is read-only and does not require an API key.

BASEhttps://zenoblox.com/api

CORS is open (Access-Control-Allow-Origin: *) so browser apps can fetch from other origins. Dashboard, search, comments, and billing routes are not part of this public API — do not call them from third-party apps.

List public scripts

GET/api/scripts

Returns recent public, approved, non-draft script posts. Codes and blogs never appear here.

NameTypeDescription
limitnumberResults per page. Default 12, minimum 1, maximum 25.
cursorstringThe id of the last item from the previous page.
sortstringnewest (default) or views.
hasKeybooleantrue or false to filter key-system scripts.
gameIdstringRoblox place ID attached to the post.

Example request:

js
const res = await fetch(
  "https://zenoblox.com/api/scripts?limit=5&sort=newest"
);
const { data, nextCursor, hasMore } = await res.json();

for (const script of data) {
  console.log(script.title, script.url);
}

Response shape:

json
{
  "data": [
    {
      "id": "6ab414f0e773cf1fd7565f27",
      "title": "RIVALS: ArchHub Enhancements",
      "slug": "rivals-archhub-enhancements-4xci",
      "url": "https://zenoblox.com/script/rivals-archhub-enhancements-4xci",
      "thumbnail": "https://zencript.b-cdn.net/posts/thumb_HZfekLNo2chNdHCGb2FNsUuCeUn1_1790186735325_4xci.jpg",
      "game": { "placeId": "17625359962", "title": "RIVALS" },
      "views": 60,
      "likes": 0,
      "comments": 0,
      "createdAt": "2026-09-23T18:05:36.394Z",
      "isPatched": false,
      "hasKeySystem": false,
      "isMobileFriendly": false,
      "author": {
        "username": "kaelvyr",
        "displayName": "Kaelvyr",
        "isVerified": false
      }
    }
  ],
  "nextCursor": "6ab414b8e773cf1fd7565f26",
  "hasMore": true
}

Get a script

GET/api/scripts/{slug}

slug is the post slug or the post id. Private, unlisted, followers-only, draft, trashed, pending, declined, non-script, and deactivated-author posts return 404. The payload adds a stripped description and script widgets only — never liked-by arrays or account secrets.

js
const res = await fetch("https://zenoblox.com/api/scripts/rivals-archhub-enhancements-4xci");
const script = await res.json();

description is plain text from text widgets, capped at 2000 characters.

json
{
  "id": "6ab414f0e773cf1fd7565f27",
  "title": "RIVALS: ArchHub Enhancements",
  "slug": "rivals-archhub-enhancements-4xci",
  "url": "https://zenoblox.com/script/rivals-archhub-enhancements-4xci",
  "thumbnail": "https://zencript.b-cdn.net/posts/thumb_HZfekLNo2chNdHCGb2FNsUuCeUn1_1790186735325_4xci.jpg",
  "game": { "placeId": "17625359962", "title": "RIVALS" },
  "views": 60,
  "likes": 0,
  "comments": 0,
  "createdAt": "2026-09-23T18:05:36.394Z",
  "isPatched": false,
  "hasKeySystem": false,
  "isMobileFriendly": false,
  "author": {
    "username": "kaelvyr",
    "displayName": "Kaelvyr",
    "isVerified": false
  },
  "description": "Plain-text excerpt from text widgets, capped at 2000 characters.",
  "scripts": [
    {
      "title": "Script",
      "source": "lua",
      "content": "loadstring(game:HttpGet(\"https://rawscripts.net/raw/RIVALS-ArchHub-enhancements-229363\"))()"
    }
  ]
}

scripts[].source is lua for inline code or url when the widget stores an https link.

Errors

NameTypeDescription
400bad_requestMissing or invalid slug.
404not_foundNo public script at that slug.
429rate_limitedMore than 60 requests in 60 seconds from one IP. Retry-After: 60.
502 / 500server_errorUpstream or internal failure.
json
{ "error": "Not found", "code": "not_found" }

Rate limits

60 requests per IP per 60 seconds, enforced in memory on the public host (and on the API origin). Responses include RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. Successful GETs are cache-friendly: Cache-Control: public, max-age=30, s-maxage=60, stale-while-revalidate=120.

Do not scrape the whole catalog. Use the cursor. Bursting past the limit is fair-use abuse.

Attribution

If you display ZenoBlox scripts in your app, link each item back to url (the zenoblox.com/script/… page). Do not strip author names. A visible “via ZenoBlox” credit is required when the data is the main content of a hub or bot.

Codes and Blogs

Codes and Blogs have no public API. There are no list or get endpoints for those formats, and we will not add them. Integrate against public scripts only. Internal site routes that happen to return mixed feeds are not a supported platform API.
© 2026 ZenoBloxSubmit feedback