Public API
Free JSON endpoints for Roblox executor status and scripts. No keys, no auth, no rate-limit (yet). Just don't hammer it, and please credit us.
fetch, no SDK needed.Base URL
Endpoints
/api/executorsFull list of tracked Roblox executors with live status, UNC scores, platform support, and links.
Data source: whatexpsare.online (WEAO), proxied through executors.online.
// Response: Executor[]
interface Executor {
_id: string;
title: string; // e.g. "Solara", "Wave"
slug: string;
free: boolean;
detected: boolean; // currently detected by Roblox anticheat
updateStatus: boolean; // true = working, false = patched/updating
uncStatus: boolean;
decompiler: boolean;
multiInject: boolean;
platform: string; // "Windows", "Android", "Mac", "Windows,Android"
extype: string; // "wexecutor", "wexternal", "aexecutor", "mexecutor", "iexecutor"
rbxversion: boolean | string;
updatedDate: string; // ISO timestamp
version: string;
websitelink: string;
discordlink: string;
uncPercentage: number; // 0-100
suncPercentage: number; // 0-100
clientmods: boolean;
// Optional / situational fields
beta?: boolean;
sunc?: boolean;
hasIssues?: boolean;
longestRunning?: boolean;
recommendedReason?: string; // present on recommended executors
cost?: string; // "$5/mo", etc. — present on paid only
purchaselink?: string; // present on paid only
keysystem?: boolean; // present on free executors with a key
type?: string; // legacy field, prefer extype
hidden?: boolean; // rare, used to soft-delete from listings
}/api/scriptsBrowse or search the script library. Omit `q` to get the full catalog; include it to search.
Data source: scriptblox.com, proxied through executors.online.
qSearch query (optional). When omitted, returns the full catalog page.pagePage number, 1-indexed.maxResults per page (default 20).mode"free" or "paid".patchedFilter by patched status (true/false).keyFilter by key-required status (true/false).universalOnly universal scripts (true/false).verifiedOnly verified scripts (true/false).sortBy"views", "createdAt", or "title".order"asc" or "desc".// Response
{
result: {
totalPages: number;
scripts: Array<{
_id: string;
title: string;
slug: string;
game: { _id: string; name: string; imageUrl?: string };
verified: boolean;
key: boolean;
views: number;
scriptType: "free" | "paid";
isUniversal: boolean;
isPatched: boolean;
image?: string;
createdAt: string; // ISO
script?: string;
likeCount?: number;
dislikeCount?: number;
}>;
};
}/api/scripts/{slug}Full details for one script. Add `?raw=true` to get the raw script source as plain text instead of JSON.
Data source: scriptblox.com, proxied through executors.online.
rawIf "true", returns the raw script source as text/plain.// Response (JSON form): one script object (same shape as above) // Response (?raw=true): text/plain script source
Quick example
// Fetch every tracked executor and print the working ones
const res = await fetch('https://executors.online/api/executors');
const executors = await res.json();
const working = executors.filter(e => e.updateStatus);
console.log(`${working.length} working right now`);Attribution
If you build something with this, please credit executors.online visibly (footer link, "Powered by" line, about page — whatever fits).
Original data comes from WhatExpsAre.Online and ScriptBlox. We already credit them — crediting us keeps the chain clean.
Fair use
- Cache responses on your side. Don't poll faster than every 60 seconds.
- Handle non-200 responses gracefully (the upstream APIs sometimes hiccup).
- No abuse. If you're slamming the endpoint, we'll start rate-limiting.
- This is a free service. We make no uptime guarantees.