Player Search API
A read-only API for looking up the FIFA Ultimate Team player data held by The Coin Printer. It exposes player search only — no accounts, no trading tools.
Overview
The public API lets approved partners search our player database by name and read the metadata, prices, nationality, positions, and main play stats we track for the current FIFA year. All requests are made over HTTPS and return JSON.
Base URL: https://api.thecoinprinter.com
Authentication
Every request must include your API key as a bearer token in the Authorization header:
Authorization: Bearer tcp_your_api_keyAPI 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
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| q | string | No | Player name search term (min 2 characters, case-insensitive). When omitted, the most recently updated players are returned. |
| page | integer | No | Page number, 1-indexed. Default 1. |
| take | integer | No | Results per page. Default 20, maximum 50. |
Example request
curl "https://api.thecoinprinter.com/api/v1/public/players/search?q=mbappe&page=1&take=20" \
-H "Authorization: Bearer tcp_your_api_key"Response fields
| Field | Type | Description |
|---|---|---|
| nationality | string | null | Player nation (e.g. France). |
| team | string | null | Player team (e.g. Real Madrid). |
| position | string | null | Primary position (e.g. ST, CM, GK). |
| alt_positions | string[] | Secondary positions. |
| pace | number | null | Main pace attribute (0–99). |
| shooting | number | null | Main shooting attribute (0–99). |
| passing | number | null | Main passing attribute (0–99). |
| dribbling | number | null | Main dribbling attribute (0–99). |
| defending | number | null | Main defending attribute (0–99). |
| physical | number | null | Main physical attribute (0–99). |
Attribute fields may be null until a player has been scraped after this data was added. Existing fields (id, name, rating, prices, league, etc.) are unchanged.
Example response
{
"data": [
{
"id": "8f3c1e2a-...",
"name": "Kylian Mbappé",
"rating": 91,
"image": "https://.../player.png",
"group_type": "REGULAR",
"console_price": 1250000,
"pc_price": 1180000,
"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": 26,
"popularity": 984,
"updated_at": "2026-08-01T12:00:00.000Z"
}
],
"pagination": { "page": 1, "take": 20, "total": 3 }
}Errors
Errors are returned as JSON with an HTTP status code and a human-readable message.
| Status | Meaning |
|---|---|
| 400 | Bad request — a parameter is invalid (e.g. q provided but shorter than 2 characters). |
| 401 | Unauthorized — missing, invalid, or revoked API key. |
| 429 | Too many requests — you have exceeded the rate limit. |