St. Louis Cardinals 2, Los Angeles Angels 3

baseball game fileFinal
Angel Stadium · Anaheim

Game flow

Every swing in the score.

The line is the running run differential: above the center favors St. Louis Cardinals, below favors Los Angeles Angels. It runs across every plate appearance and is marked by inning along the bottom. Select a scoring marker to jump to the play.

Score differential over the gameA positive differential means St. Louis Cardinals led; a negative differential means Los Angeles Angels led.Run differential+20−2123456789
  1. 01top 1: JJ Wetherholt grounds out, second baseman Vaughn Grissom to first baseman Nolan Schanuel.00
  2. 02top 1: Iván Herrera strikes out swinging.00
  3. 03top 1: Alec Burleson grounds out, second baseman Vaughn Grissom to first baseman Nolan Schanuel.00
  4. 04bottom 1: Zach Neto challenged (pitch result), call on the field was confirmed: Zach Neto called out on strikes.00
  5. 05bottom 1: Mike Trout grounds out, second baseman JJ Wetherholt to first baseman Alec Burleson.00
  6. 06bottom 1: Nolan Schanuel grounds out, second baseman JJ Wetherholt to first baseman Alec Burleson.00
  7. 07top 2: Jordan Walker doubles (21) on a sharp line drive to left fielder Josh Lowe.00
  8. 08top 2: Lars Nootbaar singles on a line drive to left fielder Josh Lowe. Jordan Walker to 3rd.00
  9. 09top 2: Masyn Winn strikes out swinging.00
  10. 10top 2: Nathan Church singles on a sharp line drive to right fielder Jo Adell. Jordan Walker scores. Lars Nootbaar to 3rd.10
  11. 11top 2: Blaze Jordan grounds out, third baseman Denzer Guzman to first baseman Nolan Schanuel. Lars Nootbaar scores. Nathan Church to 2nd.20
  12. 12top 2: Jimmy Crooks strikes out swinging.20
  13. 13bottom 2: Jorge Soler strikes out swinging.20
  14. 14bottom 2: Vaughn Grissom grounds out softly, second baseman JJ Wetherholt to first baseman Alec Burleson.20
  15. 15bottom 2: Josh Lowe grounds out, second baseman JJ Wetherholt to first baseman Alec Burleson.20
  16. 16top 3: JJ Wetherholt walks.20
  17. 17top 3: Iván Herrera strikes out swinging. JJ Wetherholt steals (10) 2nd base.20
  18. 18top 3: Alec Burleson grounds out, third baseman Denzer Guzman to first baseman Nolan Schanuel.20
  19. 19top 3: Jordan Walker grounds out sharply, shortstop Zach Neto to first baseman Nolan Schanuel.20
  20. 20bottom 3: Jo Adell homers (14) on a fly ball to left center field.21
  21. 21bottom 3: Denzer Guzman grounds out softly, shortstop Masyn Winn to first baseman Alec Burleson.21
  22. 22bottom 3: Logan O'Hoppe pops out to first baseman Alec Burleson.21
  23. 23bottom 3: Zach Neto singles on a ground ball to center fielder Nathan Church.21
  24. 24bottom 3: Mike Trout strikes out swinging.21
  25. 25top 4: Lars Nootbaar grounds out sharply, shortstop Zach Neto to first baseman Nolan Schanuel.21
  26. 26top 4: Masyn Winn flies out to right fielder Jo Adell.21
  27. 27top 4: Angels challenged (tag play), call on the field was overturned: Nathan Church singles on a sharp line drive to center fielder Mike Trout. Nathan Church out at 2nd on the throw, center fielder Mike Trout to shortstop Zach Neto.21
  28. 28bottom 4: Nolan Schanuel singles on a sharp line drive to right fielder Jordan Walker.21
  29. 29bottom 4: Jorge Soler lines out sharply to left fielder Lars Nootbaar.21
  30. 30bottom 4: Vaughn Grissom grounds into a double play, third baseman Blaze Jordan to second baseman JJ Wetherholt to first baseman Alec Burleson. Nolan Schanuel out at 2nd. Vaughn Grissom out at 1st.21
  31. 31top 5: Blaze Jordan grounds out sharply, shortstop Zach Neto to first baseman Nolan Schanuel.21
  32. 32top 5: Jimmy Crooks flies out sharply to center fielder Mike Trout.21
  33. 33top 5: JJ Wetherholt strikes out swinging.21
  34. 34bottom 5: Josh Lowe called out on strikes.21
  35. 35bottom 5: Jo Adell grounds out sharply, shortstop Masyn Winn to first baseman Alec Burleson.21
  36. 36bottom 5: Denzer Guzman grounds out sharply, third baseman Blaze Jordan to first baseman Alec Burleson.21
  37. 37top 6: Iván Herrera strikes out swinging.21
  38. 38top 6: Alec Burleson flies out sharply to center fielder Mike Trout.21
  39. 39top 6: Jordan Walker lines out sharply to center fielder Mike Trout.21
  40. 40bottom 6: Logan O'Hoppe grounds out, third baseman Blaze Jordan to first baseman Alec Burleson.21
  41. 41bottom 6: Zach Neto pops out to first baseman Alec Burleson in foul territory.21
  42. 42bottom 6: Mike Trout grounds out, third baseman Blaze Jordan to first baseman Alec Burleson.21
  43. 43top 7: Lars Nootbaar called out on strikes.21
  44. 44top 7: Masyn Winn pops out to second baseman Vaughn Grissom.21
  45. 45top 7: Nathan Church flies out to left fielder Josh Lowe.21
  46. 46bottom 7: Nolan Schanuel walks.21
  47. 47bottom 7: Jorge Soler called out on strikes.21
  48. 48bottom 7: Vaughn Grissom pops out to first baseman Alec Burleson.21
  49. 49bottom 7: Josh Lowe lines out to left fielder Lars Nootbaar.21
  50. 50top 8: Blaze Jordan flies out to center fielder Mike Trout.21
  51. 51top 8: Jimmy Crooks strikes out swinging.21
  52. 52top 8: JJ Wetherholt strikes out swinging.21
  53. 53bottom 8: Jo Adell singles on a sharp line drive to left fielder Lars Nootbaar.21
  54. 54bottom 8: Denzer Guzman called out on strikes.21
  55. 55bottom 8: Wade Meckler lines out to first baseman Alec Burleson.21
  56. 56bottom 8: Zach Neto flies out to right fielder Jordan Walker.21
  57. 57top 9: Iván Herrera strikes out swinging.21
  58. 58top 9: Alec Burleson strikes out swinging.21
  59. 59top 9: Jordan Walker walks.21
  60. 60top 9: Lars Nootbaar flies out sharply to left fielder Josh Lowe.21
  61. 61bottom 9: Mike Trout called out on strikes.21
  62. 62bottom 9: Nolan Schanuel singles on a ground ball to right fielder Jordan Walker.21
  63. 63bottom 9: Jorge Soler hit by pitch. Oswald Peraza to 2nd.21
  64. 64bottom 9: Umpire reviewed (home run), call on the field was upheld: Vaughn Grissom doubles (13) on a sharp fly ball to right fielder Jordan Walker. Oswald Peraza scores. Jose Siri to 3rd.22
  65. 65bottom 9: Riley O'Brien intentionally walks Josh Lowe.22
  66. 66bottom 9: Jo Adell hit by pitch. Jose Siri scores. Vaughn Grissom to 3rd. Josh Lowe to 2nd.23
