Borussia Dortmund 1, Paris Saint-Germain 0

soccer game fileFinal
Parc des Princes · Paris · France
Boxscore

Key evidence.

Every reported player line, kept in the API’s sport-specific stat vocabulary.

Borussia Dortmund boxscore
PlayerPosassistsclean sheetfoulsgoalsgoals concededminutesredsave pctsavesshot accuracyshotssotyellow
Ian Maatsen–0–00–00–––000
Jamie Gittens–0–00–00–––000
Donyell Malen–0–00–00–––000
Niclas Füllkrug–0–10–00––1110
Jadon Sancho–0–00–00–––000
Alexander Meyer–0–00–00–––000
Gregor Kobel––1––00–15––––
Niklas Süle–0–00–00–––000
Julian Ryerson–0–10–00––0100
Nico Schlotterbeck–0–10–00––0100
Emre Can–0–10–00–––000
Marcel Sabitzer–0–10–00–––001
Julian Brandt–1–00–00––0100
Salih Özcan–0–00–00–––000
Felix Nmecha–0–00–00–––000
Karim Adeyemi–0–00–00––1110
Marius Wolf–0–00–00–––000
Youssoufa Moukoko–0–00–00–––000
Marco Reus–0–00–00–––000
Sébastien Haller–0–00–00–––000
Marcel Lotka–0–00–00–––000
Kjell-Arik Wätjen–0–00–00–––000
Mats Hummels–0–11–00––1111
Paris Saint-Germain boxscore
PlayerPosassistsclean sheetfoulsgoalsgoals concededminutesredsave pctsavesshot accuracyshotssotyellow
Gianluigi Donnarumma––0––10–0.6672––––
Manuel Ugarte–0–00–00–––000
Nordi Mukiele–0–00–00–––000
Randal Kolo Muani–0–00–00–––000
Kylian Mbappé–0–20–00––0.250410
Carlos Soler–0–00–00–––000
Arnau Tenas–0–00–00–––000
Gonçalo Ramos–0–10–00––0400
Vitinha–0–00–00––0.167610
Lucas Beraldo–0–00–00–––000
Warren Zaïre-Emery–0–10–00––0100
Fabián Ruiz–0–00–00––0100
Lee Kang-In–0–00–00––0100
Bradley Barcola–0–00–00––0100
Achraf Hakimi–0–00–00––0101
Nuno Mendes–0–00–00––0300
Ousmane Dembélé–0–30–00––0101
Marquinhos–0–10–00––0200
Yoram Zague–0–00–00–––000
Milan Skriniar–0–00–00–––000
Marco Asensio–0–00–00––0300
Danilo Pereira–0–00–00–––000
Keylor Navas–0–00–00–––000

Comparison

Side by side.

Final

Analysis preview// illustrative example, not this page's real data
sample · team comparisonexample only
a:"Team A"b:"Team B"
Offensive ratingA 114.2 · B 108.9
Recent form (L10)A 6-4 · B 6-4
Head-to-headB leads 3-1
GET /v1/analysis/compare-teams?a=…&b=…Run this yourself via the API
Built on the StatHawk API

The page is the demo.

These requests and request patterns show how this page gets data from the same REST API and MCP server you can use in your own app or agent.

View this page's API recipe

Use the authenticated requests or fill in the labeled request templates, then adapt the response in your own product.

Authenticated request · GET /v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c
curl "https://api.statshawk.ai/v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c/boxscore
curl "https://api.statshawk.ai/v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c/boxscore" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c/matchup
curl "https://api.statshawk.ai/v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c/matchup" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c/play-by-play?detail=full
curl "https://api.statshawk.ai/v1/contests/cst_06fhs85wwnzr73ce1t9etqc58c/play-by-play?detail=full" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Try with MCP

Connect StatHawk to your agent, then ask it to explain and extend the data shown on this page.

Build this view in the API reference
$claude mcp add statshawk https://mcp.statshawk.ai/mcp