Pre-match odds

In the previous sections, you’ve learnt about bookmakers and markets and how to retrieve them via our API. Now, let’s take a look at the odds from those bookmakers and markets.

It’s good to note that we’ve separated pre-match odds from live odds. Interested in live odds? Check our live odds section.

An overview of all the options available to request pre-match odds:

  • GET All Odds: returns all the pre-match odds.

  • GET Odds by Fixture ID: returns the pre-match odds from your requested fixture id.

  • GET Odds by Fixture ID and Bookmaker ID: returns the pre-match odds filtered on bookmaker id from your requested fixture id.

  • GET Odds by Fixture ID and Market ID: returns the pre-match odds filtered on market id from your requested fixture id.

For all the pre-match odds endpoints the base URL is the same:

https://api.sportmonks.com/v3/football/odds/pre-match

Per endpoint the rest of the URL requires additional information. We will explain this per endpoint.

Requesting Odds

GET All Odds

The first option is to request all the odds available in our APIs. With this information, you can determine if the odds you’re interested in are available.

The URL to get all pre-match odds is the same as the base URL for pre-match odds. All you have to do is authorize the request with your API token. Check our authentication section for more info.

https://api.sportmonks.com/v3/football/odds/pre-match?api_token=YOUR_TOKEN
Response
{
  "data": [
    {
      "id": 1,
      "fixture_id": 18533878,
      "market_id": 1,
      "bookmaker_id": 34,
      "label": "Home",
      "value": "1.48",
      "name": "Home",
      "sort_order": null,
      "market_description": "Match Winner",
      "probability": "67.57%",
      "dp3": "1.480",
      "fractional": "37/25",
      "american": "-209",
      "winning": false,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2023-01-11T14:40:25.000000Z",
      "updated_at": "2023-01-11T14:47:50.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2023-01-11 14:40:25"
    },
    {
      "id": 2,
      "fixture_id": 18533878,
      "market_id": 80,
      "bookmaker_id": 34,
      "label": "Over",
      "value": "1.85",
      "name": "Over",
      "sort_order": null,
      "market_description": "Goals Over/Under",
      "probability": "54.05%",
      "dp3": "1.850",
      "fractional": "37/20",
      "american": "-118",
      "winning": false,
      "stopped": false,
      "total": "2.75",
      "handicap": null,
      "participants": null,
      "created_at": "2023-01-11T14:40:25.000000Z",
      "updated_at": "2023-01-11T14:43:44.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2023-01-11 14:40:25"
    },
    //And more

Let’s take a look together at the key values the API returns:

  • id: the unique id of the odd

  • fixture_id: the unique fixture id the odd is available for

  • market_id: the unique id of the market the odd belongs to

  • bookmaker_id: the unique id of the bookmaker who offers the odd

  • label: the label name of the odd

  • value: the odd value

  • name: the name of the odd

  • sort_order: n/a

  • market_description: the description of the market the odd belongs to

Now you’ve gathered an overview of the available pre-match odds. You can also retrieve the odds for only a specific fixture.

GET Pre-match Odds by Fixture ID

A lot of our customers are not interested in all odds, but only in odds of a specific fixture. This endpoint is perfectly suited for this. The only thing you’ve to do is parse the fixture_id you want the odds for:

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/{fixture_id}

For example, if you’re interested in the pre-match odds available for Celtic vs Rangers (fixture id: 18535517)

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/18535517?api_token=YOUR_TOKEN
Response
{
  "data": [
    {
      "id": 532896946,
      "fixture_id": 18535517,
      "market_id": 2,
      "bookmaker_id": 1,
      "label": "12",
      "value": "1.28",
      "name": "12",
      "sort_order": null,
      "market_description": "Double Chance",
      "probability": "78.13%",
      "dp3": "1.280",
      "fractional": "32/25",
      "american": "-358",
      "winning": true,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2022-08-29T13:09:23.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:17:01"
    },
    {
      "id": 532896944,
      "fixture_id": 18535517,
      "market_id": 2,
      "bookmaker_id": 1,
      "label": "1X",
      "value": "1.22",
      "name": "1X",
      "sort_order": null,
      "market_description": "Double Chance",
      "probability": "81.97%",
      "dp3": "1.220",
      "fractional": "50/41",
      "american": "-455",
      "winning": true,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2022-08-29T13:09:23.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:17:01"
    },
    //And more

GET Pre-match Odds by Fixture ID and Bookmaker ID

As you might have noticed in the previous example, requesting all the pre-match odds for a single fixture is quite a big response. Maybe you’re only interested in the odds of a specific fixture from a single bookmaker?

This endpoint is perfectly suited for this. The only thing you’ve to do is parse the fixture_id and bookmaker_id you want the odds for:

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/{fixture_id}/bookmakers/{bookmaker_id}

For example, if you’re interested in the pre-match odds from bet365 (id: 2) available for Celtic vs Rangers (fixture id: 18535517)

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/18535517/bookmakers/2?api_token=YOUR_TOKEN
Response
{
  "data": [
    {
      "id": 532890929,
      "fixture_id": 18535517,
      "market_id": 1,
      "bookmaker_id": 2,
      "label": "1",
      "value": "1.75",
      "name": "1",
      "sort_order": null,
      "market_description": "Fulltime Result",
      "probability": "57.14%",
      "dp3": "1.750",
      "fractional": "7/4",
      "american": "-134",
      "winning": true,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": "53",
      "created_at": "2022-08-28T07:14:02.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:18:13"
    },
    {
      "id": 532890934,
      "fixture_id": 18535517,
      "market_id": 1,
      "bookmaker_id": 2,
      "label": "X",
      "value": "3.80",
      "name": "X",
      "sort_order": null,
      "market_description": "Fulltime Result",
      "probability": "26.32%",
      "dp3": "3.800",
      "fractional": "19/5",
      "american": "280",
      "winning": false,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2022-08-28T07:14:02.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:18:13"
    },
    //And more

GET Pre-match Odds by Fixture ID and Market ID

You can also request all the pre-match odds from a specific market and a specific fixture. The only thing you’ve to do is parse the fixture_id and market_id you want the odds for:

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/{fixture_id}/markets/{market_id}

For example, if you’re interested in the pre-match odds from the BTTS market (id: 14) available for Celtic vs Rangers (fixture id: 18535517)

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/18535517/markets/14?api_token=YOUR_TOKEN
Response
{
  "data": [
    {
      "id": 532896804,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 1,
      "label": "No",
      "value": "2.20",
      "name": "No",
      "sort_order": null,
      "market_description": "Both Teams To Score",
      "probability": "45.45%",
      "dp3": "2.200",
      "fractional": "11/5",
      "american": "120",
      "winning": true,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2022-08-29T13:09:23.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:16:59"
    },
    {
      "id": 532896802,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 1,
      "label": "Yes",
      "value": "1.60",
      "name": "Yes",
      "sort_order": null,
      "market_description": "Both Teams To Score",
      "probability": "62.5%",
      "dp3": "1.600",
      "fractional": "8/5",
      "american": "-167",
      "winning": false,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2022-08-29T13:09:23.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:16:59"
    },
    //And more

Adding useful information

As you’ve learnt in the includes tutorial, you can enrich your request with includes. This section will discuss some of the most common requests used on the odds endpoints.

First of all, you can find a list of all available includes on the endpoint pages. For the odds, there are only 3 includes available:

  • market: includes the market information the oddd belongs to.

  • bookmaker: includes the bookmaker information of the bookmaker that offers the odd.

  • fixture: includes the fixture information the odds is available for.

For example, if you’re interested in the pre-match odds available for Celtic vs Rangers (fixture id: 18535517) with the name of the bookmakers, markets and fixture info.

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/18535517?api_token=YOUR_TOKEN&include=bookmaker;market;fixture
Response
{
  "data": [
    {
      "id": 532896804,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 1,
      "label": "No",
      "value": "2.20",
      "name": "No",
      "sort_order": null,
      "market_description": "Both Teams To Score",
      "probability": "45.45%",
      "dp3": "2.200",
      "fractional": "11/5",
      "american": "120",
      "winning": true,
      "stopped": false,
      "total": null,
      "handicap": null,
      "participants": null,
      "created_at": "2022-08-29T13:09:23.000000Z",
      "updated_at": "2023-01-11T22:50:55.000000Z",
      "original_label": null,
      "latest_bookmaker_update": "2022-09-03 11:16:59",
      "bookmaker": {
        "id": 1,
        "legacy_id": 1,
        "name": "10Bet"
      },
      "market": {
        "id": 14,
        "legacy_id": 976105,
        "name": "Both Teams To Score",
        "developer_name": "BOTH_TEAMS_TO_SCORE",
        "has_winning_calculations": true
      },
      "fixture": {
        "id": 18535517,
        "sport_id": 1,
        "league_id": 501,
        "season_id": 19735,
        "stage_id": 77457866,
        "group_id": null,
        "aggregate_id": null,
        "round_id": 274719,
        "state_id": 5,
        "venue_id": 8909,
        "name": "Celtic vs Rangers",
        "starting_at": "2022-09-03 11:30:00",
        "result_info": "Celtic won after full-time.",
        "leg": "1/1",
        "details": null,
        "length": 90,
        "placeholder": false,
        "last_processed_at": "2023-03-02 17:47:38",
        "has_odds": true,
        "starting_at_timestamp": 1662204600
      }
    },
    //And more

Selecting and filtering

In our filtering tutorial you’ve learnt how to select specific fields or filter only on the data you’re interested in. Our API returns a set of data related to the odd by default. We can imagine you’re not interested in all the odds data the API returns. Let’s say you’re only interested in the market description and value.

We’re going to use the GET Pre-match Odd by Fixture ID endpoint for this example.

You can add the &select= parameter followed by the fields you want. In our case: market_description,value. This results in the below request and response:

https://api.sportmonks.com/v3/football/odds/pre-match/fixtures/18535517?api_token=YOUR_TOKEN&select=market_description,value
Response
{
  "data": [
    {
      "market_description": "Both Teams To Score",
      "value": "2.20",
      "id": 532896804,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 1
    },
    {
      "market_description": "Both Teams To Score",
      "value": "1.60",
      "id": 532896802,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 1
    },
    {
      "market_description": "Both Teams To Score",
      "value": "2.28",
      "id": 532897895,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 5
    },
    {
      "market_description": "Both Teams To Score",
      "value": "1.58",
      "id": 532897893,
      "fixture_id": 18535517,
      "market_id": 14,
      "bookmaker_id": 5
    },
    //And more

Check our filtering tutorial for more tips and tricks.

Last updated