Uruguay Primera Soccer Data API
Integrate live scores, fixtures, standings, lineups, and odds for Uruguay Primera through one fast, reliable, developer-friendly REST & WebSocket API. 34 clubs, 21 seasons of history, one consistent JSON schema.
No credit card required
The same schema powers Uruguay Primera and 1,000+ competitions worldwide.
Access Full Data of Uruguay Primera Matches
Every Uruguay Primera match, table, and transfer flows through the same clean JSON — no scraping, no HTML parsing, no manual updates. Pick an endpoint, send one request, and get structured data you can ship straight into your product.
https://data.anysport.io/v1/soccer/livescore?match_id=as_0059673e806d4a0788a0d38a6a72f500&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/livescore',
headers={'apikey': 'YOUR_API_KEY'},
params={'match_id': 'as_0059673e806d4a0788a0d38a6a72f500', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"match_id": "as_0059673e806d4a0788a0d38a6a72f500",
"home": "ABC",
"away": "Luverdense",
"league": "Brazil Serie D",
"minute": 90,
"phase": "finished",
"phase_label": "Finished",
"home_score": 4,
"away_score": 1,
"ht_score": "2-1",
"reg_score": "4-1",
"updated_at": "2026-07-26T21:57:59Z"
}
],
"meta": {
"total": 1
}
}https://data.anysport.io/v1/soccer/matches?league_id=asl_1b1e8572c4cd4cf6a84e860dd0012059&season=2026&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/matches',
headers={'apikey': 'YOUR_API_KEY'},
params={'league_id': 'asl_1b1e8572c4cd4cf6a84e860dd0012059', 'season': '2026', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"match_id": "as_15809137cb2a4291a82357249ab6650e",
"date": "2026-07-26",
"time": "18:00",
"status": "FT",
"league": "Primera",
"league_id": "asl_1b1e8572c4cd4cf6a84e860dd0012059",
"season": "2026",
"home": {
"name": "CA Cerro",
"team_id": "ast_f83331438d794ed99b4c3ca3aaaa046b"
},
"away": {
"name": "Racing Montevideo",
"team_id": "ast_d00746fec114471880772005ba79dfab"
},
"ht_score": "1-0",
"reg_score": "1-0",
"venue": ""
},
{
"match_id": "as_9dc1199134fc42f99bdc93b269900e84",
"date": "2026-07-25",
"time": "18:00",
"status": "FT",
"league": "Primera",
"league_id": "asl_1b1e8572c4cd4cf6a84e860dd0012059",
"season": "2026",
"home": {
"name": "Central Esp.",
"team_id": "ast_75ecbb49a2f0427fafe4f144580058d4"
},
"away": {
"name": "Cerro Largo",
"team_id": "ast_fc8cb7dc44ec4a7c921e7bf3c2c7c3f6"
},
"ht_score": "0-1",
"reg_score": "0-1",
"venue": "Parque Palermo"
}
],
"meta": {
"total": 2
}
}https://data.anysport.io/v1/soccer/standings?league_id=asl_1b1e8572c4cd4cf6a84e860dd0012059&season=2026&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/standings',
headers={'apikey': 'YOUR_API_KEY'},
params={'league_id': 'asl_1b1e8572c4cd4cf6a84e860dd0012059', 'season': '2026', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"position": 1,
"team_id": "ast_dbe3d181fa20437fb0b6160396983299",
"team": "Montevideo City",
"played": 12,
"wins": 8,
"draws": 1,
"losses": 3,
"goals_for": 24,
"goals_against": 13,
"goal_difference": 11,
"points": 25,
"form": "WLWLD"
},
{
"position": 2,
"team_id": "ast_abc5ea409b554a69ab8ddd5b9c3b395b",
"team": "Liverpool M.",
"played": 11,
"wins": 7,
"draws": 3,
"losses": 1,
"goals_for": 19,
"goals_against": 8,
"goal_difference": 11,
"points": 24,
"form": "WDWWD"
},
{
"position": 3,
"team_id": "ast_b7a8cab8fa1a4f00bbef19bfc4cb96be",
"team": "Nacional",
"played": 11,
"wins": 7,
"draws": 2,
"losses": 2,
"goals_for": 17,
"goals_against": 11,
"goal_difference": 6,
"points": 23,
"form": "WWWWW"
}
],
"meta": {
"total": 16
}
}https://data.anysport.io/v1/soccer/topscorers?league_id=asl_1b1e8572c4cd4cf6a84e860dd0012059&season=2025&kind=goals&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/topscorers',
headers={'apikey': 'YOUR_API_KEY'},
params={'league_id': 'asl_1b1e8572c4cd4cf6a84e860dd0012059', 'season': '2025', 'kind': 'goals', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"rank": 1,
"player_id": "asp_9a8dd6b4be0842fa8f25c816deb8dfca",
"player_name": "A. Hernandez",
"team_id": "ast_abc5ea409b554a69ab8ddd5b9c3b395b",
"team_name": "Liverpool M.",
"value": 10
},
{
"rank": 2,
"player_id": "asp_d1c203b6871c402084d1fd4280f0d9a9",
"player_name": "N. Lopez",
"team_id": "ast_99065543322d469cb61c4170e0cf27a6",
"team_name": "Nacional",
"value": 9
},
{
"rank": 2,
"player_id": "asp_f40f548407174a09a9740cc9c4514a53",
"player_name": "A. Rodriguez",
"team_id": "ast_f6f4bc4d8c9748758a96daf2f5be9fdf",
"team_name": "Juventud",
"value": 9
}
],
"meta": {
"total": 20
}
}https://data.anysport.io/v1/soccer/teams?league_id=asl_1b1e8572c4cd4cf6a84e860dd0012059&season=2026&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/teams',
headers={'apikey': 'YOUR_API_KEY'},
params={'league_id': 'asl_1b1e8572c4cd4cf6a84e860dd0012059', 'season': '2026', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"team_id": "ast_f114328b14054b7faad9326206df767b",
"name": "Albion",
"country": "Uruguay",
"venue": "Parque Dr. Enrique Falco Lichtemberger"
},
{
"team_id": "ast_1a91500d583b4746a66396631b75c6fa",
"name": "Boston River",
"country": "Uruguay",
"venue": "Estadio Campeones Olímpicos"
},
{
"team_id": "ast_f83331438d794ed99b4c3ca3aaaa046b",
"name": "CA Cerro",
"country": "Uruguay",
"venue": "Estadio Monumental Luis Tróccoli"
}
],
"meta": {
"total": 16
}
}https://data.anysport.io/v1/soccer/odds/live?lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/odds/live',
headers={'apikey': 'YOUR_API_KEY'},
params={'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"match_id": "as_0059673e806d4a0788a0d38a6a72f500",
"home": "ABC",
"away": "Luverdense",
"league": "Brazil Serie D",
"bookmaker": "bet365",
"phase": "live",
"main_market": "fulltime_result",
"main_market_label": "Fulltime Result",
"home_odd": 1.008,
"draw_odd": 26,
"away_odd": 51,
"markets": [
{
"market_code": "home_4th_goal_in_interval",
"market_code_label": "Home 4th Goal in Interval",
"handicap": 80,
"options": [
{
"name": "Yes",
"name_label": "Yes",
"odd": 9
},
{
"name": "No",
"name_label": "No",
"odd": 1.04
}
]
},
{
"market_code": "last_corner",
"market_code_label": "Last Corner",
"options": [
{
"name": "1",
"name_label": "1",
"odd": 1.8
},
{
"name": "2",
"name_label": "2",
"odd": 1.909
}
]
},
{
"market_code": "how_many_goals_will_away_team_score",
"market_code_label": "How many goals will Away Team score?",
"options": [
{
"name": "No goal",
"name_label": "No goal",
"odd": 1.571
},
{
"name": "1",
"name_label": "1",
"odd": 1.142
},
{
"name": "2",
"name_label": "2",
"odd": 5.5
},
{
"name": "3 or more",
"name_label": "3 or more",
"odd": 17
}
]
},
{
"market_code": "asian_handicap",
"market_code_label": "Asian Handicap",
"handicap": -2.25,
"options": [
{
"name": "1",
"name_label": "1",
"odd": 2.5
},
{
"name": "2",
"name_label": "2",
"odd": 1.5
}
]
}
],
"updated_at": "2026-07-26T21:41:43Z"
}
],
"meta": {
"total": 1
}
}https://data.anysport.io/v1/soccer/players?team_id=ast_d00746fec114471880772005ba79dfab&league_id=asl_1b1e8572c4cd4cf6a84e860dd0012059&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/players',
headers={'apikey': 'YOUR_API_KEY'},
params={'team_id': 'ast_d00746fec114471880772005ba79dfab', 'league_id': 'asl_1b1e8572c4cd4cf6a84e860dd0012059', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"player_id": "asp_4bbbf02fb991473b86b6e9bb102c3d0b",
"name": "Agustin Alvarez Wallace",
"position": "M",
"number": "21",
"age": "25",
"team_id": "ast_d00746fec114471880772005ba79dfab",
"team_name": "Racing Montevideo",
"season_stats": {
"league_id": "asl_1b1e8572c4cd4cf6a84e860dd0012059"
}
},
{
"player_id": "asp_c21606648f774a959d5f19607572c8c6",
"name": "Alex Vazquez",
"position": "M",
"number": "39",
"age": "24",
"team_id": "ast_d00746fec114471880772005ba79dfab",
"team_name": "Racing Montevideo",
"season_stats": {
"league_id": "asl_1b1e8572c4cd4cf6a84e860dd0012059"
}
},
{
"player_id": "asp_6bc6a5603df646fb8b52e452ce703477",
"name": "Augusto Scarone",
"position": "A",
"number": "30",
"age": "22",
"team_id": "ast_d00746fec114471880772005ba79dfab",
"team_name": "Racing Montevideo"
}
],
"meta": {
"total": 33
}
}https://data.anysport.io/v1/soccer/odds/prematch?match_id=as_41288ce7c2c1418abf50208879409e37&lang=enimport requests
resp = requests.get(
'https://data.anysport.io/v1/soccer/odds/prematch',
headers={'apikey': 'YOUR_API_KEY'},
params={'match_id': 'as_41288ce7c2c1418abf50208879409e37', 'lang': 'en'}
)
print(resp.json()){
"success": true,
"data": [
{
"match_id": "as_41288ce7c2c1418abf50208879409e37",
"home": "Defensor Sp.",
"away": "CA Cerro",
"league": "Uruguay: Liga Auf Uruguaya - Torneo Intermedio",
"bookmaker": "bet365",
"phase": "prematch",
"main_market": "match_winner",
"main_market_label": "Match Winner",
"home_odd": 1.73,
"draw_odd": 3.1,
"away_odd": 4.5,
"markets": [
{
"market_code": "match_winner",
"market_code_label": "Match Winner",
"options": [
{
"name": "Home",
"name_label": "Home",
"odd": 1.73
},
{
"name": "Draw",
"name_label": "Draw",
"odd": 3.1
},
{
"name": "Away",
"name_label": "Away",
"odd": 4.5
}
]
},
{
"market_code": "home_away",
"market_code_label": "Home/Away",
"options": [
{
"name": "Home",
"name_label": "Home",
"odd": 1.28
},
{
"name": "Away",
"name_label": "Away",
"odd": 3.5
}
]
},
{
"market_code": "2nd_half_winner",
"market_code_label": "2nd Half Winner",
"options": [
{
"name": "Home",
"name_label": "Home",
"odd": 2.2
},
{
"name": "Draw",
"name_label": "Draw",
"odd": 2.25
},
{
"name": "Away",
"name_label": "Away",
"odd": 4.75
}
]
},
{
"market_code": "asian_handicap",
"market_code_label": "Asian Handicap",
"options": [
{
"name": "Home -1.25",
"name_label": "Home -1.25",
"odd": 2.85
},
{
"name": "Away +1.25",
"name_label": "Away +1.25",
"odd": 1.4
},
{
"name": "Home -1",
"name_label": "Home -1",
"odd": 2.5
},
{
"name": "Away +1",
"name_label": "Away +1",
"odd": 1.5
},
{
"name": "Home -0.75",
"name_label": "Home -0.75",
"odd": 2.05
},
{
"name": "Away +0.75",
"name_label": "Away +0.75",
"odd": 1.75
},
{
"name": "Home -0.5",
"name_label": "Home -0.5",
"odd": 1.78
},
{
"name": "Away +0.5",
"name_label": "Away +0.5",
"odd": 2.02
},
{
"name": "Home -0.25",
"name_label": "Home -0.25",
"odd": 1.52
},
{
"name": "Away +0.25",
"name_label": "Away +0.25",
"odd": 2.42
},
{
"name": "Home +0",
"name_label": "Home +0",
"odd": 1.3
},
{
"name": "Away 0",
"name_label": "Away 0",
"odd": 3.45
},
{
"name": "Home +0.25",
"name_label": "Home +0.25",
"odd": 1.23
},
{
"name": "Away -0.25",
"name_label": "Away -0.25",
"odd": 4
},
{
"name": "Home +0.5",
"name_label": "Home +0.5",
"odd": 1.19
},
{
"name": "Away -0.5",
"name_label": "Away -0.5",
"odd": 4.5
},
{
"name": "Home +0.75",
"name_label": "Home +0.75",
"odd": 1.12
},
{
"name": "Away -0.75",
"name_label": "Away -0.75",
"odd": 6.4
},
{
"name": "Home -2",
"name_label": "Home -2",
"odd": 6.4
},
{
"name": "Away +2",
"name_label": "Away +2",
"odd": 1.12
},
{
"name": "Home -1.75",
"name_label": "Home -1.75",
"odd": 4.25
},
{
"name": "Away +1.75",
"name_label": "Away +1.75",
"odd": 1.21
},
{
"name": "Home -1.5",
"name_label": "Home -1.5",
"odd": 3.3
},
{
"name": "Away +1.5",
"name_label": "Away +1.5",
"odd": 1.32
},
{
"name": "Home -2.25",
"name_label": "Home -2.25",
"odd": 7
},
{
"name": "Away +2.25",
"name_label": "Away +2.25",
"odd": 1.1
}
]
}
],
"updated_at": "2026-07-28T14:17:31Z"
}
],
"meta": {
"total": 1
}
}One Request, the Full Uruguay Primera Table
This isn't a screenshot. The standings below are served live from a single GET /standings call — the exact response your app receives. Positions, form, and goal difference update themselves; you never touch a spreadsheet.
| Position | Team | Played | W/D/L | Goals For / Against | Goal Difference | Form |
|---|---|---|---|---|---|---|
| 1 | Montevideo City | 12 | 8/1/3 | 24/13 | 11 | WLWLD |
| 2 | Liverpool M. | 11 | 7/3/1 | 19/8 | 11 | WDWWD |
| 3 | Nacional | 11 | 7/2/2 | 17/11 | 6 | WWWWW |
| 4 | Maldonado | 12 | 6/3/3 | 18/10 | 8 | WLDWW |
| 5 | Penarol | 12 | 6/4/2 | 16/8 | 8 | DLDWD |
| 6 | Progreso | 12 | 6/1/5 | 13/13 | 0 | WWDLW |
| 7 | Juventud | 12 | 4/6/2 | 12/8 | 4 | DLWDD |
| 8 | CA Cerro | 12 | 5/3/4 | 14/17 | -3 | LDWLD |
| 9 | Racing Montevideo | 12 | 4/4/4 | 15/13 | 2 | DWLLL |
| 10 | Boston River | 12 | 4/3/5 | 14/15 | -1 | LWWDL |
| 11 | Wanderers | 12 | 4/3/5 | 13/18 | -5 | LLLWW |
| 12 | Albion | 12 | 4/0/8 | 15/20 | -5 | WWWWL |
| 13 | Danubio | 12 | 2/4/6 | 6/13 | -7 | LWLWL |
| 14 | Cerro Largo | 12 | 1/6/5 | 9/14 | -5 | WDLLL |
| 15 | Defensor Sp. | 12 | 2/3/7 | 14/23 | -9 | DLLLW |
| 16 | Central Esp. | 12 | 1/2/9 | 6/21 | -15 | LLLLL |
Data comes from the AnySport league standing endpoint. Update date: 2026/10/26
Uruguay Primera Season 2026, Quantified
Every figure below is computed from raw match data the API returns — not hand-entered. Build the same dashboards, betting models, or editorial widgets on top of the same numbers.
Last update: 2026/10/26
21 Seasons of Uruguay Primera History, Queryable
Coverage runs back to 2005-2006 — champions and distinct title-holders, every final table archived and addressable by season. Backfill your database once, then keep it current from the same endpoints. This depth is what separates a data provider from a scoreboard.
| Season | Team | Points | Match Record | Goal Statistics |
|---|---|---|---|---|
| 2025 | Penarol | 35 | 15/11/2/2 | 30/12/18 |
| 2024 | Penarol | 41 | 15/13/2/0 | 31/7/24 |
| 2023 | Penarol | 34 | 15/10/4/1 | 25/11/14 |
| 2022 | Liverpool | 32 | 15/10/2/3 | 21/8/13 |
| 2021 | Plaza Colonia | 36 | 15/11/3/1 | 20/7/13 |
| 2020 | Nacional | 28 | 15/7/7/1 | 27/16/11 |
| 2019 | Penarol | 31 | 15/9/4/2 | 27/11/16 |
| 2018 | Nacional | 38 | 15/12/2/1 | 26/8/18 |
| 2017 | Defensor Sporting | 36 | 15/11/3/1 | 25/13/12 |
| 2015-2016 | Penarol | 31 | 15/9/4/2 | 28/17/11 |
| 2014-2015 | Nacional | 42 | 15/14/0/1 | 34/7/27 |
| 2013-2014 | Danubio | 32 | 15/10/2/3 | 24/13/11 |
| 2012-2013 | Penarol | 36 | 15/11/3/1 | 35/13/22 |
| 2011-2012 | Nacional | 32 | 15/9/5/1 | 30/11/19 |
| 2010-2011 | Defensor Sporting | 30 | 15/9/3/3 | 31/13/18 |
| 2009-2010 | Nacional | 36 | 15/13/0/2 | 36/11/25 |
| 2008-2009 | Danubio | 32 | 15/10/2/3 | 27/15/12 |
| 2007-2008 | Defensor Sporting | 35 | 15/11/2/2 | 26/10/16 |
| 2006-2007 | Danubio | 34 | 15/11/1/3 | 36/17/19 |
| 2005-2006 | Rocha | 33 | 17/10/3/4 | 37/25/12 |