---
title: "Player matches"
method: POST
path: "/v1/get_player_matches"
tags: ["Stats + aggregation"]
---

# Player matches

`POST /v1/get_player_matches`

## Request

- Base URL: `https://mcp.acesapi.com`
- URL: `https://mcp.acesapi.com/v1/get_player_matches`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Use for a player's matches, newest first: tournament, surface, round, opponent, result, score by set and the player's rating before and after. Filter by season, surface, opponent_id, tournament_id or draw. Tour: atp (default) or wta; on the shared endpoint pass league: "wta" for the WTA. Costs 5 credits.

## Request body

- object
  - `player_id` string, required: Player id from search_players.
  - `season` union: Year.
    - string
    - number
  - `surface` 'hard' | 'clay' | 'grass' | 'carpet'
  - `opponent_id` string: Only matches against this player.
  - `tournament_id` string: Only this tournament edition, e.g. "188-2025".
  - `draw` 'main' | 'qualifying'
  - `limit` integer: Max matches (default 50).
  - `offset` integer
  - `league` 'tennis' | 'wta': League. Defaults to tennis. One of: tennis, wta.

## Response `200`

The result, wrapped in data.

- object
  - `data` object, required
    - `tour` string, required
    - `player_id` string, required
    - `name` string, required
    - `matches` object[], required
    - `count` number, required
    - `next_offset` number, nullable

## Other responses

- `400`: Invalid arguments.
- `401`: Missing or invalid API key.
- `402`: Not enough credits.
- `429`: Rate limited.

---

[API](https://skmtc.dev/acesapi/apis/acesapi-api.md) · [All operations](https://skmtc.dev/acesapi/apis/acesapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/acesapi/apis/acesapi-api/revisions/01a182013f8b?raw)
