Public Player API

A read-only API for looking up the FIFA Ultimate Team player data held by The Coin Printer. Search with filters, fetch a player by id, and read BIN history — no accounts, no trading tools.

Overview

The public API lets approved partners search our player database by name and filters (version, rating, position, league, team, nationality), load a single player, and retrieve BIN history for console or PC. Responses include metadata, current prices, previous BIN, and momentum for both platforms. All requests are made over HTTPS and return JSON. Results are scoped to the current FIFA year.

Base URL: https://api.thecoinprinter.com

Endpoints:

  • GET /api/v1/public/players/search — search or list recently updated players (Gold versions by default; filter by rating, position, league, team, nationality)
  • GET /api/v1/public/players/:id — player detail
  • GET /api/v1/public/players/:id/previous-values — BIN history for a platform

Authentication

Every request must include your API key as a bearer token in the Authorization header:

Authorization: Bearer tcp_your_api_key

API keys are issued by The Coin Printer — there is no self-serve signup. To request access, contact us at contact@thecoinprinter.com. We'll email you a secure payment link for your plan; your key is generated and emailed automatically once payment is complete. Treat your key like a password; requests with a missing, invalid, or revoked key return 401 Unauthorized.

Rate limits

Each API key is limited to 60 requests per minute. Exceeding the limit returns 429 Too Many Requests with a message indicating when you can retry.

Search players

GET /api/v1/public/players/search

Case-insensitive name search with optional attribute filters. With q, results are ordered by popularity then rating. Without q, the most recently updated players are returned. By default only Gold card versions are included (REGULAR, GOLD, NORMAL); pass version=all to include specials and other types.

Query parameters

ParameterTypeRequiredDescription
qstringNoPlayer name search term (min 2 characters, case-insensitive). When omitted, the most recently updated players are returned.
versionstringNoCard version / type filter. Default "gold" (REGULAR, GOLD, NORMAL). Use "all" for every type, or a concrete group_type (e.g. ICON, HERO, TOTW) for an exact case-insensitive match.
min_ratingintegerNoInclusive minimum overall rating (1–99). Must not be greater than max_rating.
max_ratingintegerNoInclusive maximum overall rating (1–99). Must not be less than min_rating.
positionstringNoPrimary or alternate position (case-insensitive), e.g. ST, CM, CB, GK.
leaguestringNoLeague name (case-insensitive exact match).
teamstringNoClub / team name (case-insensitive exact match).
nationalitystringNoNation name (case-insensitive exact match).
pageintegerNoPage number, 1-indexed. Default 1.
takeintegerNoResults per page. Default 20, maximum 50.

Example request

curl "https://api.thecoinprinter.com/api/v1/public/players/search?q=mbappe&min_rating=85&max_rating=92&position=ST&page=1&take=20" \
  -H "Authorization: Bearer tcp_your_api_key"

Example response

{
  "data": [
    {
      "id": "8f3c1e2a-...",
      "name": "Kylian Mbappé",
      "rating": 91,
      "image": "https://.../player.png",
      "group_type": "REGULAR",
      "console_price": 1250000,
      "pc_price": 1180000,
      "console_previous_price": 1190000,
      "pc_previous_price": 1140000,
      "console_momentum_pct": 5.0,
      "pc_momentum_pct": 3.5,
      "league": "LaLiga EA Sports",
      "team": "Real Madrid",
      "nationality": "France",
      "position": "ST",
      "alt_positions": ["LW", "CF"],
      "pace": 97,
      "shooting": 90,
      "passing": 82,
      "dribbling": 92,
      "defending": 38,
      "physical": 78,
      "year": 27,
      "popularity": 984,
      "updated_at": "2026-08-01T12:00:00.000Z"
    }
  ],
  "pagination": { "page": 1, "take": 20, "total": 3 }
}

Get player

GET /api/v1/public/players/:id

Returns the same player object as a search hit: metadata, current console/PC BIN, previous BIN, and momentum for both platforms. Unknown ids return 404.

Path parameters

ParameterTypeRequiredDescription
idstringYesPlayer UUID.

Example request

curl "https://api.thecoinprinter.com/api/v1/public/players/8f3c1e2a-0000-0000-0000-000000000000" \
  -H "Authorization: Bearer tcp_your_api_key"