Boxscore

Key evidence.

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

St. Louis Cardinals boxscore
PlayerPosabavgb2b3bbbfcsererahhbphriplobpopsoutspapitchesrrbisbsfslgsosvtotal baseswwhip
JJ Wetherholt2B3000100000.2500.25040010020
Ivan HerreraDH4000000000040000040
Alec Burleson1B4000000000040000010
Lars NootbaarLF40.25000001000.2500.500410000.25011
Masyn WinnSS3000000000030000010
Blaze Jordan3B3000000000030100000
Nathan ChurchCF30.66700002000.6671.333301000.66702
Kyle LeahyP02011.5003160189514000.500
Ryne StanekP1400001031301001
George SorianoP0400101031401001
Riley O'BrienP16254200.333112121009
Jimmy CrooksC3000000000030000020
Jordan WalkerRF30.33310101000.5001.167410100.66702
Los Angeles Angels boxscore
PlayerPosabavgb2b3bbbfcsererahhbphriplobpopsoutspapitchesrrbisbsfslgsosvtotal baseswwhip
Zach NetoSS40.25000001000.2500.500400000.25011
Denzer Guzman3B3000000000030000010
Nolan Schanuel1B30.66700102000.7501.417400000.66702
Jo AdellRF30.66700002110.7502.417412001.66705
Vaughn Grissom2B40.25010001000.2500.750401000.50002
Wade MecklerPH1000000000010000000
Oswald PerazaPR000000000100000
Josh LoweLF3000100000.2500.25040000010
Jose SiriPR000000000100000
Tyler HeinemanC000000000000000
Jose FerminP1400001032102011
Samy Natera Jr.P0300001031302000
Jose SorianoP12522.5714070219527000.714
Logan O'HoppeC2000000000020000000
Jorge SolerDH3000000100.2500.25040000020
Mike TroutCF4000000000040000020

