RoScripter API
Search and read the public Roblox scripts on RoScripter from your website, Discord bot or app. The API is read-only, answers in JSON and needs a free key.
Every response has success, then data or an error. Using the API means following its rules.
Authentication
Send your key in the Authorization header of every request. X-API-Key works too.
Keep the key on your server or bot, never in a web page or a shared script. A key sent in the URL is refused. If a key leaks, roll it on API Access.
Rate limits
| Per key, for each user of your app | 60 requests / minute |
| Per key | 300 requests / minute |
| Per account | 5,000 requests / day |
Each response has RateLimit-Remaining and X-Daily-Remaining headers. Going over returns 429; the daily count resets at 00:00 UTC. Need more? Ask on Discord.
Errors
Errors use HTTP status codes and return an error with a code and a readable message.
| 400 | VALIDATION_ERRORA parameter is invalid. The message says which. | A parameter is invalid. The message says which. |
| 400 | KEY_IN_URLThe key was sent in the URL. Send it in a header. | The key was sent in the URL. Send it in a header. |
| 401 | UNAUTHORIZEDThe key is missing, wrong or was rolled. | The key is missing, wrong or was rolled. |
| 403 | KEY_DISABLEDThe key was turned off for breaking the rules. | The key was turned off for breaking the rules. |
| 404 | NOT_FOUNDNo public script with that slug, or no such endpoint. | No public script with that slug, or no such endpoint. |
| 405 | METHOD_NOT_ALLOWEDOnly GET is supported. | Only GET is supported. |
| 429 | RATE_LIMITEDToo many requests this minute. | Too many requests this minute. |
| 429 | DAILY_LIMITYour account used today's requests. | Your account used today's requests. |
| 500 | INTERNAL_ERRORSomething went wrong on our side. | Something went wrong on our side. |
| 503 | SERVICE_UNAVAILABLEThe API is briefly down. Try again in a minute. | The API is briefly down. Try again in a minute. |
| 503 | BUSYThe API is busy. Retry after the Retry-After seconds. | The API is busy. Retry after the Retry-After seconds. |
Rules
Important
- Keep your key secret: use it only on your server or in your app, never in a public web page or a shared script.
- Wherever you show our scripts, show “Powered by RoScripter” with a link, and link each script to its
url, as it is. - Don't get around the limits, for example with extra accounts or keys.
Breaking a rule gets your API access turned off.
In Discord, [Powered by RoScripter](https://roscripter.com) shows the link.
List scripts
GET/v1/scripts
Returns public scripts, newest first, or search results when you pass q. Lists don't include code.
Query parameters
qstringSearch words, 1–100 characters.
placeIdstringOnly scripts for this Roblox game: the number in its URL. Hubs that support the game are included, except when searching with
q.typeenumgame,huboruniversal.sortenumnewest(default),views,likesorrelevance(default when searching).noKeySystembooleanIf
true, only scripts without a key system.mobileFriendlybooleanIf
true, only scripts that work on mobile.freebooleanIf
true, paid scripts are left out.verifiedOnlybooleanIf
true, only scripts from verified creators.includePatchedbooleanIf
true, patched scripts are included. Defaultfalse.pageintegerPage number, 1–200. Default
1.limitintegerResults per page, 1–50. Default
20.
Returns A list of script objects and meta with page, limit, total and totalPages.
Get a script
GET/v1/scripts/{slug}
Returns one public script with every field, including its code.
Path parameters
slugstringrequiredThe script's slug, from a list or its page URL.
Trending
GET/v1/trending
Returns the Trending chart: scripts ranked by how many different players opened them. It's updated once a day.
Query parameters
periodenumtoday,week(default) ormonth.limitintegerResults per page, 1–50. Default
20.offsetintegerPlaces to skip, 0–99. Default
0.
Returns Up to 100 places, each with rank, players, move (places up or down since the period before, null when new) and the script.
Usage
GET/v1/me
Returns your limits and how many requests your account made today.
Status
GET/v1/health
Returns { "status": "ok" } as data while the API is up. No key needed, so it's safe for uptime checks.
The script object
The fields every endpoint returns for a script.
Fields
slugstringThe script's ID in URLs. Use it with Get a script.
titlestringThe script's name.
descriptionstringPlain text. Lists give the first ~300 characters.
urlstringThe script's page on RoScripter. Link to it as it is wherever you show the script: the
refat the end tells us the visit came from your app.imagestring | nullThe cover picture: the creator's own, or the game's.
typeenumgame,huboruniversal.gameobject | nullThe main game:
placeIdandname.nullfor universal scripts.keySystem, paid, mobileFriendly, patchedbooleanWhether it needs a key, costs money, works on mobile, or is patched.
statsobjectviews,likes,dislikes,downloads, andruns(nullunless the creator turned on Run Stats).authorobjectThe creator's
username,image,verifiedandurl.createdAt, updatedAtstringISO 8601 dates.
Only in Get a script
features, tagsstring[]What the script does, and its tags.
versionintegerThe current version number.
keyLink, discord, videostring | nullWhere to get the key, the creator's Discord, and a showcase video.
gamesobject[]The games the script is for, main game first: a game script's own game, or all of a hub's games. Empty for universal scripts.
codestringThe code as players copy it on the site, with a safety tip on top while the creator isn't verified.