API Documentation
Access Apex Legends ban tracking data, player stats, match history, leaderboards, map rotation, and server status 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/players/trendingGet the most-looked-up players over a rolling window, ranked by lookup count.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | Maximum number of results. Range: 1-25, default: 8 |
windowHours | query | integer | No | Rolling window in hours. Range: 1-168, default: 24 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/players/trending?limit=5&windowHours=24" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"uid": "1234567890",
"platform": "PC",
"username": "ExamplePlayer",
"rankScore": 18500,
"rankLadderPosition": 342,
"rankTier": "Master",
"isPredator": false,
"isBanned": false,
"lookupCount": 57
}
]/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/player/{uid}/matchesGet a player's ranked match history with RP changes, legends used, and kill estimates. Newest first.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
uid | path | string | Yes | The player's unique identifier (numeric UID) |
limit | query | integer | No | Maximum number of results. Range: 1-100, default: 50 |
offset | query | integer | No | Number of results to skip for pagination. Default: 0 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/player/1234567890/matches?limit=25" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"rpChange": 120,
"finalRp": 18620,
"finalLadderPosition": 339,
"legend": "Wraith",
"matchTime": "2026-03-17T11:20:00Z",
"estimatedKills": {
"minKills": 3,
"maxKills": 6,
"mostLikelyKills": 4,
"mostLikelyPlacement": 2,
"confidence": "medium"
}
}
]/api/v1/player/{uid}/rp-historyGet a player's all-time RP curve, downsampled to one point per UTC day (the day's final match).
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/rp-history" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"date": "2026-03-16T00:00:00Z",
"rp": 18500,
"ladderPosition": 342
},
{
"date": "2026-03-17T00:00:00Z",
"rp": 18620,
"ladderPosition": 339
}
]/api/v1/player/{uid}/aliasesGet the full username (alias) history recorded for a player, newest first.
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/aliases" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"username": "CurrentName",
"firstSeenAt": "2026-02-01T10:00:00Z",
"lastSeenAt": "2026-03-17T12:00:00Z"
},
{
"username": "OldName",
"firstSeenAt": "2025-11-12T08:00:00Z",
"lastSeenAt": "2026-01-31T22:00:00Z"
}
]/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/bans/searchSearch within banned players by username or UID.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
q | query | string | Yes | Username or UID to search for (case-insensitive, partial match) |
limit | query | integer | No | Maximum number of results. Range: 1-100, default: 50 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/bans/search?q=cheater&limit=10" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"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/most-bannedGet the players with the highest all-time ban counts (repeat offenders with 2+ bans), sorted by ban count.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | Maximum number of results. Range: 1-50, default: 10 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/bans/most-banned?limit=10" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
[
{
"uid": "9876543210",
"username": "RepeatOffender",
"tag": null,
"platform": "PC",
"rankTier": "ApexPredator",
"rankScore": 22000,
"isPredator": true,
"isBanned": true,
"banCount": 5,
"lastBannedAt": "2026-03-15T09:00: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/leaderboard/moversGet the biggest RP gainers and losers over a rolling window, aggregated from recent matches.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
platform | query | string | No | Platform to query: PC, PS4, X1, or Switch. Default: PC |
windowHours | query | integer | No | Rolling window in hours. Range: 1-24, default: 1 |
limit | query | integer | No | Maximum gainers/losers each. Range: 1-50, default: 5 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/leaderboard/movers?platform=PC&windowHours=1&limit=5" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"gainers": [
{
"uid": "1111111111",
"username": "OnAHeater",
"platform": "PC",
"rankScore": 26000,
"rankLadderPosition": 120,
"rankTier": "Apex Predator",
"isPredator": true,
"rpDelta": 480,
"matchCount": 6,
"rpHistory": [
80,
95,
60,
120,
75,
50
],
"isInMatch": true
}
],
"losers": [
{
"uid": "2222222222",
"username": "RoughNight",
"platform": "PC",
"rankScore": 24500,
"rankLadderPosition": 300,
"rankTier": "Apex Predator",
"isPredator": true,
"rpDelta": -260,
"matchCount": 5,
"rpHistory": [
-60,
-40,
-80,
-30,
-50
],
"isInMatch": false
}
],
"windowHours": 1
}/api/v1/predator-cutoffGet the current Apex Predator RP cutoff for a platform, plus Predator and Master player counts. Lightweight alternative to pulling a full leaderboard page.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
platform | query | string | No | Platform to query: PC, PS4, X1, or Switch. Default: PC |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/predator-cutoff?platform=PC" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"platform": "PC",
"predatorThresholdRp": 25000,
"predatorCount": 750,
"masterCount": 5000,
"generatedAt": "2026-03-17T12:00:00Z"
}/api/v1/map-rotationGet the current and upcoming ranked map rotation. Maps cycle in a fixed order on 4.5 hour slots.
Example Request
curl -X GET "https://apexbantracker.com/api/v1/map-rotation" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"current": {
"map": "E-District",
"startedAt": "2026-03-17T09:30:00Z",
"endsAt": "2026-03-17T14:00:00Z",
"remainingSeconds": 7200
},
"upcoming": [
{
"map": "Storm Point",
"startsAt": "2026-03-17T14:00:00Z",
"endsAt": "2026-03-17T18:30:00Z"
},
{
"map": "World's Edge",
"startsAt": "2026-03-17T18:30:00Z",
"endsAt": "2026-03-17T23:00:00Z"
}
],
"rotation": [
"E-District",
"Storm Point",
"World's Edge"
],
"slotDurationHours": 4.5
}/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
}/api/v1/stats/ban-statsGet detailed aggregated ban statistics: current vs all-time bans, Predator vs Master splits, temp bans, repeat offenders, and last-24h activity.
Example Request
curl -X GET "https://apexbantracker.com/api/v1/stats/ban-stats" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"totalBans": 1250,
"allTimeBans": 3400,
"predatorBans": 400,
"masterBans": 850,
"tempBans": 120,
"repeatOffenders": 90,
"last24Hours": 35
}/api/v1/stats/rank-distributionGet the rank tier distribution for a platform, from Apex Predator down to Rookie IV. Note: this covers the tracked population, which skews heavily toward Predator/Master.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
platform | query | string | No | Platform to query: PC, PS4, X1, or Switch. Default: PC |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/stats/rank-distribution?platform=PC" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"platform": "PC",
"population": 14000,
"predatorCount": 750,
"masterCount": 5000,
"predatorThresholdRp": 25000,
"medianRp": 17200,
"p90Rp": 24000,
"maxRp": 35000,
"buckets": [
{
"label": "Apex Predator",
"tier": "Predator",
"minRp": 25000,
"count": 750,
"percent": 5.4
},
{
"label": "Master",
"tier": "Master",
"minRp": 16000,
"count": 5000,
"percent": 35.7
}
],
"generatedAt": "2026-03-17T12:00:00Z"
}/api/v1/lobbies/recentGet recently-finished Predator lobbies — which tracked Predators were in the same match, with confirmed squads.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | Maximum number of lobbies. Range: 1-50, default: 12 |
Example Request
curl -X GET "https://apexbantracker.com/api/v1/lobbies/recent?limit=5" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"lobbies": [
{
"lobbyId": "PC:1774000000",
"platform": "PC",
"startedAt": "2026-03-17T11:00:00Z",
"endedAt": "2026-03-17T11:22:00Z",
"trackedPredatorCount": 6,
"confirmedSquadCount": 2,
"members": [
{
"uid": "1111111111",
"username": "TopPredator",
"platform": "PC",
"ladderPosition": 1,
"rankScore": 35000,
"rankTier": "Apex Predator",
"currentLegend": "Bangalore",
"isPartyFull": true,
"isJoinable": false,
"squadId": "S1",
"anchorApproximate": false
}
]
}
]
}/api/v1/status/serversGet live Apex game server status from the most recent probe cycle, grouped by category.
Example Request
curl -X GET "https://apexbantracker.com/api/v1/status/servers" \ -H "Authorization: Bearer bp_your_api_key_here"
Example Response
{
"checkedAt": "2026-03-17T12:00:00Z",
"categories": [
{
"category": "EA Login",
"endpoints": [
{
"category": "EA Login",
"name": "US East",
"host": "example.ea.com",
"port": 443,
"status": "up",
"latencyMs": 23
}
]
}
]
}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"
}