JSON API · v1
Arma Reforger data, as JSON
The same data behind every page of this site, with filters on the server side: you ask for what you need instead of downloading everything. Cursor pagination, ETags on single resources, and per-server history.
Servers
61,619
Mods
27,548
Scenarios
5,905
Rate limit
120/min
A key is required
There is no anonymous access. A free account gives you a key in two minutes, with 20,000 requests a month (2,000 a day, 120 a minute). Plenty for a Discord bot, a community dashboard or a stats page that stays fresh all day. Building something bigger? Open a ticket from your account and tell us what it is.
Getting started
Create an account
An email and a password. Nothing else is asked.
Generate a key
Account, then API keys. The key is shown once: store it, only its hash is kept here.
Send it on every request
Header X-Api-Key, or Authorization: Bearer. Both work.
Examples
European servers with at least 20 players, busiest first.
curl -H "X-Api-Key: $ARMADB_KEY" \
"https://armadb.info/api/v1/servers?region=EU&min_players=20&sort=players"
const r = await fetch(
'https://armadb.info/api/v1/servers?region=EU&min_players=20&sort=players',
{ headers: { 'X-Api-Key': process.env.ARMADB_KEY } },
);
const { data, meta } = await r.json();
$r = Http::withHeaders(['X-Api-Key' => env('ARMADB_KEY')])
->get('https://armadb.info/api/v1/servers', [
'region' => 'EU',
'min_players' => 20,
'sort' => 'players',
]);
Every server running a given mod:
GET /api/v1/servers?mod=629B2BA37EFFD577
Who added or dropped a mod this week:
GET /api/v1/mods/629B2BA37EFFD577/adoption?days=7
Endpoints
Servers
6 endpointsGet /api/v1/servers
Every server, filtered the way the browser filters them. Online by default: status=offline lists the ones the in-game browser does not show, both dropped from the listing (is_online=false) and still registered but hidden (visible=false, how a server looks right after it stops); status=all everything; sort=seen orders by last sighting.
status q region country ping_site version platform mod scenario min_players max_players min_queue has_password battl_eye official sort per_page
Get /api/v1/servers/{id|slug}
One server. Sends an ETag, so a poller mostly gets an empty 304.
Get /api/v1/servers/{id}/history
Player history for one server: hourly rollups, or every single sample with interval=minute (up to 7 days per call, any date).
days interval from to
Get /api/v1/servers/{id}/sessions
Uptime sessions: the stretch between two restarts, with average and peak.
limit
Get /api/v1/servers/{id}/mod-changes
Mods added, removed or updated on one server, grouped by poll.
limit
Get /api/v1/servers/{id}/mods
The full mod list of one server: installed version, Workshop version, size, author, total download.
Mods
6 endpointsGet /api/v1/mods
Workshop mods ranked by real usage, not by downloads.
q tag in_use sort
Get /api/v1/mods/{id}
One mod. The id is case-insensitive.
Get /api/v1/mods/{id}/usage
Daily usage history for one mod.
days
Get /api/v1/mods/{id}/adoption
Who added it and who dropped it recently: the direction, not just the total.
limit days
Get /api/v1/mods/{id}/servers
The servers running this mod, busiest first.
per_page
Get /api/v1/authors/{slug}
A Workshop author and every mod they published, with real usage. A page the Workshop itself does not have.
Scenarios
3 endpointsGet /api/v1/scenarios
Every scenario seen on a server: official and Workshop, with players and servers right now.
q official in_use sort per_page
Get /api/v1/scenarios/{slug}
One scenario, with players and servers per region.
Get /api/v1/scenarios/{slug}/usage
Daily players and servers for one scenario.
days
Network
6 endpointsGet /api/v1/communities
National communities: servers that say where they are from.
Get /api/v1/communities/{code}
One country: its totals and its servers, busiest first.
per_page
Get /api/v1/stats
Current totals across the whole network.
Get /api/v1/stats/history
Historical totals.
days interval
Get /api/v1/stats/breakdown
Online servers and players by region, ping site, host type, game version and player platform.
Get /api/v1/stats/uptime
Restarts in the last 24 hours, the servers up the longest, the ones that restart the most. Nobody else publishes this.
Tools
2 endpointsGet /api/v1/search
One query across servers, mods and scenarios: the top matches of each.
q limit
Get /api/v1/tools/compare
Two servers mod by mod, and how much you download to move from one to the other.
a b
What comes back
Always data, plus meta.next_cursor
on lists. Pass it back as ?cursor= for the next page.
{
"data": [
{
"id": "a1b2c3d4-0000-4000-8000-000000000000",
"name": "Example Community Server",
"url": "https://armadb.info/server/example-community-server-a1b2c3d4",
"players": { "current": 22, "limit": 128, "queue": 0 },
"scenario": { "name": "Conflict - Everon" },
"region": "EU",
"ping_site": "frankfurt",
"hosted_in": "IT",
"mods_count": 88,
"is_online": true
}
],
"meta": { "next_cursor": "eyJpZCI6..." }
}
Quota
Three ceilings. The minute is per key; the day and the month are per account, all your keys together, and reset at 00:00 UTC. Only requests we answered count: a 429 never costs you anything.
Over a ceiling you get 429 with Retry-After
and a body that says which quota ran out and when it resets. Cache what you fetch: every single
resource answers with an ETag, and a 304
still counts as a request, so ask only when you need to. Need more? Open a ticket from your account.
Terms of use
ArmaDB does not claim to own the underlying facts: what a server is called or how many people are on it is a fact, and anyone is free to measure it. What these terms cover is access to this service and to the ArmaDB dataset: the history, the derived data, and the work of collecting, verifying and keeping it. Using the API means accepting the following; anything not listed here needs a written agreement first.
- Personal and internal use. Build your own tool, dashboard, bot or site with it. Commercial use, meaning anything sold, monetised or bundled into a paid product, needs written permission first.
- Attribution is required. Wherever data from this API is displayed, credit ArmaDB with a visible link to armadb.info. That credit is for this dataset and the work behind it, not for the facts themselves.
- No redistribution of the dataset. Do not mirror, resell, republish or hand on bulk data, and do not extract or re-use a substantial part of it to build a competing database. Query what your application needs, when it needs it.
- One key, kept private. Keys are per person or organisation and must not be shared, published or committed to a repository. A leaked key gets revoked.
- Respect the limits. No working around the rate limit with extra accounts, rotating addresses or parallel keys. Cache what you already have.
- Player identities stay out. The API returns counts, never names. Do not try to re-identify, correlate or track individual players with this data.
- Nothing official about it. Do not present this data, or anything built on it, as coming from or endorsed by Bohemia Interactive.
- Access can end at any time. Keys can be suspended or revoked without notice if these terms are broken. Endpoints, fields and limits can change: there is no SLA and no warranty.
If you display the hosting country of a server, that field comes from DB-IP under CC BY 4.0, and that attribution follows the data wherever it goes. Arma Reforger and Bohemia Interactive are trademarks of their respective owners; ArmaDB is an independent project, not affiliated with or endorsed by Bohemia Interactive.