Comparison

Side by side.

Final

Matchup

Before first pitch.

Probable pitchers and posted lineup context from the matchup card.

Lineups available2026-07-21T02:10:00Z · In Progress

St. Louis Cardinals

Probable pitcher: Kyle Leahy (R)

Los Angeles Angels

Probable pitcher: José Soriano (R)

Play-by-play

The game, at bat by at bat.

top 1st(3)
  • JJ Wetherholt vs Jose Soriano0-0

    JJ Wetherholt grounds out, second baseman Vaughn Grissom to first baseman Nolan Schanuel.

    2-2, 5 pitches · 0 outs before

  • Ivan Herrera vs Jose Soriano0-0

    Iván Herrera strikes out swinging.

    1-3, 5 pitches · 1 out before

  • Alec Burleson vs Jose Soriano0-0

    Alec Burleson grounds out, second baseman Vaughn Grissom to first baseman Nolan Schanuel.

    1-0, 2 pitches · 2 outs before

bottom 1st(3)
  • Zach Neto vs Kyle Leahy0-0

    Zach Neto challenged (pitch result), call on the field was confirmed: Zach Neto called out on strikes.

    1-3, 4 pitches · 0 outs before

  • Mike Trout vs Kyle Leahy0-0

    Mike Trout grounds out, second baseman JJ Wetherholt to first baseman Alec Burleson.

    3-2, 6 pitches · 1 out before

  • Nolan Schanuel vs Kyle Leahy0-0

    Nolan Schanuel grounds out, second baseman JJ Wetherholt to first baseman Alec Burleson.

    2-2, 5 pitches · 2 outs before