Example response

{
  "id": "8f3c1e2a-...",
  "name": "Kylian Mbappé",
  "rating": 91,
  "image": "https://.../player.png",
  "group_type": "REGULAR",
  "console_price": 1250000,
  "pc_price": 1180000,
  "console_previous_price": 1190000,
  "pc_previous_price": 1140000,
  "console_momentum_pct": 5.0,
  "pc_momentum_pct": 3.5,
  "league": "LaLiga EA Sports",
  "team": "Real Madrid",
  "nationality": "France",
  "position": "ST",
  "alt_positions": ["LW", "CF"],
  "pace": 97,
  "shooting": 90,
  "passing": 82,
  "dribbling": 92,
  "defending": 38,
  "physical": 78,
  "year": 27,
  "popularity": 984,
  "updated_at": "2026-08-01T12:00:00.000Z"
}

BIN history

GET /api/v1/public/players/:id/previous-values

Append-only lowest-BIN snapshots for one platform, newest first. Each item is { value, createdAt } where value is the BIN and createdAt is when it was captured.

Path parameters

ParameterTypeRequiredDescription
idstringYesPlayer UUID.

Query parameters

ParameterTypeRequiredDescription
platformstringYesCONSOLE or PC.
limitintegerNoMax snapshots to return. Default 500, maximum 2000.
fromstringNoInclusive lower bound on capture time (ISO 8601 date-time).
tostringNoInclusive upper bound on capture time (ISO 8601 date-time).

Example request

curl "https://api.thecoinprinter.com/api/v1/public/players/8f3c1e2a-0000-0000-0000-000000000000/previous-values?platform=CONSOLE&limit=500" \
  -H "Authorization: Bearer tcp_your_api_key"

Example response

{
  "previous_values": [
    { "value": 1250000, "createdAt": "2026-08-28T12:00:00.000Z" },
    { "value": 1190000, "createdAt": "2026-08-27T12:00:00.000Z" }
  ]
}

Player object

Search items and the get-player response share this shape. Attribute fields may be null until a player has been scraped after that data was added. Previous BIN and momentum are null when there is not enough history.

FieldTypeDescription
idstringPlayer UUID.
namestringDisplay name.
ratingnumberOverall rating.
imagestring | nullPlayer card image URL.
group_typestringCard version / type (e.g. REGULAR, GOLD, NORMAL, ICON). Filterable via the version query param on search.
console_pricenumber | nullCurrent console lowest BIN.
pc_pricenumber | nullCurrent PC lowest BIN.
console_previous_pricenumber | nullPrevious console BIN from history (used for momentum). Null when there is no prior snapshot.
pc_previous_pricenumber | nullPrevious PC BIN from history. Null when there is no prior snapshot.
console_momentum_pctnumber | nullPercent change from console previous BIN to current console price, 1 decimal place. Null when it cannot be computed or the change is not plausible.
pc_momentum_pctnumber | nullPercent change from PC previous BIN to current PC price, 1 decimal place. Null when it cannot be computed or the change is not plausible.
leaguestring | nullLeague name.
teamstring | nullClub name.
nationalitystring | nullPlayer nation (e.g. France).
positionstring | nullPrimary position (e.g. ST, CM, GK).
alt_positionsstring[]Secondary positions.
pacenumber | nullMain pace attribute (0–99).
shootingnumber | nullMain shooting attribute (0–99).
passingnumber | nullMain passing attribute (0–99).
dribblingnumber | nullMain dribbling attribute (0–99).
defendingnumber | nullMain defending attribute (0–99).
physicalnumber | nullMain physical attribute (0–99).
yearnumber | nullFIFA year (e.g. 27).
popularitynumber | nullInternal popularity score. Search results are ranked by this.
updated_atstringISO 8601 timestamp of last player record update.

Errors

Errors are returned as JSON with an HTTP status code and a human-readable message.

StatusMeaning
400Bad request — a parameter is invalid (e.g. q shorter than 2 characters, min_rating greater than max_rating, or platform missing / not CONSOLE or PC).
401Unauthorized — missing, invalid, or revoked API key.
404Player not found — the id on GET /api/v1/public/players/:id does not exist.
429Too many requests — you have exceeded the rate limit.
API Documentation | The Coin Printer