Login
Server
Name
Password

Forgot your password?

Public exports API

Every night, Fourmizzz publishes two JSON files for each server: the list of players and the list of alliances. They only contain data that is already public in the game (rankings, alliance page, visible diplomacy) and are intended for players and community tools: maps, progress tracking, alliance tools.

The API is read-only, free and requires no authentication.

The complete contract in OpenAPI 3 format, which can be imported into Swagger Editor, Postman or a client generator, is available here: api-exports.en.openapi.yaml.

API address

The API is served on the address of the server whose data you want:

Server Base address
English server http://s1.antzzz.org
French S1 http://s1.fourmizzz.fr
French S2 http://s2.fourmizzz.fr
French S3 http://s3.fourmizzz.fr
French S4 http://s4.fourmizzz.fr
French S5 https://s5.fourmizzz.fr
French test server https://test.fourmizzz.fr

Use the protocol shown: the English server and French S1 to S4 are only served over HTTP, not HTTPS.

Each server has its own exports. The home domain (www.antzzz.org, www.fourmizzz.fr) and any host that is not an open server answer 404.

Routes

Request Response
GET /api/exports/ List of available versions, per export type
GET /api/exports/players/ Latest version of the players file
GET /api/exports/players/?version=YYYYMMDDHHmm Players file of this version
GET /api/exports/alliances/ Latest version of the alliances file
GET /api/exports/alliances/?version=YYYYMMDDHHmm Alliances file of this version

The trailing / is part of the address: without it, the server first answers a 301 redirection to the address with a slash. Better write it directly and save a round trip.

Versions and history

A version is the UTC date and time of the export job run, formatted YYYYMMDDHHmm (year, month, day, hour, minutes), for example 202609292200.

List of versions

GET /api/exports/ returns, for each export type, the available versions from newest to oldest:

{
  "players": ["202609292200", "202609282200"],
  "alliances": ["202609292200", "202609282200"]
}

Both types are generated by the same job run and should therefore have the same versions. They are listed separately because a run can fail on a single type. The arrays are empty ([]) if no export exists yet.

version parameter

The date, hour and minutes must exist: 202602300000 (February 30), 202609292400 or 202609292260 answer 400, as does a different format (2026-09-29, 2026092922) or an array (version[]=…).

Response headers

Status codes

Errors are always a JSON object {"error": "<message>"}, never an HTML page. The message is in French and is never translated: a tool should rely on the HTTP status code, not on the text.

Code Case
200 File or list of versions
301 Address without a trailing /: redirection to the address with a slash
400 Malformed version parameter or impossible date/time
404 No export for this version (or no export of this type with latest); host that is not an open server
502 Exports storage unreachable (server-side incident, already reported to the team)
503 Exports not configured on this hosting

Players file

An array of objects, one per player, sorted by id:

[
  {
    "id": 123,
    "pseudo": "Fourmi",
    "alliance": "TAG",
    "masterPlayerId": 456,
    "x": 10,
    "y": -4,
    "field": 98765,
    "grade": "Chef",
    "buildingScore": 1500,
    "technologyScore": 700,
    "trophyScore": 1234,
    "onHoliday": false,
    "isBanned": false
  }
]
Field Type Meaning
id integer Player identifier. Unique within the server only: two servers each have their own player 123
pseudo string Nickname displayed in the game
alliance string or null Alliance tag, null if the player has none
masterPlayerId integer or null id of the player who colonizes this player, null if not colonized
x, y integers Coordinates on the map
field integer Hunting field (cm²)
grade string or null Name of the player's rank in their alliance, null without an alliance or without a rank
buildingScore integer Anthill score (buildings)
technologyScore integer Technology score
trophyScore integer Trophy score (Elo ranking), 0 if the player is not ranked
onHoliday boolean Holiday mode active at export time
isBanned boolean Player banned at export time

Alliances file

An array of objects, one per alliance, sorted by tag:

[
  {
    "tag": "TAG",
    "name": "Les Fourmis",
    "playersCount": 12,
    "totalField": 5000000,
    "totalBuildingScore": 300,
    "totalTechnologyScore": 200,
    "totalTrophyScore": 9000,
    "diplomacy": {
      "pacts": [{ "tag": "AMI", "name": "Pacte de non-agression", "description": "…" }],
      "wars": ["ENN"]
    }
  }
]
Field Type Meaning
tag string Alliance tag
name string Alliance name
playersCount integer Number of members
totalField integer Combined hunting field of the members
totalBuildingScore integer Combined anthill score
totalTechnologyScore integer Combined technology score
totalTrophyScore integer Sum (not the average) of the members' trophy scores, 0 if the alliance is not ranked
diplomacy.pacts array Ongoing pacts (see below). A pact appears in both alliances involved. Order: the one each alliance set for its pacts, as on its page
diplomacy.wars array of tags Alliances this alliance declared war on (direction shown on its public page); vanished alliances are left out. Alphabetical order, case-insensitive

Each pact is an object:

Field Type Meaning
tag string Partner alliance tag
name string Name of the pact (not the partner alliance's name)
description string Pact description

Data not exported

No private data is exported: no email, no IP address, no resources, no army, no last login date, no alliance description or rules.

Examples

List the versions of the English server, headers included:

curl -i http://s1.antzzz.org/api/exports/

Download the alliances file of a specific version:

curl -o alliances.json "http://s1.antzzz.org/api/exports/alliances/?version=202609292200"

Load the latest version of the players in Python, standard library only:

import json
import urllib.request

with urllib.request.urlopen("http://s1.antzzz.org/api/exports/players/") as response:
    players = json.load(response)

without_alliance = [p["pseudo"] for p in players if p["alliance"] is None]
print(len(players), "players, including", len(without_alliance), "without an alliance")

Good practices