NAV
shell javascript python

SERIE A API

Welcome to the BALLDONTLIE SERIE A API. This API contains data from 2010-current. An API key is required. You can obtain an API key by creating a free account on our website. Read the authentication section to learn how to use the API key.

Take a look at our other APIs.

Join us on discord.

AI-Powered Integration

Using the OpenAPI Specification with AI

Our complete OpenAPI specification allows AI assistants to automatically understand and interact with our API. Simply share the spec URL with your AI assistant and describe what you want to build—the AI will handle the technical implementation.

Getting Started with AI:

  1. Copy this URL: https://www.balldontlie.io/openapi.yml
  2. Share it with your preferred AI assistant (ChatGPT, Claude, Gemini, etc.)
  3. Tell the AI what you want to build (e.g., "Create a dashboard showing this week's Serie A matches")
  4. The AI will read the OpenAPI spec and write the code for you

Example prompts to try:

This makes it incredibly easy for non-technical users, analysts, and researchers to leverage our sports data without needing to learn programming from scratch.

Account Tiers

There are three different account tiers which provide you access to different types of data. Visit our website to create an account for free.

Paid tiers do not apply across sports. The tier you purchase for Serie A will not automatically be applied to other sports. You can purchase the ALL-ACCESS ($159.99/mo) tier to get access to every endpoint for every sport.

Read the table below to see the breakdown.

Endpoint Free ALL-STAR GOAT
Teams Yes Yes Yes
Rosters Yes Yes Yes
Players Yes Yes Yes
Standings Yes Yes Yes
Matches No Yes Yes
Match Events No Yes Yes
Match Lineups No Yes Yes
Player Match Stats No No Yes
Team Match Stats No No Yes
Betting Odds No No Yes
Player Props No No Yes

The feature breakdown per tier is shown in the table below.

Tier Requests / Min $USD / mo.
GOAT 600 39.99
ALL-STAR 60 9.99
Free 5 0

Authentication

To authorize, use this code:

curl "api_endpoint_here" -H "Authorization: YOUR_API_KEY"
const response = await fetch("api_endpoint_here", {
  headers: {
    "Authorization": "YOUR_API_KEY"
  }
});
const data = await response.json();
import requests

response = requests.get(
    "api_endpoint_here",
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

Make sure to replace YOUR_API_KEY with your API key.

BALLDONTLIE uses API keys to allow access to the API. You can obtain an API key by creating a free account at our website

We expect the API key to be included in all API requests to the server in a header that looks like the following:

Authorization: YOUR_API_KEY

Pagination

This API uses cursor based pagination rather than limit/offset. Endpoints that support pagination will send back responses with a meta key that looks like what is displayed on the right.

{
  "meta": {
    "next_cursor": 90,
    "per_page": 25
  }
}

You can use per_page to specify the maximum number of results. It defaults to 25 and doesn't allow values larger than 100.

You can use next_cursor to get the next page of results. Specify it in the request parameters like this: ?cursor=NEXT_CURSOR.

Errors

The API uses the following error codes:

Error Code Meaning
401 Unauthorized - You either need an API key or your account tier does not have access to the endpoint.
400 Bad Request -- The request is invalid. The request parameters are probably incorrect.
404 Not Found -- The specified resource could not be found.
406 Not Acceptable -- You requested a format that isn't json.
429 Too Many Requests -- You're rate limited.
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.

Teams

Get All Teams

curl "https://api.balldontlie.io/seriea/v1/teams" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/teams",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/teams",
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 95,
      "name": "Internazionale",
      "short_name": "Inter Milan",
      "abbreviation": "INT",
      "location": "Internazionale"
    },
    {
      "id": 2861,
      "name": "AC Milan",
      "short_name": "Milan",
      "abbreviation": "MIL",
      "location": "AC Milan"
    },
    {
      "id": 101,
      "name": "Napoli",
      "short_name": "Napoli",
      "abbreviation": "NAP",
      "location": "Napoli"
    },
    {
      "id": 96,
      "name": "Juventus",
      "short_name": "Juventus",
      "abbreviation": "JUV",
      "location": "Juventus"
    },
    ...
  ]
}

This endpoint retrieves all Serie A teams.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/teams

Rosters

Get Team Roster

