Real-time Tennis Data

Live tennis data, connected to every match.

Stream scores, point events and match-state updates over WebSocket. Keep your scoreboard, match timeline and predictions connected through the same tennis identities.

From an event to your match view.

Inspect the event envelope and its match state. Event identity, revision and cursor let your application apply updates in order and resume the stream.

WebSocket messages · V2

Match events and resumable delivery

Message fields

type
match.point.upserted
match_id
mat_00000000-0000-4000-8000-000000000001
cursor
9876543210123456
data.revision
1
Event example
{
  "schema_version": "2.0",
  "event_id": "evt_00000000-0000-4000-8000-000000000042",
  "cursor": "9876543210123456",
  "type": "match.point.upserted",
  "match_id": "mat_00000000-0000-4000-8000-000000000001",
  "source_observed_at": "2026-10-07T12:00:00.000Z",
  "published_at": "2026-10-07T12:00:00.000Z",
  "data": {
    "id": "pnt_00000000-0000-4000-8000-000000000042",
    "match_id": "mat_00000000-0000-4000-8000-000000000001",
    "revision": 1,
    "sequence": 42,
    "set_no": 1,
    "game_no": 8,
    "point_no": 5,
    "score_before": [
      "30",
      "30"
    ],
    "score_after": [
      "30",
      "40"
    ],
    "server_side": 1,
    "winner_side": 2,
    "serve_number": 2,
    "result_code": "winner",
    "rally_length": 6
  },
  "state": null
}

Example IDs and timestamps show the V2 message format.

Keep identity and ordering with each event.

Use event IDs for deduplication, cursors for replay and point revisions for corrections. The same match ID connects your stream to REST queries.

type
The committed change carried by this message.
event_id
Deduplicate delivery of the same event, including after reconnect.
cursor
A decimal-string checkpoint for ordered replay. Save it after applying events.
match_id
Canonical match identity shared by live states and retained reads.
data.id / data.revision
Upsert a point by its own ID and revision. Corrections keep its logical ID.

From match context to your application.

  1. Discover your matches.

    List tracked matches and use their canonical IDs for REST queries and stream subscriptions.

    Read the documentation
  2. Subscribe with a ticket.

    Create a scoped stream ticket and authenticate the connection. Keep your API key on your server.

    View SDK examples
  3. Resume with context.

    Retain the cursor and revisions, then reconnect without losing the match identity behind each update.

    Read the reconnect guide

Questions

Connect your application to the match.

Create an API key, choose the matches you need and follow the WebSocket quickstart to authenticate, subscribe and resume updates.