top 2nd(6)
  • Jordan Walker vs Jose Soriano0-0

    Jordan Walker doubles (21) on a sharp line drive to left fielder Josh Lowe.

    0-1, 2 pitches · 0 outs before

  • Lars Nootbaar vs Jose Soriano0-0

    Lars Nootbaar singles on a line drive to left fielder Josh Lowe. Jordan Walker to 3rd.

    1-1, 3 pitches · 0 outs before

  • Masyn Winn vs Jose Soriano0-0

    Masyn Winn strikes out swinging.

    2-3, 5 pitches · 0 outs before

  • Nathan Church vs Jose Soriano1-0

    Nathan Church singles on a sharp line drive to right fielder Jo Adell. Jordan Walker scores. Lars Nootbaar to 3rd.

    0-2, 3 pitches · 1 out before

  • Blaze Jordan vs Jose Soriano2-0

    Blaze Jordan grounds out, third baseman Denzer Guzman to first baseman Nolan Schanuel. Lars Nootbaar scores. Nathan Church to 2nd.

    0-0, 1 pitch · 1 out before

  • Jimmy Crooks vs Jose Soriano2-0

    Jimmy Crooks strikes out swinging.

    0-3, 3 pitches · 2 outs before

bottom 2nd(3)
  • Jorge Soler vs Kyle Leahy2-0

    Jorge Soler strikes out swinging.

    3-3, 6 pitches · 0 outs before

  • Vaughn Grissom vs Kyle Leahy2-0

    Vaughn Grissom grounds out softly, second baseman JJ Wetherholt to first baseman Alec Burleson.

    0-1, 2 pitches · 1 out before

  • Josh Lowe vs Kyle Leahy2-0

    Josh Lowe grounds out, second baseman JJ Wetherholt to first baseman Alec Burleson.

    1-0, 2 pitches · 2 outs before

top 3rd(4)
  • JJ Wetherholt vs Jose Soriano2-0

    JJ Wetherholt walks.

    4-2, 5 pitches · 0 outs before

  • Ivan Herrera vs Jose Soriano2-0

    Iván Herrera strikes out swinging. JJ Wetherholt steals (10) 2nd base.

    3-3, 6 pitches · 0 outs before

  • Alec Burleson vs Jose Soriano2-0

    Alec Burleson grounds out, third baseman Denzer Guzman to first baseman Nolan Schanuel.

    0-1, 2 pitches · 1 out before

  • Jordan Walker vs Jose Soriano2-0

    Jordan Walker grounds out sharply, shortstop Zach Neto to first baseman Nolan Schanuel.

    1-0, 2 pitches · 2 outs before

bottom 3rd(5)
  • Jo Adell vs Kyle Leahy2-1

    Jo Adell homers (14) on a fly ball to left center field.

    1-2, 5 pitches · 0 outs before

  • Denzer Guzman vs Kyle Leahy2-1

    Denzer Guzman grounds out softly, shortstop Masyn Winn to first baseman Alec Burleson.

    2-2, 9 pitches · 0 outs before

  • Logan O'Hoppe vs Kyle Leahy2-1

    Logan O'Hoppe pops out to first baseman Alec Burleson.

    0-0, 1 pitch · 1 out before

  • Zach Neto vs Kyle Leahy2-1

    Zach Neto singles on a ground ball to center fielder Nathan Church.

    2-2, 8 pitches · 2 outs before

  • Mike Trout vs Kyle Leahy2-1

    Mike Trout strikes out swinging.

    3-3, 7 pitches · 2 outs before

top 4th(3)
  • Lars Nootbaar vs Jose Soriano2-1

    Lars Nootbaar grounds out sharply, shortstop Zach Neto to first baseman Nolan Schanuel.

    3-2, 8 pitches · 0 outs before

  • Masyn Winn vs Jose Soriano2-1

    Masyn Winn flies out to right fielder Jo Adell.

    0-2, 3 pitches · 1 out before

  • Nathan Church vs Jose Soriano2-1

    Angels challenged (tag play), call on the field was overturned: Nathan Church singles on a sharp line drive to center fielder Mike Trout. Nathan Church out at 2nd on the throw, center fielder Mike Trout to shortstop Zach Neto.

    0-1, 2 pitches · 2 outs before