curl "https://api.balldontlie.io/seriea/v1/rosters?team_id=95" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/rosters?team_id=95",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/rosters",
    params={"team_id": 95},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "team_id": 95,
      "player": {
        "id": 3087,
        "first_name": "Alessandro",
        "last_name": "Bastoni",
        "display_name": "Alessandro Bastoni",
        "short_name": "A Bastoni",
        "date_of_birth": "1999-04-13",
        "age": 26,
        "height": "6' 3\"",
        "weight": "163 lbs",
        "citizenship": "Italy"
      },
      "season": 2025,
      "jersey_number": "95",
      "position": "Defender",
      "position_abbreviation": "D",
      "is_active": true
    },
    {
      "team_id": 95,
      "player": {
        "id": 3097,
        "first_name": "Denzel",
        "last_name": "Dumfries",
        "display_name": "Denzel Dumfries",
        "short_name": "D Dumfries",
        "date_of_birth": "1996-04-18",
        "age": 29,
        "height": "6' 2\"",
        "weight": "174 lbs",
        "citizenship": "Netherlands"
      },
      "season": 2025,
      "jersey_number": "2",
      "position": "Defender",
      "position_abbreviation": "D",
      "is_active": true
    },
    ...
  ]
}

This endpoint retrieves the roster for a specific team.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/rosters

Query Parameters

Parameter Required Description
team_id true The ID of the team to get roster for
season false Filter by season year

Players

Get All Players

curl "https://api.balldontlie.io/seriea/v1/players?per_page=5" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/players?per_page=5",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/players",
    params={"per_page": 5},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 101,
      "first_name": "Aaron",
      "last_name": "Hickey",
      "display_name": "Aaron Hickey",
      "short_name": "A Hickey",
      "date_of_birth": "2002-06-10",
      "age": 23,
      "height": "5' 10\"",
      "weight": "159 lbs",
      "citizenship": "Scotland",
      "team_ids": [2869]
    },
    {
      "id": 7139,
      "first_name": "Aaron",
      "last_name": "Martin",
      "display_name": "Aaron Martin",
      "short_name": "A Martin",
      "date_of_birth": "1997-04-22",
      "age": 28,
      "height": "5' 11\"",
      "weight": "159 lbs",
      "citizenship": "Spain",
      "team_ids": [37700]
    },
    ...
  ],
  "meta": {
    "next_cursor": 40444,
    "per_page": 5
  }
}

This endpoint retrieves all players.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/players

Query Parameters

Parameter Required Description
cursor false The cursor for pagination
per_page false Number of results per page (max 100)
team_ids false Filter by team IDs (array)
player_ids false Filter by player IDs (array)
search false Search by player name
first_name false Filter by first name
last_name false Filter by last name

Standings

Get Standings

curl "https://api.balldontlie.io/seriea/v1/standings" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/standings",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/standings",
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "team": {
        "id": 95,
        "name": "Internazionale",
        "short_name": "Inter Milan",
        "abbreviation": "INT",
        "location": "Internazionale"
      },
      "season": 2025,
      "rank": 1,
      "rank_change": 0,
      "group_name": "2025-2026 Italian Serie A",
      "note": "Champions League",
      "games_played": 15,
      "wins": 11,
      "losses": 4,
      "draws": 0,
      "points": 33,
      "goals_for": 34,
      "goals_against": 14,
      "goal_differential": 20,
      "points_per_game": null
    },
    {
      "team": {
        "id": 2861,
        "name": "AC Milan",
        "short_name": "Milan",
        "abbreviation": "MIL",
        "location": "AC Milan"
      },
      "season": 2025,
      "rank": 2,
      "rank_change": 0,
      "group_name": "2025-2026 Italian Serie A",
      "note": "Champions League",
      "games_played": 15,
      "wins": 9,
      "losses": 1,
      "draws": 5,
      "points": 32,
      "goals_for": 24,
      "goals_against": 13,
      "goal_differential": 11,
      "points_per_game": null
    },
    {
      "team": {
        "id": 101,
        "name": "Napoli",
        "short_name": "Napoli",
        "abbreviation": "NAP",
        "location": "Napoli"
      },
      "season": 2025,
      "rank": 3,
      "rank_change": 0,
      "group_name": "2025-2026 Italian Serie A",
      "note": "Champions League",
      "games_played": 15,
      "wins": 10,
      "losses": 4,
      "draws": 1,
      "points": 31,
      "goals_for": 22,
      "goals_against": 13,
      "goal_differential": 9,
      "points_per_game": null
    },
    ...
  ]
}

