# GET /v2/fixtures/{id}/players/{playerId}/actions

Group: Fixtures

Every on-ball action of one player in the fixture, with pitch coordinates: passes and crosses (start → end, completed or not, key pass, long ball), take-ons, defensive actions (tackles, interceptions, ball recoveries, clearances, blocks) and ball carries. Pro and Business plans.

Plans: Pro + Business only (other plans get 403 endpoint_not_in_plan).

Note: Football, covered leagues; empty lists (200) for a player who did not play, before kick-off and in other sports. Coordinates are 0–100 in the player’s direction of attack (x 0 = his own goal line, 100 = the goal he attacks), the heatmap’s frame. successful counts against the lineups’ accurate / won statistics; null for ball carries. The source gives no time: the order is its own.

## Parameters

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `id` | path | yes | our numeric id (positive integer) |
| `playerId` | path | yes | our player id (e.g. from /lineups) |

## Response

- `data`: `PlayerActions`
- `meta`: playerId, count (all actions)
- Objects: PlayerActions (https://sportsapi.app/markdown/en/reference.md#playeractions)

## Errors

- 403 history_not_in_plan — the fixture kicked off before your plan’s history
- 404 not_found — a fixture or player id that does not exist

Plus the common errors (https://sportsapi.app/markdown/en/docs.md#errors).

## Request

cURL:

```bash
curl -H "Authorization: Bearer sk_live_…" \
    "https://api.sportsapi.app/v2/fixtures/{id}/players/{playerId}/actions"
```

TypeScript:

```ts
const { data, meta } = await client.fixtures.playerActions(id, playerId);
```

Python:

```python
res = client.fixtures.player_actions(id, player_id)
```

Go:

```go
res, err := client.Fixtures.PlayerActions(ctx, id, playerId)
```

CLI:

```bash
$ sportsapi fixtures player-actions <id> <playerId>
```

## Example response

```json
{ "data": {
    "passes": [ { "type": "pass", "start": { "x": 27.7, "y": 96 }, "end": { "x": 23.3, "y": 94.8 }, "successful": true, "keyPass": false, "longBall": false },
                { "type": "cross", "start": { "x": 79.8, "y": 11.3 }, "end": { "x": 94.9, "y": 59.1 }, "successful": true, "keyPass": true, "longBall": true }, … ],
    "dribbles": [ { "type": "dribble", "start": { "x": 67.2, "y": 89.8 }, "end": null, "successful": true, "keyPass": null, "longBall": null }, … ],
    "defensive": [ { "type": "tackle", "start": { "x": 33.4, "y": 89.5 }, "end": null, "successful": false, "keyPass": null, "longBall": null }, … ],
    "ballCarries": [ { "type": "ballCarry", "start": { "x": 62.5, "y": 93.3 }, "end": { "x": 69.8, "y": 86.8 }, "successful": null, "keyPass": null, "longBall": null }, … ] },
  "meta": { "playerId": 1403061, "count": 72 } }
```

---

Base URL: https://api.sportsapi.app. Send your API key as `Authorization: Bearer <key>` on every /v2 request; keys are created in the dashboard (https://sportsapi.app/dashboard).
HTML: https://sportsapi.app/docs/fixtures/player-actions · All docs: https://sportsapi.app/markdown/en/docs.md