bottom 4th(3)
  • Nolan Schanuel vs Kyle Leahy2-1

    Nolan Schanuel singles on a sharp line drive to right fielder Jordan Walker.

    3-2, 6 pitches · 0 outs before

  • Jorge Soler vs Kyle Leahy2-1

    Jorge Soler lines out sharply to left fielder Lars Nootbaar.

    1-1, 3 pitches · 0 outs before

  • Vaughn Grissom vs Kyle Leahy2-1

    Vaughn Grissom grounds into a double play, third baseman Blaze Jordan to second baseman JJ Wetherholt to first baseman Alec Burleson. Nolan Schanuel out at 2nd. Vaughn Grissom out at 1st.

    1-2, 4 pitches · 1 out before

top 5th(3)
  • Blaze Jordan vs Jose Soriano2-1

    Blaze Jordan grounds out sharply, shortstop Zach Neto to first baseman Nolan Schanuel.

    1-1, 3 pitches · 0 outs before

  • Jimmy Crooks vs Jose Soriano2-1

    Jimmy Crooks flies out sharply to center fielder Mike Trout.

    0-0, 1 pitch · 1 out before

  • JJ Wetherholt vs Jose Soriano2-1

    JJ Wetherholt strikes out swinging.

    3-3, 6 pitches · 2 outs before

bottom 5th(3)
  • Josh Lowe vs Kyle Leahy2-1

    Josh Lowe called out on strikes.

    2-3, 7 pitches · 0 outs before

  • Jo Adell vs Kyle Leahy2-1

    Jo Adell grounds out sharply, shortstop Masyn Winn to first baseman Alec Burleson.

    2-1, 4 pitches · 1 out before

  • Denzer Guzman vs Kyle Leahy2-1

    Denzer Guzman grounds out sharply, third baseman Blaze Jordan to first baseman Alec Burleson.

    1-0, 2 pitches · 2 outs before

top 6th(3)
  • Ivan Herrera vs Jose Soriano2-1

    Iván Herrera strikes out swinging.

    0-3, 3 pitches · 0 outs before

  • Alec Burleson vs Jose Soriano2-1

    Alec Burleson flies out sharply to center fielder Mike Trout.

    3-1, 5 pitches · 1 out before

  • Jordan Walker vs Jose Soriano2-1

    Jordan Walker lines out sharply to center fielder Mike Trout.

    1-2, 5 pitches · 2 outs before

bottom 6th(3)
  • Logan O'Hoppe vs Kyle Leahy2-1

    Logan O'Hoppe grounds out, third baseman Blaze Jordan to first baseman Alec Burleson.

    2-2, 6 pitches · 0 outs before

  • Zach Neto vs Kyle Leahy2-1

    Zach Neto pops out to first baseman Alec Burleson in foul territory.

    1-1, 3 pitches · 1 out before

  • Mike Trout vs Kyle Leahy2-1

    Mike Trout grounds out, third baseman Blaze Jordan to first baseman Alec Burleson.

    2-2, 5 pitches · 2 outs before

top 7th(3)
  • Lars Nootbaar vs Jose Soriano2-1

    Lars Nootbaar called out on strikes.

    2-3, 5 pitches · 0 outs before

  • Masyn Winn vs Jose Soriano2-1

    Masyn Winn pops out to second baseman Vaughn Grissom.

    2-2, 6 pitches · 1 out before

  • Nathan Church vs Jose Soriano2-1

    Nathan Church flies out to left fielder Josh Lowe.

    2-1, 4 pitches · 2 outs before

bottom 7th(4)
  • Nolan Schanuel vs Ryne Stanek2-1

    Nolan Schanuel walks.

    4-0, 4 pitches · 0 outs before

  • Jorge Soler vs Ryne Stanek2-1

    Jorge Soler called out on strikes.

    0-3, 3 pitches · 0 outs before

  • Vaughn Grissom vs Ryne Stanek2-1

    Vaughn Grissom pops out to first baseman Alec Burleson.

    0-0, 1 pitch · 1 out before

  • Josh Lowe vs Ryne Stanek2-1

    Josh Lowe lines out to left fielder Lars Nootbaar.

    3-1, 5 pitches · 2 outs before

