API Documentation
Access Apex Legends ban tracking data, player stats, and leaderboards via our REST API.
Base URL
https://apexbantracker.com/api/v1Quick Start
Get up and running in under a minute. Here's how to make your first API call:
1. Get your API key
Sign up and subscribe to a plan from the developer dashboard. You'll receive an API key starting with bp_.
2. Make a request
Pass your API key in the Authorization header:
curl -X GET "https://apexbantracker.com/api/v1/stats" \ -H "Authorization: Bearer bp_your_api_key_here"
3. Parse the JSON response
{
"totalTrackedPlayers": 15000,
"masterPlusPlayers": 5000,
"bannedPlayers": 1250,
"activePlayers": 13750
}Code Examples
Python
import requests
API_KEY = "bp_your_api_key_here"
BASE_URL = "https://apexbantracker.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}
# Get player by UID
response = requests.get(f"{BASE_URL}/player/1234567890", headers=headers)
player = response.json()
print(f"{player['username']} - Rank: {player['rankTier']} ({player['rankScore']} RP)")
# Search for players
response = requests.get(
f"{BASE_URL}/players/search",
params={"q": "ninja", "limit": 5},
headers=headers
)
for p in response.json():
print(f" {p['username']} ({p['platform']}) - {p['rankScore']} RP")JavaScript / Node.js
const API_KEY = "bp_your_api_key_here";
const BASE_URL = "https://apexbantracker.com/api/v1";
const headers = { Authorization: `Bearer ${API_KEY}` };
// Get player by UID
const playerRes = await fetch(
`${BASE_URL}/player/1234567890?platform=PC`, { headers }
);
const player = await playerRes.json();
console.log(`${player.username} - ${player.rankTier} (${player.rankScore} RP)`);
// Get recent bans
const bansRes = await fetch(`${BASE_URL}/bans/recent?limit=5`, { headers });
const bans = await bansRes.json();
bans.forEach(b => console.log(`${b.username} banned at ${b.bannedAt}`));C# / .NET
using var client = new HttpClient();
client.DefaultRequestHeaders.Add(
"Authorization", "Bearer bp_your_api_key_here"
);
var baseUrl = "https://apexbantracker.com/api/v1";
// Get player by UID
var playerJson = await client.GetStringAsync(
$"{baseUrl}/player/1234567890?platform=PC"
);
Console.WriteLine(playerJson);
// Get leaderboard
var leaderboardJson = await client.GetStringAsync(
$"{baseUrl}/leaderboard?platform=PC&pageSize=10"
);
Console.WriteLine(leaderboardJson);Authentication
All API requests require a valid API key. You can pass your key using any of these methods:
Authorization Header
RecommendedAuthorization: Bearer bp_your_api_key_here
X-Api-Key Header
X-Api-Key: bp_your_api_key_here
Query Parameter
GET /api/v1/stats?api_key=bp_your_api_key_here
Note: Query parameter auth is less secure as the key may appear in server logs. Use headers when possible.
Rate Limits
Rate limits are enforced per API key and vary by your subscription plan. When you exceed a limit, you'll receive a 429 response with a Retry-After header.
| Plan | Per Second | Per Day | Per Month |
|---|---|---|---|
| Basic | 2 req/s | 1,000 req/day | 30,000 req/month |
| Pro | 5 req/s | 10,000 req/day | 300,000 req/month |
| Enterprise | 15 req/s | 100,000 req/day | 3,000,000 req/month |
To view pricing and subscribe to a plan, visit the Developer Dashboard.
Response Headers
Every API response includes these headers so you can track your usage:
X-RateLimit-Plan: pro X-RateLimit-Limit-Day: 10000 X-RateLimit-Limit-Second: 5
Error Codes
All errors return a JSON object with error and code fields:
{
"error": "Daily request limit of 1000 exceeded",
"code": "DAILY_LIMIT"
}| HTTP Status | Code | Description |
|---|---|---|
| 401 | MISSING_API_KEY | No API key was provided in the request |
| 401 | INVALID_KEY | The API key does not exist or is malformed |
| 403 | KEY_SUSPENDED | API key is suspended due to a payment issue |
| 403 | KEY_EXPIRED | The subscription associated with this key has expired |
| 403 | KEY_REVOKED | This API key has been revoked by the owner |
| 429 | DAILY_LIMIT | You have exceeded your plan's daily request limit |
| 429 | MONTHLY_LIMIT | You have exceeded your plan's monthly request limit |
| 404 | - | The requested resource was not found |
| 500 | - | An unexpected server error occurred |
Endpoints
All endpoints return JSON. Timestamps are in UTC ISO 8601 format.
/api/v1/player/{uid}Get detailed player information by UID. Returns rank, ban status, online status, current legend, and more.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
uid | path | string | Yes | The player's unique identifier (numeric UID) |
platform | query | string | No | Platform filter: PC, PS4, X1, or Switch. Defaults to all platforms. |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/player/1234567890?platform=PC" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"uid": "1234567890",
"username": "ExamplePlayer",
"platform": "PC",
"rankScore": 18500,
"rankTier": "Master",
"rankLadderPosition": 342,
"isMasterOrAbove": true,
"isPredator": false,
"isBanned": false,
"bannedAt": null,
"unbannedAt": null,
"banCount": 0,
"currentLegend": "Wraith",
"accountLevel": 500,
"isOnline": true,
"isInMatch": false,
"lastUpdated": "2026-03-17T12:00:00Z"
}/api/v1/players/searchSearch for players by username. Returns a list of matching players sorted by rank score (highest first).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
q | query | string | Yes | Username to search for (case-insensitive, partial match) |
limit | query | integer | No | Maximum number of results to return. Range: 1-100, default: 25 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/players/search?q=ninja&limit=10" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"uid": "1234567890",
"username": "ExamplePlayer",
"platform": "PC",
"rankScore": 18500,
"ladderPosition": 342,
"isBanned": false,
"isOnline": true,
"currentLegend": "Wraith",
"accountLevel": 500
}
]/api/v1/player/{uid}/ban-historyGet the ban/unban event history for a specific player. Returns up to 50 events, newest first.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
uid | path | string | Yes | The player's unique identifier (numeric UID) |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/player/1234567890/ban-history" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"eventType": "BAN",
"eventDate": "2026-02-15T08:30:00Z",
"rankScoreAtBan": 22000,
"ladderPositionAtBan": 45,
"banSeconds": 0
},
{
"eventType": "UNBAN",
"eventDate": "2026-03-01T14:00:00Z",
"rankScoreAtBan": null,
"ladderPositionAtBan": null,
"banSeconds": 0
}
]/api/v1/bansGet all currently banned players with pagination. Returns players with negative ladder positions (banned by EAC).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | No | Page number, starting from 1. Default: 1 |
pageSize | query | integer | No | Number of results per page. Range: 1-100, default: 50 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/bans?page=1&pageSize=25" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"totalCount": 1250,
"page": 1,
"pageSize": 25,
"totalPages": 50,
"players": [
{
"uid": "9876543210",
"username": "BannedPlayer",
"platform": "PC",
"rankScore": 20000,
"rankTier": "Master",
"rankLadderPosition": -1,
"isBanned": true,
"bannedAt": "2026-03-10T14:00:00Z",
"banCount": 2,
"lastUpdated": "2026-03-17T08:00:00Z"
}
]
}/api/v1/bans/recentGet the most recently banned players. Useful for monitoring new bans as they happen.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | Maximum number of results. Range: 1-100, default: 10 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/bans/recent?limit=5" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"uid": "9876543210",
"username": "RecentlyBanned",
"platform": "PC",
"rankScore": 19000,
"rankTier": "Master",
"rankLadderPosition": -1,
"bannedAt": "2026-03-17T10:00:00Z",
"banCount": 1,
"lastUpdated": "2026-03-17T10:05:00Z"
}
]/api/v1/bans/recent-unbansGet players who were recently unbanned. Useful for tracking false-positive ban reversals.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | Maximum number of results. Range: 1-100, default: 10 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/bans/recent-unbans?limit=5" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"uid": "5555555555",
"username": "RecentlyUnbanned",
"platform": "PC",
"rankScore": 17000,
"rankTier": "Master",
"rankLadderPosition": 200,
"unbannedAt": "2026-03-16T20:00:00Z",
"banCount": 1,
"lastUpdated": "2026-03-16T20:05:00Z"
}
]/api/v1/leaderboardGet the ranked leaderboard for a specific platform. Returns top players sorted by ladder position.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
platform | query | string | No | Platform to query: PC, PS4, X1, or Switch. Default: PC |
page | query | integer | No | Page number, starting from 1. Default: 1 |
pageSize | query | integer | No | Results per page. Range: 1-100, default: 50 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/leaderboard?platform=PC&page=1&pageSize=10" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"platform": "PC",
"totalCount": 750,
"page": 1,
"pageSize": 10,
"predatorThresholdRp": 25000,
"predatorCount": 750,
"masterCount": 5000,
"players": [
{
"uid": "1111111111",
"username": "TopPredator",
"platform": "PC",
"rankScore": 35000,
"rankTier": "Apex Predator",
"rankLadderPosition": 1,
"currentLegend": "Bangalore",
"isOnline": false,
"isInMatch": false,
"accountLevel": 500,
"lastUpdated": "2026-03-17T11:30:00Z"
}
]
}/api/v1/statsGet overall platform statistics. Returns aggregate counts of tracked, banned, and active players.
Example Request
curl -X GET "https://apexbantracker.com/api/v1/stats" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"totalTrackedPlayers": 15000,
"masterPlusPlayers": 5000,
"bannedPlayers": 1250,
"activePlayers": 13750
}Try it out
See API requests in action. The terminal below shows live example calls.
Request & Response
Here's what a typical API call looks like — request on the left, response on the right.
curl -X GET "https://apexbantracker.com/api/v1/player/1234567890" \
-H "Authorization: Bearer bp_your_api_key_here" \
-H "Content-Type: application/json"{
"uid": "1234567890",
"username": "ExamplePlayer",
"platform": "PC",
"rankScore": 18500,
"rankTier": "Master",
"rankLadderPosition": 342,
"isBanned": false,
"banCount": 0,
"isOnline": true,
"currentLegend": "Wraith"
}