This endpoint retrieves the current standings.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/standings

Query Parameters

Parameter Required Description
season false Filter by season

Matches

Get All Matches

curl "https://api.balldontlie.io/seriea/v1/matches?per_page=5" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/matches?per_page=5",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/matches",
    params={"per_page": 5},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 50846,
      "season": 2025,
      "home_team_id": 37700,
      "away_team_id": 80,
      "date": "2025-12-21T19:45:00.000Z",
      "name": "Atalanta at Genoa",
      "short_name": "ATA @ GEN",
      "status": "STATUS_FULL_TIME",
      "status_detail": "FT",
      "home_score": 0,
      "away_score": 1,
      "venue_name": "Stadio Luigi Ferraris",
      "venue_city": "Genova",
      "attendance": 0
    },
    {
      "id": 50843,
      "season": 2025,
      "home_team_id": 37699,
      "away_team_id": 37711,
      "date": "2025-12-21T17:00:00.000Z",
      "name": "Udinese at Fiorentina",
      "short_name": "UDI @ FIO",
      "status": "STATUS_FULL_TIME",
      "status_detail": "FT",
      "home_score": 5,
      "away_score": 1,
      "venue_name": "Stadio Artemio Franchi",
      "venue_city": "Firenze",
      "attendance": 18405
    },
    ...
  ],
  "meta": {
    "next_cursor": 50838,
    "per_page": 5
  }
}

This endpoint retrieves all matches.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/matches

Query Parameters

Parameter Required Description
cursor false The cursor for pagination
per_page false Number of results per page (max 100)
seasons false Filter by seasons (array)
team_ids false Filter by team IDs (array)
start_date false Filter matches on or after this date
end_date false Filter matches on or before this date
dates false Filter by specific dates (array)

Match Events

Get Match Events

curl "https://api.balldontlie.io/seriea/v1/match_events?match_ids[]=50846" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/match_events?match_ids[]=50846",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/match_events",
    params={"match_ids[]": 50846},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 380775,
      "match_id": 50846,
      "team_id": 37700,
      "event_type": "red_card",
      "event_time": 3,
      "period": 1,
      "player": {
        "id": 33369,
        "first_name": "Nicola",
        "last_name": "Leali",
        "display_name": "Nicola Leali",
        "short_name": "N Leali",
        "date_of_birth": "1993-02-17",
        "age": 32,
        "height": "6' 5\"",
        "weight": "174 lbs",
        "citizenship": "Italy"
      },
      "secondary_player": null,
      "goal_type": null,
      "is_own_goal": false
    },
    {
      "id": 380776,
      "match_id": 50846,
      "team_id": 37700,
      "event_type": "substitution",
      "event_time": 5,
      "period": 1,
      "player": {
        "id": 42458,
        "first_name": "Daniele",
        "last_name": "Sommariva",
        "display_name": "Daniele Sommariva",
        "short_name": "D Sommariva",
        "date_of_birth": "1997-07-18",
        "age": 28,
        "height": "6' 1\"",
        "weight": "168 lbs",
        "citizenship": "Italy"
      },
      "secondary_player": null,
      "goal_type": null,
      "is_own_goal": false
    },
    {
      "id": 380778,
      "match_id": 50846,
      "team_id": 80,
      "event_type": "yellow_card",
      "event_time": 60,
      "period": 2,
      "player": {
        "id": 3188,
        "first_name": "Lazar",
        "last_name": "Samardzic",
        "display_name": "Lazar Samardzic",
        "short_name": "L Samardzic",
        "date_of_birth": "2002-02-24",
        "age": 23,
        "height": "6' 0\"",
        "weight": "152 lbs",
        "citizenship": "Serbia"
      },
      "secondary_player": null,
      "goal_type": null,
      "is_own_goal": false
    },
    ...
  ]
}

This endpoint retrieves events (goals, cards, substitutions) for specific matches.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/match_events

Query Parameters

Parameter Required Description
match_ids true Array of match IDs to get events for
cursor false The cursor for pagination
per_page false Number of results per page (max 100)

Match Lineups

Get Match Lineups