top 8th(3)
  • Blaze Jordan vs Samy Natera Jr.2-1

    Blaze Jordan flies out to center fielder Mike Trout.

    3-1, 5 pitches · 0 outs before

  • Jimmy Crooks vs Samy Natera Jr.2-1

    Jimmy Crooks strikes out swinging.

    1-3, 5 pitches · 1 out before

  • JJ Wetherholt vs Samy Natera Jr.2-1

    JJ Wetherholt strikes out swinging.

    0-3, 3 pitches · 2 outs before

bottom 8th(4)
  • Jo Adell vs George Soriano2-1

    Jo Adell singles on a sharp line drive to left fielder Lars Nootbaar.

    1-1, 3 pitches · 0 outs before

  • Denzer Guzman vs George Soriano2-1

    Denzer Guzman called out on strikes.

    0-3, 3 pitches · 0 outs before

  • Wade Meckler vs George Soriano2-1

    Wade Meckler lines out to first baseman Alec Burleson.

    2-1, 4 pitches · 1 out before

  • Zach Neto vs George Soriano2-1

    Zach Neto flies out to right fielder Jordan Walker.

    1-2, 4 pitches · 2 outs before

top 9th(4)
  • Ivan Herrera vs Jose Fermin2-1

    Iván Herrera strikes out swinging.

    2-3, 5 pitches · 0 outs before

  • Alec Burleson vs Jose Fermin2-1

    Alec Burleson strikes out swinging.

    3-3, 6 pitches · 1 out before

  • Jordan Walker vs Jose Fermin2-1

    Jordan Walker walks.

    4-1, 5 pitches · 2 outs before

  • Lars Nootbaar vs Jose Fermin2-1

    Lars Nootbaar flies out sharply to left fielder Josh Lowe.

    2-2, 5 pitches · 2 outs before

bottom 9th(6)
  • Mike Trout vs Riley O'Brien2-1

    Mike Trout called out on strikes.

    2-3, 5 pitches · 0 outs before

  • Nolan Schanuel vs Riley O'Brien2-1

    Nolan Schanuel singles on a ground ball to right fielder Jordan Walker.

    2-1, 4 pitches · 1 out before

  • Jorge Soler vs Riley O'Brien2-1

    Jorge Soler hit by pitch. Oswald Peraza to 2nd.

    4-2, 6 pitches · 1 out before

  • Vaughn Grissom vs Riley O'Brien2-2

    Umpire reviewed (home run), call on the field was upheld: Vaughn Grissom doubles (13) on a sharp fly ball to right fielder Jordan Walker. Oswald Peraza scores. Jose Siri to 3rd.

    1-0, 2 pitches · 1 out before

  • Josh Lowe vs Riley O'Brien2-2

    Riley O'Brien intentionally walks Josh Lowe.

    0-0, 0 pitches · 1 out before

  • Jo Adell vs Riley O'Brien2-3

    Jo Adell hit by pitch. Jose Siri scores. Vaughn Grissom to 3rd. Josh Lowe to 2nd.

    4-0, 4 pitches · 1 out before

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_06fnhhq21ht253tytzcw2mmxww
curl "https://api.statshawk.ai/v1/contests/cst_06fnhhq21ht253tytzcw2mmxww" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fnhhq21ht253tytzcw2mmxww/boxscore
curl "https://api.statshawk.ai/v1/contests/cst_06fnhhq21ht253tytzcw2mmxww/boxscore" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fnhhq21ht253tytzcw2mmxww/matchup
curl "https://api.statshawk.ai/v1/contests/cst_06fnhhq21ht253tytzcw2mmxww/matchup" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fnhhq21ht253tytzcw2mmxww/play-by-play?detail=full
curl "https://api.statshawk.ai/v1/contests/cst_06fnhhq21ht253tytzcw2mmxww/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