ArmaDB

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

1

Create an account

An email and a password. Nothing else is asked.

2

Generate a key

Account, then API keys. The key is shown once: store it, only its hash is kept here.

3

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 endpoints

Get /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 endpoints

Get /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 endpoints

Get /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 endpoints

Get /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 endpoints

Get /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.

Per minute 120 per key · header X-RateLimit-Remaining
Per day 2,000 per account · header X-Quota-Remaining-Day
Per month 20,000 per account · header X-Quota-Remaining-Month, reset in X-Quota-Reset-Month

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.