Cito CS2 API · Schema

PlayerProfile

Comprehensive player profile and biographical record.

CompanyAPIEsportsGamingData

Properties

Name Type Description
id string Unique player identifier
tour string Tour federation: ATP or WTA
first_name string Given name
last_name string Surname
full_name string Canonical display name
ioc object 3-letter country code
country_code object Same 3-letter code as ioc, under the key most client integrations read
portrait_url object Player portrait image URL, hosted by Cito; null when we hold no photo
portrait_attribution object Who to credit for the portrait; display it with the image
portrait_license object Licence the portrait is published under, as stated by its source
portrait_source_url object Page the portrait came from, for attribution and licence checks
country_name object Country name derived from the IOC/ISO code; null when the code is unmapped
nationality object Same value as country_name, under the key most client integrations read
hand object Playing hand
backhand object Backhand style (1H/2H) where known; not held for most players
dob object Date of birth
age object Current age in years
height_cm object Height in cm
weight_kg object Weight in kg
turned_pro object Year turned pro
career_high_rank object Career peak ranking
career_high_date object Date peak ranking was attained
weeks_at_no_1 object Total weeks ranked at world No. 1
current_rank object Current ranking
current_rank_points object Current ranking points
career_summary object Overall career summary record
surface_breakdown object Surface win-loss splits
is_active boolean Active status
View JSON Schema on GitHub

JSON Schema

citoapi-tennis-player-profile-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/citoapi/main/json-schema/citoapi-tennis-player-profile-schema.json",
  "title": "PlayerProfile",
  "description": "Comprehensive player profile and biographical record.",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/citoapi-v1-openapi.json#/components/schemas/TennisPlayerProfile",
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "description": "Unique player identifier"
    },
    "tour": {
      "type": "string",
      "title": "Tour",
      "description": "Tour federation: ATP or WTA"
    },
    "first_name": {
      "type": "string",
      "title": "First Name",
      "description": "Given name"
    },
    "last_name": {
      "type": "string",
      "title": "Last Name",
      "description": "Surname"
    },
    "full_name": {
      "type": "string",
      "title": "Full Name",
      "description": "Canonical display name"
    },
    "ioc": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ioc",
      "description": "3-letter country code"
    },
    "country_code": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Country Code",
      "description": "Same 3-letter code as ioc, under the key most client integrations read"
    },
    "portrait_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Portrait Url",
      "description": "Player portrait image URL, hosted by Cito; null when we hold no photo"
    },
    "portrait_attribution": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Portrait Attribution",
      "description": "Who to credit for the portrait; display it with the image"
    },
    "portrait_license": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Portrait License",
      "description": "Licence the portrait is published under, as stated by its source"
    },
    "portrait_source_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Portrait Source Url",
      "description": "Page the portrait came from, for attribution and licence checks"
    },
    "country_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Country Name",
      "description": "Country name derived from the IOC/ISO code; null when the code is unmapped"
    },
    "nationality": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Nationality",
      "description": "Same value as country_name, under the key most client integrations read"
    },
    "hand": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hand",
      "description": "Playing hand",
      "default": "U"
    },
    "backhand": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Backhand",
      "description": "Backhand style (1H/2H) where known; not held for most players"
    },
    "dob": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Dob",
      "description": "Date of birth"
    },
    "age": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Age",
      "description": "Current age in years"
    },
    "height_cm": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Height Cm",
      "description": "Height in cm"
    },
    "weight_kg": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Weight Kg",
      "description": "Weight in kg"
    },
    "turned_pro": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Turned Pro",
      "description": "Year turned pro"
    },
    "career_high_rank": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Career High Rank",
      "description": "Career peak ranking"
    },
    "career_high_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Career High Date",
      "description": "Date peak ranking was attained"
    },
    "weeks_at_no_1": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Weeks At No 1",
      "description": "Total weeks ranked at world No. 1",
      "default": 0
    },
    "current_rank": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Current Rank",
      "description": "Current ranking"
    },
    "current_rank_points": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Current Rank Points",
      "description": "Current ranking points"
    },
    "career_summary": {
      "$ref": "#/$defs/TennisCareerSummary",
      "description": "Overall career summary record"
    },
    "surface_breakdown": {
      "anyOf": [
        {
          "$ref": "#/$defs/TennisSurfaceBreakdown"
        },
        {
          "type": "null"
        }
      ],
      "description": "Surface win-loss splits"
    },
    "is_active": {
      "type": "boolean",
      "title": "Is Active",
      "description": "Active status",
      "default": true
    }
  },
  "type": "object",
  "required": [
    "id",
    "tour",
    "first_name",
    "last_name",
    "full_name",
    "career_summary"
  ],
  "$defs": {
    "TennisCareerSummary": {
      "properties": {
        "matches_played": {
          "type": "integer",
          "title": "Matches Played",
          "description": "Total official matches played"
        },
        "matches_won": {
          "type": "integer",
          "title": "Matches Won",
          "description": "Total matches won"
        },
        "matches_lost": {
          "type": "integer",
          "title": "Matches Lost",
          "description": "Total matches lost"
        },
        "win_percentage": {
          "type": "number",
          "title": "Win Percentage",
          "description": "Career win percentage (0.0 to 100.0)"
        },
        "titles_count": {
          "type": "integer",
          "title": "Titles Count",
          "description": "Singles titles won"
        },
        "grand_slam_titles": {
          "type": "integer",
          "title": "Grand Slam Titles",
          "description": "Grand Slam singles titles won",
          "default": 0
        },
        "masters_titles": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Masters Titles",
          "description": "Masters 1000 singles titles where computed; null when not"
        },
        "finals_reached": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Finals Reached",
          "description": "Singles finals reached where computed; null when not"
        },
        "prize_money_usd": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prize Money Usd",
          "description": "Not held by this dataset; always null"
        }
      },
      "type": "object",
      "required": [
        "matches_played",
        "matches_won",
        "matches_lost",
        "win_percentage",
        "titles_count"
      ],
      "title": "CareerSummary",
      "description": "Aggregated career singles win-loss and title statistics."
    },
    "TennisSurfaceBreakdown": {
      "properties": {
        "hard": {
          "$ref": "#/$defs/TennisSurfaceStatItem"
        },
        "clay": {
          "$ref": "#/$defs/TennisSurfaceStatItem"
        },
        "grass": {
          "$ref": "#/$defs/TennisSurfaceStatItem"
        },
        "carpet": {
          "$ref": "#/$defs/TennisSurfaceStatItem"
        }
      },
      "type": "object",
      "required": [
        "hard",
        "clay",
        "grass",
        "carpet"
      ],
      "title": "SurfaceBreakdown",
      "description": "Breakdown of matches and records across surface types."
    },
    "TennisSurfaceStatItem": {
      "properties": {
        "matches": {
          "type": "integer",
          "title": "Matches",
          "description": "Matches played on this surface"
        },
        "won": {
          "type": "integer",
          "title": "Won",
          "description": "Matches won on this surface"
        },
        "lost": {
          "type": "integer",
          "title": "Lost",
          "description": "Matches lost on this surface"
        },
        "win_pct": {
          "type": "number",
          "title": "Win Pct",
          "description": "Win percentage on this surface"
        },
        "titles": {
          "type": "integer",
          "title": "Titles",
          "description": "Titles won on this surface",
          "default": 0
        }
      },
      "type": "object",
      "required": [
        "matches",
        "won",
        "lost",
        "win_pct"
      ],
      "title": "SurfaceStatItem",
      "description": "Statistics for a specific court surface."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/citoapi-tennis-player-profile"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.