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.
Plans & Pricing
Simple monthly plans, cancel anytime. Every plan includes the full endpoint set — ban data, player profiles, leaderboards, map rotation, and server status — the tiers differ only in rate limits.
Basic
$5/month
For hobbyist developers and small projects
- 2 requests/second
- 1,000 requests/day
- 30,000 requests/month
- All endpoints included
Pro
Popular$10/month
For professional developers and growing applications
- 5 requests/second
- 10,000 requests/day
- 300,000 requests/month
- All endpoints included
Enterprise
$15/month
For large-scale applications and commercial use
- 15 requests/second
- 100,000 requests/day
- 3,000,000 requests/month
- All endpoints included
Ban, unban, EAC-update, and ban-wave Discord webhook alerts are free with any account — no API plan required. Need higher limits or a custom agreement? Get in touch.
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 | Price | Per Second | Per Day | Per Month |
|---|---|---|---|---|
| Basic | $5/mo | 2 req/s | 1,000 req/day | 30,000 req/month |
| Pro | $10/mo | 5 req/s | 10,000 req/day | 300,000 req/month |
| Enterprise | $15/mo | 15 req/s | 100,000 req/day | 3,000,000 req/month |
To subscribe, create a key from the Developer Dashboard — see Plans & Pricing above.
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,
"minPlacement": 2,
"maxPlacement": 3,
"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": [
"World's Edge",
"E-District",
"Storm Point"
],
"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": 700,
"otherBans": 150,
"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,
"notSeenThisSplit": 3200,
"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"
}