curl "https://api.balldontlie.io/seriea/v1/match_lineups?match_ids[]=50846" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/match_lineups?match_ids[]=50846",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/match_lineups",
    params={"match_ids[]": 50846},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "match_id": 50846,
      "team_id": 80,
      "player": {
        "id": 3177,
        "first_name": "Charles",
        "last_name": "De Ketelaere",
        "display_name": "Charles De Ketelaere",
        "short_name": "C De Ketelaere",
        "date_of_birth": "2001-03-10",
        "age": 24,
        "height": "6' 4\"",
        "weight": "161 lbs",
        "citizenship": "Belgium"
      },
      "is_starter": true,
      "position": "Center Right Forward",
      "position_abbreviation": "CF-R",
      "formation_position": "10",
      "jersey_number": null
    },
    {
      "match_id": 50846,
      "team_id": 80,
      "player": {
        "id": 6148,
        "first_name": "Daniel",
        "last_name": "Maldini",
        "display_name": "Daniel Maldini",
        "short_name": "D Maldini",
        "date_of_birth": "2001-10-11",
        "age": 24,
        "height": "6' 2\"",
        "weight": "183 lbs",
        "citizenship": "Italy"
      },
      "is_starter": true,
      "position": "Center Left Forward",
      "position_abbreviation": "CF-L",
      "formation_position": "11",
      "jersey_number": null
    },
    {
      "match_id": 50846,
      "team_id": 80,
      "player": {
        "id": 6231,
        "first_name": "Gianluca",
        "last_name": "Scamacca",
        "display_name": "Gianluca Scamacca",
        "short_name": "G Scamacca",
        "date_of_birth": "1999-01-01",
        "age": 26,
        "height": "6' 5\"",
        "weight": "185 lbs",
        "citizenship": "Italy"
      },
      "is_starter": true,
      "position": "Forward",
      "position_abbreviation": "F",
      "formation_position": "9",
      "jersey_number": null
    },
    ...
  ]
}

This endpoint retrieves the lineups for specific matches.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/match_lineups

Query Parameters

Parameter Required Description
match_ids true Array of match IDs to get lineups for
cursor false The cursor for pagination
per_page false Number of results per page (max 100)

Player Match Stats

Get Player Match Stats

curl "https://api.balldontlie.io/seriea/v1/player_match_stats?match_ids[]=50846" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/player_match_stats?match_ids[]=50846",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/player_match_stats",
    params={"match_ids[]": 50846},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "match_id": 50846,
      "player_id": 3177,
      "team_id": 80,
      "appearances": 1,
      "goals": 0,
      "assists": 0,
      "shots_total": 2,
      "shots_on_target": 1,
      "fouls_committed": 1,
      "fouls_suffered": null,
      "offsides": null,
      "saves": null,
      "yellow_cards": 0,
      "red_cards": 0,
      "own_goals": 0
    },
    {
      "match_id": 50846,
      "player_id": 3171,
      "team_id": 80,
      "appearances": 1,
      "goals": 0,
      "assists": 0,
      "shots_total": 4,
      "shots_on_target": 1,
      "fouls_committed": 5,
      "fouls_suffered": null,
      "offsides": null,
      "saves": null,
      "yellow_cards": 0,
      "red_cards": 0,
      "own_goals": 0
    },
    ...
  ],
  "meta": {
    "per_page": 25
  }
}

This endpoint retrieves player statistics for specific matches.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/player_match_stats

Query Parameters

Parameter Required Description
match_ids true Array of match IDs to get stats for
cursor false The cursor for pagination
per_page false Number of results per page (max 100)

Team Match Stats

Get Team Match Stats

curl "https://api.balldontlie.io/seriea/v1/team_match_stats?match_ids[]=50846" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/team_match_stats?match_ids[]=50846",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/team_match_stats",
    params={"match_ids[]": 50846},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "match_id": 50846,
      "team_id": 80,
      "possession_pct": 70.7,
      "shots": 16,
      "shots_on_target": 4,
      "fouls": 19,
      "yellow_cards": 2,
      "red_cards": 0,
      "corners": null,
      "passes": 542,
      "pass_accuracy_pct": null
    },
    {
      "match_id": 50846,
      "team_id": 37700,
      "possession_pct": 29.3,
      "shots": 6,
      "shots_on_target": 3,
      "fouls": 11,
      "yellow_cards": 1,
      "red_cards": 1,
      "corners": null,
      "passes": 220,
      "pass_accuracy_pct": null
    }
  ],
  "meta": {
    "per_page": 25
  }
}

This endpoint retrieves team statistics for specific matches.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/team_match_stats

