- 12
- Goals
- 3
- Assists
- 7
- Apps
- 1
- Scoring rank
La Liga data API
The world's easiest
La Liga API for developers ballers.
Scores, player data, minute-by-minute and intelligence through one clean API.
63'
Match, score and event details come from the served API response. No win probability is inferred or displayed.
- 4,940
- La Liga matches
- Measured from production coverage
- 13
- Seasons
- 2014-15–2026-27
- 20
- Clubs in table
- 2026-27
- 99.939%
- API uptime
- Status snapshot · observed 2026-09-03
How far back the La Liga archive goes
13 seasons are on record, back to 2014-15 — 4,629 finished games you can query today. One route serves the full span. These figures are measured from the customer-facing routes listed below, so this page cannot silently drift from the product.
| Archive | Route | Seasons | Reaches back to | Finished games |
|---|---|---|---|---|
| La Liga | /v1/matches | 13 | 2014-15 – 2026-27 | 4,629 |
What each plan reaches
- Edge & Pro
- all 13 seasons
- Solo & Trio
- 5 seasons
- Free
- the current season
Edge and Pro reach everything listed above. Solo and Trio reach five seasons. Free covers the current season.
Player intelligence
From player row to scouting profile.
Goals, assists, appearances and minutes stay attached to one served season row. Canonical player IDs and first-party asset URLs render when present; otherwise the page uses an honest text or monogram fallback.
Soccer minute-by-minute
Follow the match, one event at a time.
Every event in the match, each one stamped to the minute it happened on, attached to the match clock, player, assist and canonical match ID.
- 82'
Daniel Requena SánchezLevante· Assist:
Petar Ratkov
- 63'BNBil NsongoDeportivo La Coruna
What developers can build
Five La Liga products from one connected surface.
The same fixtures, standings, player rows, events and odds identities feed every view.
Standings
2026-27 La Liga standings.
The full 20-club table, aligned for phone and desktop. Source as of Oct 17, 2026, 9:01 AM UTC.
| # | Club | P | W | D | L | GD | Pts | Elo |
|---|---|---|---|---|---|---|---|---|
| 1 | 8 | 8 | 0 | 0 | +27 | 24 | 1665 | |
| 2 | 8 | 6 | 1 | 1 | +10 | 19 | 1572 | |
| 3 | 8 | 6 | 1 | 1 | +5 | 19 | 1575 | |
| 4 | 8 | 6 | 0 | 2 | +11 | 18 | 1605 | |
| 5 | 8 | 4 | 2 | 2 | +1 | 14 | 1496 | |
| 6 | 8 | 4 | 1 | 3 | -3 | 13 | 1501 | |
| 7 | 8 | 3 | 2 | 3 | +4 | 11 | 1480 | |
| 8 | 9 | 2 | 5 | 2 | +1 | 11 | 1499* | |
| 9 | 8 | 1 | 5 | 2 | +2 | 8 | 1491 | |
| 10 | 6 | 2 | 2 | 2 | +1 | 8 | 1473 | |
| 11 | 8 | 2 | 2 | 4 | 0 | 8 | 1526 | |
| 12 | 8 | 2 | 2 | 4 | 0 | 8 | 1455 | |
| 13 | 7 | 2 | 2 | 3 | -5 | 8 | 1505 | |
| 14 | 8 | 2 | 2 | 4 | -6 | 8 | 1483 | |
| 15 | 8 | 2 | 2 | 4 | -10 | 8 | 1484* | |
| 16 | 8 | 2 | 2 | 4 | -10 | 8 | 1456 | |
| 17 | 8 | 1 | 4 | 3 | -4 | 7 | 1472 | |
| 18 | 8 | 1 | 3 | 4 | -6 | 6 | 1459 | |
| 19 | 8 | 1 | 2 | 5 | -9 | 5 | 1472 | |
| 20 | 8 | 0 | 4 | 4 | -9 | 4 | 1465* |
* Provisional Elo uses the latest match-by-match rating for promoted clubs that have not yet reached the ten-match publication floor.
Team strength
The La Liga Elo leaderboard.
A continuously recalculated rating across 20 clubs. Last computed Oct 13, 2026, 6:04 AM UTC.
- 1
Barcelona1665
- 2
Real Madrid1605
- 3
Real Betis1575
- 4
Atlético Madrid1572
- 5
Villarreal1526
- 6
Rayo Vallecano1505
- 7
Real Sociedad1501
- 8
RC Deportivo La Coruña1499*provisional
Player rankings
Goals and assists, side by side.
Both boards request the same current season as the standings and preserve canonical player IDs and first-party asset URLs when present. Identity is never guessed from a name, and monograms render when no image is served.
Top scorers
- 1
RaphinhaBarcelona12goals
- 2
Lamine YamalBarcelona7goals
- 3
Kylian MbappéReal Madrid7goals
- 4
Sergio CamelloRayo Vallecano7goals
- 5
M. ZabiriReal Racing Club de Santander7goals
- 6
A. BudimirOsasuna6goals
Assist leaders
- 1
Lamine YamalBarcelona5assists
- 2
Javier HernandezEspanyol5assists
- 3
A. GordonBarcelona4assists
- 4
RaphinhaBarcelona3assists
- 5
M. DíazAlavés3assists
- 6
Alberto MoleiroVillarreal3assists
Expected goals
La Liga xG leaders.
Expected-goals output for the 2026-27 season, shown only when the served response passes the publication checks.
GET /v1/leagues/laliga/xg-leaders?season={season}| # | Player | Team | Apps | Goals | xG | npxG | xA | G−xG |
|---|---|---|---|---|---|---|---|---|
| 1 | Kylian Mbappe-Lottin | Real Madrid | 8 | 7 | 9.23 | 7.74 | 1.81 | -2.23 |
| 2 | Raphinha | Barcelona | 7 | 12 | 9.06 | 6.83 | 2.65 | 2.94 |
| 3 | Lamine Yamal | Barcelona | 8 | 7 | 6.39 | 4.91 | 5.06 | 0.61 |
| 4 | Roberto Fernández | Espanyol | 8 | 6 | 5.19 | 5.19 | 0.28 | 0.81 |
| 5 | Ante Budimir | Osasuna | 8 | 6 | 5.02 | 2.79 | 0.18 | 0.98 |
| 6 | Ayoze Pérez | Villarreal | 9 | 1 | 4.42 | 4.42 | 1.21 | -3.42 |
| 7 | Karim Adeyemi | Barcelona | 8 | 2 | 4.29 | 4.29 | 1.54 | -2.29 |
| 8 | Pierre-Emerick Aubameyang | Deportivo La Coruna | 8 | 6 | 4.14 | 4.14 | 1.58 | 1.86 |
| 9 | Georges Mikautadze | Villarreal | 9 | 2 | 4.05 | 3.31 | 1.27 | -2.05 |
| 10 | Yassir Zabiri | Racing Santander | 8 | 7 | 3.90 | 3.90 | 0.06 | 3.10 |
Player availability
Soccer absences.
See which players missed a fixture and why, including injuries and suspensions, with the source date attached.
players with absence records
Source as of 2026-10-19.
Open the La Liga absence API →Next up
The next La Liga matches on the schedule.
17 Oct 2026 – 24 Oct 2026
Oct 17, 2026, 12:00 PM UTC
Oct 17, 2026, 2:15 PM UTC
Oct 17, 2026, 4:00 PM UTC
Oct 17, 2026, 7:00 PM UTC
Oct 18, 2026, 12:00 PM UTC
Oct 18, 2026, 2:15 PM UTC
From response to product
The same match, rendered and raw.
Resize the views to inspect how one real La Liga match response maps into a match-center interface.
RC Deportivo La Coruña
1Levante
1- Kickoff
- 2026-10-16 19:00
- Odds attached
- Yes
{
"data": {
"id": "ebfee885-b0c6-4c74-af1d-fb9eb21b25eb",
"sport": "football",
"league": "La Liga",
"home": {
"id": "ae11ccec-9712-476d-9d0c-82eea145d77d",
"name": "RC Deportivo La Coruña",
"short_name": "DEP",
"logo_url": "https://api.bigballsdata.com/v1/assets/E3gWf_e1F5T0pIXbVB1h0iOA3RVvT6jI-CwENf_9llDqXSotdaM-7Tt7jkUesOKsBBm8sg3NODCn6kKvGKAlR-eUcgw"
},
"away": {
"id": "06b2e2c1-ddd0-4872-8ca5-624d5d1a4f29",
"name": "Levante",
"short_name": "LEV",
"logo_url": "https://api.bigballsdata.com/v1/assets/gGLiVix8L00fqEBBtOqKTqXWkddURw4NaBWl_aDhJ6JQVwKY45jiJT7mBVpjPFntVGVyVloWC69zwKTvhTtfsAjxKpf12QAwaQdysPP1zdgPIZTpomR_NHob5lHd63nIv2Qt"
},
"kickoff_utc": "2026-10-16T19:00:00.000Z",
"status": "finished",
"score": {
"home": 1,
"away": 1
},
"linescore": {
"away": [
0,
1
],
"home": [
0,
1
]
},
"attendance": null,
"broadcast": "ESPN Deportes",
"round": "Regular Season - 9",
"has_odds": true
}
}Drag the divider or use the arrow keys. On mobile the rendered view and exact response stack.
Embeddable La Liga widgets
Publish useful league views before writing an integration.
These lightweight iframe pages require no visitor API key. The page fetches through the server and keeps the credential out of the browser.
Standings
<iframe src="https://bigballsdata.com/embed/la-liga/standings" title="La Liga Standings" width="100%" height="620" loading="lazy" style="border:0"></iframe>Goal leaders
<iframe src="https://bigballsdata.com/embed/la-liga/leaders" title="La Liga Goal leaders" width="100%" height="560" loading="lazy" style="border:0"></iframe>Real API example
One request. A traversable La Liga match ID.
Start with the schedule, then follow the returned canonical match UUID into detail, events, statistics and odds.
curl -H "Authorization: Bearer $BBS_API_KEY" "https://api.bigballsdata.com/v1/matches?sport=football&league=laliga"{
"data": {
"id": "ebfee885-b0c6-4c74-af1d-fb9eb21b25eb",
"sport": "football",
"league": "La Liga",
"home": {
"id": "ae11ccec-9712-476d-9d0c-82eea145d77d",
"name": "RC Deportivo La Coruña",
"short_name": "DEP",
"logo_url": "https://api.bigballsdata.com/v1/assets/E3gWf_e1F5T0pIXbVB1h0iOA3RVvT6jI-CwENf_9llDqXSotdaM-7Tt7jkUesOKsBBm8sg3NODCn6kKvGKAlR-eUcgw"
},
"away": {
"id": "06b2e2c1-ddd0-4872-8ca5-624d5d1a4f29",
"name": "Levante",
"short_name": "LEV",
"logo_url": "https://api.bigballsdata.com/v1/assets/gGLiVix8L00fqEBBtOqKTqXWkddURw4NaBWl_aDhJ6JQVwKY45jiJT7mBVpjPFntVGVyVloWC69zwKTvhTtfsAjxKpf12QAwaQdysPP1zdgPIZTpomR_NHob5lHd63nIv2Qt"
},
"kickoff_utc": "2026-10-16T19:00:00.000Z",
"status": "finished",
"score": {
"home": 1,
"away": 1
},
"linescore": {
"away": [
0,
1
],
"home": [
0,
1
]
},
"attendance": null,
"broadcast": "ESPN Deportes",
"round": "Regular Season - 9",
"has_odds": true
}
}La Liga data reference
Start with the product you want to build.
The recommendation cards are derived from the endpoint list below, so their plan labels and routes stay together.
Match center
/v1/matches?sport=football&league=laliga/v1/matches/:id/statistics/v1/matches/:id/events?sport=footballScouting + fantasy
/v1/players/:id/stats?sport=footballOdds model
/v1/teams/:id/h2h-intelligence6 endpoints · 83 documented fields. Click any row to see every field it returns.
Stats included
Every soccer stat field the API returns today — 82 in total, grouped by how they are produced. Each group carries its own freshness, because a sport is rarely uniformly current.
Season player stats
Post-gameWritten after the game ends — not a live in-game feed. Last ingested 2026-09-15.
- Endpoint
- /v1/players/:id/stats
- Last updated
- 2026-09-15
Fields (42)
- Shooting
- Dribbles Attempted, Shots on Target, Shots, Npxg, XG, XG Buildup, XG Chain
- Scoring
- Match Rating, Goals, Npg
- Passing
- Assists, Pass Accuracy, Key Passes, Passes, Xa
- Possession
- Dribbled Past, Dribbles Completed
- Defending
- Duels, Duels Won, Blocks, Interceptions, Tackles
- Goalkeeping
- Goals Conceded, Saves
- Discipline
- Red Cards, Yellow Cards, Second Yellow (red), Fouls Committed, Fouls Drawn, Penalties Conceded, Penalties Missed, Penalties Saved, Penalties Scored, Penalties Won
- Appearances
- Appearances, Starts, Minutes Played, Unused Substitute, Substituted On, Substituted Off, Games, Minutes
Team stats (per game)
Post-gameWritten after the game ends — not a live in-game feed. Last ingested 2026-09-16.
- Endpoint
- /v1/matches/:id/statistics
- Last updated
- 2026-09-16
Fields (40)
- Shooting
- Shot %, Shots on Target, Total Shots
- Scoring
- Final Score Ft Away, Final Score Ft Home, Final Score, Tournament Topscorers
- Passing
- Accurate Crosses, Accurate Long Balls, Accurate Passes, Cross Accuracy %, Long-Ball Accuracy %, Pass Accuracy %, Total Crosses, Total Long Balls, Total Passes
- Possession
- Momentum, Possession %, Team Form, Team Match Stats, Won Corners
- Defending
- Blocked Shots, Effective Clearances, Effective Tackles, Interceptions (defensive), Tackle %, Total Clearance, Total Tackles
- Goalkeeping
- Saves (goalkeeper)
- Discipline
- Fouls Committed, Offsides, Penalty Goals, Penalty Shots, Red Cards, Yellow Cards
- Appearances
- Average Positions, Best Players, Away Lineup, Home Lineup, Player Match Stats
Not included
- Not shown here — team_per_game_advanced: advanced team stats that no route currently serves.
- Not shown here — injuries: injury reports — reference data with its own endpoint.
Missing a stat?
If a field you need is not listed, tell us. Requests help prioritize what we add next.
MCP
Connect an agent. Start building.
Give an agent the La Liga league key and let it traverse fixtures, standings, players, events and odds through the same API identity.
YOU
Build a La Liga match center and scouting board.
✓ list_matches league=laliga
✓ get_standings season=current
✓ get_player_stats player_id={player_id}
La Liga surface connected. Rendering current league context.
Data freshness
How fresh is La Liga data, exactly?
This page checked its served sources Oct 17, 2026, 9:31 AM UTC. Cadences remain category-specific.
- Real-time
Live scores
Every 15 secondsDuring live matches
Source as of: Oct 16, 2026, 7:00 PM UTC
- Real-time
Odds
Every 60 secondsDelta polling
Source as of: Oct 17, 2026, 9:31 AM UTC
- Real-time
Standings
After final whistleCurrent table recalculation
Source as of: Oct 17, 2026, 9:01 AM UTC
- Real-time
Player stats
Every 15 secondsDuring live matches
Source as of: Oct 17, 2026, 9:31 AM UTC
- Daily
Rosters
Checked dailyUpdated when changes are detected
Source as of: Cadence contract; no roster timestamp on this page
- Frequent
Injuries
Every 30 minutesAbsence ingest; read meta.as_of
Source as of: 2026-10-19
- Frequent
Games and schedule
Every 15 minutesUpcoming fixture window
Source as of: Oct 17, 2026, 9:31 AM UTC
- Static
Historical stats
StaticAfter corrections settle
Source as of: 2026-27
Founder pricing
Start with La Liga. Add depth as the product grows.
Current founder pricing comes from the shared billing manifest. Crossed-out figures are future prices, not what customers pay today.
Free
- ✓ One sport
- ✓ Scores, schedules and standings
- ✓ Teams, players and final box scores
- ✓ Current season
Solo
- ✓ Everything in Free
- ✓ La Liga player and team season stats
- ✓ Player form and team intelligence
- ✓ Up to five seasons
Trio
- ✓ Everything in Solo
- ✓ Choose three sports
- ✓ The same La Liga depth across your selected sports
- ✓ Up to five seasons
Edge
- ✓ Everything in Trio
- ✓ All sports
- ✓ Current and historical La Liga odds
- ✓ All available history
Pro
- ✓ Everything in Edge
- ✓ Real-time WebSocket delivery
- ✓ All available history
La Liga API FAQ
Answers before you build.
What La Liga data can I get from the API?
Fixtures, scores, standings, clubs, players, match statistics, goal events, xG, head-to-head history, and odds are available through connected routes. Each response keeps canonical match and club identifiers so a product can move from a schedule into detail. The reference section on this page shows the plan floor for each capability.
Read the relevant docs →Is the La Liga data live, and how quickly does it update?
Freshness depends on the dataset rather than one page-wide timer. Live scores and player statistics can refresh during matches, while fixtures, rosters, injuries, and historical rows use slower cadences. Read the source date and response metadata before deciding how often your application should poll.
Read the relevant docs →How do I get access and make my first La Liga request?
Create an account and API key, then send it as a Bearer token. Start with the La Liga matches or standings route so a healthy response is useful even when no match is live. Keep the returned canonical IDs for the detail calls that follow.
Read the relevant docs →How do I find player, club, and match IDs?
Discover identifiers from list responses instead of guessing them from names. Match and standings rows provide the club or match identity needed by detail routes. Preserve those IDs in your own records because accents, abbreviations, and transfers make name joins unsafe.
Read the relevant docs →How much historical La Liga data is available?
The exact season range depends on the dataset and your plan. Use the coverage response and the season labels returned by each route before promising a date range to users. Founder plans expose current-season evaluation on Free, up to five seasons on Solo and Trio, and available history on Edge and Pro.
Read the relevant docs →How do seasons and competition status work?
La Liga seasons span two calendar years, so retain the served season label rather than deriving it from kickoff year alone. Read match status to distinguish scheduled, live, finished, postponed, suspended, or cancelled fixtures. A current table and a future fixture window can legitimately carry different dates.
Read the relevant docs →Can I get goals, assists, minutes, and expected goals?
Player-season statistics include goals, assists, minutes, and expected metrics where the source provides them. The xG leaderboard is published only when its completeness checks pass. Treat a missing value as unavailable, not as a measured zero.
Read the relevant docs →Which plan includes xG?
xG needs the Solo plan or above. The expected_goals field of /v1/matches/:id/statistics and the player-season leaderboard at /v1/leagues/:id/xg-leaders both start at Solo. The rest of the team stats on /v1/matches/:id/statistics — possession, shots, passes and the rest of the box score — stay available on Free. Coverage is the big five European leagues.
Read the relevant docs →Does the API include La Liga match events, minute-by-minute?
Soccer match events cover goals, cards, substitutions and event timing. Scoring events are included on the Free tier through the default goals view. The full minute-by-minute stream is a Pro feature, with every event stamped to the minute it happened on. Use the canonical match ID from the schedule or match list to request them.
Read the relevant docs →What does an empty result or missing field mean?
An empty list can be a healthy response for a valid filter with no matching rows. A null field means the value was unavailable or redacted, and it should not be converted into zero. Check status, pagination, metadata, and the requested season before diagnosing a data gap.
Read the relevant docs →How should I use La Liga injury and suspension data?
The soccer availability surface records absences rather than an NFL-style weekly injury designation. An absence can reflect injury, suspension, or another stated reason, so preserve the reason supplied by the record. Read its source date separately from the live-score timestamp.
Read the relevant docs →What are the rate limits, and how often should I poll?
Your plan and response headers define the enforceable request limits. Poll live matches more frequently than schedules, rosters, or completed historical statistics. Back off on a 429 response instead of retrying at the same cadence.
Read the relevant docs →Are La Liga statistics corrected after matches?
Source corrections can change a completed match or player row after the final whistle. Keep canonical IDs so an updated value replaces the same record rather than creating a duplicate. Use the latest source date exposed by the response when auditability matters.
Read the relevant docs →Can I use La Liga data in a commercial product?
Commercial use depends on your plan and the applicable terms for the fields you use. API access does not itself grant redistribution, sublicensing, trademark, or media rights. Review the terms before shipping a public or customer-facing integration.
Read the relevant docs →Which timezone and timestamp format does La Liga data use?
Match kickoff records use UTC timestamps. Convert them for display at the edge of your application while retaining the original value for sorting and comparisons. Do not infer a season solely from the calendar year because the competition crosses years.
Read the relevant docs →How are postponed, suspended, and cancelled matches represented?
Read the returned match status rather than inferring state from a blank score or an old kickoff time. Preserve status values your application does not yet recognize so future vocabulary changes do not become false finals. Wait for a terminal status before triggering irreversible settlement or notification logic.
Read the relevant docs →