The FiveM server API
Every public FiveM server as JSON: players right now, the 14-day average, installed resources, framework, owner and country. The same data as this site, for your Discord bots, dashboards and AI agents.
Machine-readable description for code generators and agents: /api/v1/openapi.json
What you can ask
- GET/api/v1/resources/{name}/serversServers running a resource
Every listed server the crawler saw running a resource in the last 12 hours, e.g. ox_lib, each with live players and its 14-day average, plus the resource's totals. Up to 5,000 per request.
- GET/api/v1/serversSearch the server list
Filter by country, framework, installed resources, minimum players or average, or part of the name. Sorted by 14-day average or by players right now.
- GET/api/v1/servers/{code}/detailsOne server in full
Everything on the server page: installed resources, OneSync, owner, framework, rank, and its player samples for the last 24 hours or 7 days.
- GET/api/v1/resourcesResource ranking
The most installed FiveM resources with servers, share, category and the players their servers average over 14 days; sort by installs or by players. One resource at /api/v1/resources/{name}.
- GETfree/api/v1/usageYour quota
Plan, requests used today and when the quota resets. Asking does not count.
- GETfree/api/v1/servers/{code}Server status, no key
Players, slots and the 14-day average of one server. Free and keyless for embeds and status bots.
- Live players and the 14-day average of every server
- Resources, frameworks, owners and countries
- One quota for all your keys, reset at 00:00 UTC
- Cancel any time in the billing portal
Sign in first; you subscribe from the dashboard.
One request
curl -H "Authorization: Bearer fs_live_..." \
"https://fivesearch.net/api/v1/resources/ox_lib/servers?limit=2"{
"resource": "ox_lib",
"scanned": 14210,
"players": 61280,
"averagePlayers": 48931.6,
"total": 11873,
"limit": 2,
"offset": 0,
"sort": "average",
"updatedAt": "2026-10-14T19:42:10.000Z",
"servers": [
{
"id": "abc123",
"name": "Example RP",
"url": "https://fivesearch.net/servers/abc123",
"joinUrl": "https://cfx.re/join/abc123",
"online": true,
"players": 512,
"maxPlayers": 1024,
"averagePlayers": 388.4,
"peak24h": 731,
"rank": 3,
"country": "DE",
"locale": "de-DE",
"framework": "QBCore",
"owner": "exampleowner",
"gametype": "Roleplay",
"tags": ["roleplay", "german"],
"premium": "pt"
}
]
}Bots and AI agents
// Any tool that can only fetch a URL can pass the key as ?key=
// (prefer the header where you can: URLs end up in logs).
const res = await fetch(
"https://fivesearch.net/api/v1/servers?country=DE&framework=QBCore&limit=50",
{ headers: { Authorization: `Bearer ${process.env.FIVESEARCH_KEY}` } },
);
const { servers } = await res.json();
console.log(res.headers.get("x-ratelimit-remaining"), servers[0].averagePlayers);What averagePlayers means
Players at any moment over the last 14 days, day and night. Every ten-minute sample counts, and a sample where the server was not listed counts as zero, so one full evening does not make a big server. It is the figure every ranking on FiveSearch sorts by, and the one that decides whether a server page is in search: above 10.
Live players follow the master list (about every 45 seconds), averages refresh every 15 minutes, and resources come from crawls in the last 12 hours. How the data works
Quota and errors
Every answer carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Past the quota the API answers 429 with Retry-After until midnight UTC; those refused requests are not counted.
Errors are JSON with a stable error.code: missing_key, invalid_key, no_plan, quota_exceeded, bad_parameter, not_found, unavailable.