Query Parameters

Parameter Required Description
match_ids true Array of match IDs to get stats for
cursor false The cursor for pagination
per_page false Number of results per page (max 100)

Betting Odds

Get Betting Odds

curl "https://api.balldontlie.io/seriea/v1/odds?per_page=5" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/odds?per_page=5",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/odds",
    params={"per_page": 5},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 40975315,
      "match_id": 50833,
      "vendor": "caesars",
      "moneyline_home_odds": -260,
      "moneyline_away_odds": 750,
      "moneyline_draw_odds": 360,
      "updated_at": "2025-12-23T16:24:00.707Z"
    },
    {
      "id": 40969234,
      "match_id": 50833,
      "vendor": "draftkings",
      "moneyline_home_odds": -285,
      "moneyline_away_odds": 650,
      "moneyline_draw_odds": 350,
      "updated_at": "2025-12-23T16:24:01.263Z"
    },
    {
      "id": 40802517,
      "match_id": 50833,
      "vendor": "fanduel",
      "moneyline_home_odds": -310,
      "moneyline_away_odds": 700,
      "moneyline_draw_odds": 380,
      "updated_at": "2025-12-23T16:24:00.697Z"
    },
    ...
  ],
  "meta": {
    "next_cursor": 40969229,
    "per_page": 5
  }
}

This endpoint retrieves betting odds for Serie A matches. Odds include moneyline odds for home, away, and draw outcomes.

HTTP Request

GET https://api.balldontlie.io/seriea/v1/odds

Query Parameters

Parameter Required Description
cursor false The cursor for pagination
per_page false Number of results per page (max 100)
match_ids false Filter by match IDs (array)

Player Props

The Player Props API provides real-time player prop betting odds for Serie A matches. Player props allow betting on individual player performances such as goals, assists, shots on target, saves, and more.

Market Types

The API supports two market types:

Get Player Props

curl "https://api.balldontlie.io/seriea/v1/odds/player_props?match_id=50833" \
  -H "Authorization: YOUR_API_KEY"
const response = await fetch(
  "https://api.balldontlie.io/seriea/v1/odds/player_props?match_id=50833",
  {
    headers: { "Authorization": "YOUR_API_KEY" }
  }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.balldontlie.io/seriea/v1/odds/player_props",
    params={"match_id": 50833},
    headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 1175899917,
      "match_id": 50833,
      "player_id": 152,
      "vendor": "caesars",
      "prop_type": "anytime_goal",
      "line_value": "3",
      "market": {
        "type": "milestone",
        "odds": 50000
      },
      "updated_at": "2025-12-23T16:24:14.598Z"
    },
    {
      "id": 1175899882,
      "match_id": 50833,
      "player_id": 152,
      "vendor": "caesars",
      "prop_type": "anytime_goal",
      "line_value": "2",
      "market": {
        "type": "milestone",
        "odds": 10000
      },
      "updated_at": "2025-12-23T16:24:14.598Z"
    },
    {
      "id": 1175899845,
      "match_id": 50833,
      "player_id": 152,
      "vendor": "caesars",
      "prop_type": "anytime_goal",
      "line_value": "1",
      "market": {
        "type": "milestone",
        "odds": 900
      },
      "updated_at": "2025-12-23T16:24:14.598Z"
    },
    ...
  ]
}

This endpoint retrieves player prop betting odds for a specific Serie A match. The match_id parameter is required.

Available Vendors:

HTTP Request

GET https://api.balldontlie.io/seriea/v1/odds/player_props

Query Parameters

Parameter Required Description
match_id true The match ID to retrieve player props for
player_id false Filter props for a specific player
prop_type false Filter by prop type. See supported prop types below.
vendors false Filter by specific sportsbook vendors. This should be an array: ?vendors[]=draftkings&vendors[]=fanduel

Supported Prop Types

The following prop_type values are supported:

Prop Type Description
anytime_goal Score a goal anytime in match
assists Total assists
first_goal Score the first goal of match
first_half_goal Score a goal in the first half
goals_assists Combined goals and assists
header_goal Score a goal with a header
last_goal Score the last goal of match
outside_box_goal Score from outside the box
saves Total saves (goalkeepers)
second_half_goal Score a goal in the second half
shots Total shots
shots_on_target Total shots on target
tackles Total tackles

Note: The actual prop types available may vary by match and sportsbook vendor.