Sisal Data API

Sisal API for Italian Pre-Match, Live & Racing Data

Access Sisal's Italian sportsbook through one API — Serie A, B and C, the Premier League, La Liga, the Bundesliga, Ligue 1 and the Champions, Europa and Conference League, the Brasileirão and MLS, the Euroleague, the NHL and the European ice hockey leagues, ATP and WTA tennis and more across 16 sports, plus horse racing and Italian, French and Swedish trotting. Every market carries a canonical type, every selection a decimal price and nearly every event a Betradar match ID, and the matchday boards run to hundreds of markets. REST and WebSocket, one API key.

What a Sisal API Response Looks Like

GET /api/sisal/soccer/events/36421-7210
{
  "data": {
    "eventId": "36421-7210",
    "away": "Paris Saint-Germain",
    "country": "INT",
    "home": "Manchester City",
    "league": "Champions League",
    "live": false,
    "markets": [
      {
        "canonicalMarket": "MATCH_RESULT",
        "rawName": "1X2 ESITO FINALE | ESITO FINALE 1X2",
        "period": "FULL_TIME",
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "HOME",
            "rawName": "1",
            "odds": 2.1,
            "rawOdds": "2.10",
            "isActive": true,
            "selectionId": "5317172510"
          },
          {
            "canonicalOutcome": "DRAW",
            "rawName": "X",
            "odds": 4,
            "rawOdds": "4.00",
            "isActive": true,
            "selectionId": "5317172511"
          },
          {
            "canonicalOutcome": "AWAY",
            "rawName": "2",
            "odds": 2.9,
            "rawOdds": "2.90",
            "isActive": true,
            "selectionId": "5317172512"
          }
        ],
        "marketId": "36421-7210-3-0",
        "moreInfo": {
          "cs": 3,
          "ia": 0,
          "sisalMarketId": "810826340"
        }
      },
      {
        "canonicalMarket": "DOUBLE_CHANCE",
        "rawName": "DOPPIA CHANCE | DOPPIA CHANCE MULTIESITI",
        "period": "FULL_TIME",
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "HOME_DRAW",
            "rawName": "1X",
            "odds": 1.36,
            "rawOdds": "1.36",
            "isActive": true,
            "selectionId": "5317174784"
          },
          {
            "canonicalOutcome": "HOME_AWAY",
            "rawName": "12",
            "odds": 1.22,
            "rawOdds": "1.22",
            "isActive": true,
            "selectionId": "5317174785"
          },
          {
            "canonicalOutcome": "DRAW_AWAY",
            "rawName": "X2",
            "odds": 1.67,
            "rawOdds": "1.67",
            "isActive": true,
            "selectionId": "5317174786"
          }
        ],
        "marketId": "36421-7210-28319-0",
        "moreInfo": {
          "cs": 28319,
          "ia": 0,
          "sisalMarketId": "810826837"
        }
      },
      {
        "canonicalMarket": "OVER_UNDER",
        "rawName": "UNDER/OVER | U/O 2.5",
        "period": "FULL_TIME",
        "line": 2.5,
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "UNDER",
            "rawName": "UNDER",
            "odds": 2.75,
            "rawOdds": "2.75",
            "isActive": true,
            "selectionId": "5317174764",
            "line": 2.5
          },
          {
            "canonicalOutcome": "OVER",
            "rawName": "OVER",
            "odds": 1.4,
            "rawOdds": "1.40",
            "isActive": true,
            "selectionId": "5317174765",
            "line": 2.5
          }
        ],
        "marketId": "36421-7210-7989-250",
        "moreInfo": {
          "cs": 7989,
          "ia": 250,
          "sisalMarketId": "810826832"
        }
      },
      {
        "canonicalMarket": "OVER_UNDER",
        "rawName": "U/O SOMMA GOAL ASIATICO | U/O 3 AH",
        "period": "FULL_TIME",
        "line": 3,
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "UNDER",
            "rawName": "UNDER",
            "odds": 2.2,
            "rawOdds": "2.20",
            "isActive": true,
            "selectionId": "5317240685",
            "line": 3
          },
          {
            "canonicalOutcome": "OVER",
            "rawName": "OVER",
            "odds": 1.57,
            "rawOdds": "1.57",
            "isActive": true,
            "selectionId": "5317240686",
            "line": 3
          }
        ],
        "marketId": "36421-7210-20247-300",
        "moreInfo": {
          "cs": 20247,
          "ia": 300,
          "sisalMarketId": "810835544"
        }
      },
      {
        "canonicalMarket": "EUROPEAN_HANDICAP",
        "rawName": "1X2 HANDICAP | 1X2 HANDICAP: INIZIA DA 0-1",
        "period": "FULL_TIME",
        "line": -1,
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "HOME",
            "rawName": "1",
            "odds": 3.5,
            "rawOdds": "3.50",
            "isActive": true,
            "selectionId": "5317172570",
            "line": -1
          },
          {
            "canonicalOutcome": "DRAW",
            "rawName": "X",
            "odds": 4,
            "rawOdds": "4.00",
            "isActive": true,
            "selectionId": "5317172571",
            "line": -1
          },
          {
            "canonicalOutcome": "AWAY",
            "rawName": "2",
            "odds": 1.65,
            "rawOdds": "1.65",
            "isActive": true,
            "selectionId": "5317172572",
            "line": -1
          }
        ],
        "marketId": "36421-7210-8-100",
        "moreInfo": {
          "cs": 8,
          "ia": 100,
          "sisalMarketId": "810826349"
        }
      },
      {
        "canonicalMarket": "BOTH_TEAMS_TO_SCORE",
        "rawName": "GOAL/NOGOAL | GOAL/NO GOAL",
        "period": "FULL_TIME",
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "YES",
            "rawName": "GOAL",
            "odds": 1.4,
            "rawOdds": "1.40",
            "isActive": true,
            "selectionId": "5317172624"
          },
          {
            "canonicalOutcome": "NO",
            "rawName": "NOGOAL",
            "odds": 2.9,
            "rawOdds": "2.90",
            "isActive": true,
            "selectionId": "5317172625"
          }
        ],
        "marketId": "36421-7210-18-0",
        "moreInfo": {
          "cs": 18,
          "ia": 0,
          "sisalMarketId": "810826359"
        }
      },
      {
        "canonicalMarket": "CORNERS_OVER_UNDER",
        "rawName": "U/O CORNER | U/O 9.5 CORNER",
        "period": "FULL_TIME",
        "line": 9.5,
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "UNDER",
            "rawName": "UNDER",
            "odds": 1.62,
            "rawOdds": "1.62",
            "isActive": true,
            "selectionId": "5379068482",
            "line": 9.5
          },
          {
            "canonicalOutcome": "OVER",
            "rawName": "OVER",
            "odds": 2.1,
            "rawOdds": "2.10",
            "isActive": true,
            "selectionId": "5379068483",
            "line": 9.5
          }
        ],
        "marketId": "36421-7210-975-950",
        "moreInfo": {
          "cs": 975,
          "ia": 950,
          "sisalMarketId": "822328111"
        }
      },
      {
        "canonicalMarket": "PLAYER_HATTRICK",
        "rawName": "GIOCATORE TRIPLETTA O PIÙ | GUEHI M. TRIPLETTA O PIÙ",
        "period": "FULL_TIME",
        "line": 3,
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "YES",
            "rawName": "SI",
            "odds": 501,
            "rawOdds": "501.00",
            "isActive": true,
            "selectionId": "5378400781",
            "line": 3
          },
          {
            "canonicalOutcome": "NO",
            "rawName": "NO",
            "odds": 0,
            "isActive": false,
            "selectionId": "5378400782",
            "line": 3
          }
        ],
        "marketId": "36421-7210-14236-65540",
        "moreInfo": {
          "cs": 14236,
          "ia": 65540,
          "sisalMarketId": "822204236",
          "player": "GUEHI M.",
          "playerId": "157162"
        }
      }
    ],
    "moreInfo": {
      "sisalEventId": 4858174,
      "competitionKey": "1-856",
      "marketsOnBoard": 1834,
      "betradarId": "74165934",
      "homeId": 17,
      "awayId": 532
    },
    "slug": "/scommesse-matchpoint/evento/calcio/champions-league/manchester-city-paris-saint-germain",
    "sport": "soccer",
    "startTime": "2026-10-14T19:00:00.000Z"
  }
}

In-Play — Score, Match Clock & Cards

GET /api/sisal/live-events?sport=soccer&limit=1
{
  "total": 36,
  "page": 1,
  "limit": 1,
  "totalPages": 36,
  "hasNextPage": true,
  "hasPrevPage": false,
  "sport": "soccer",
  "events": [
    {
      "eventId": "36411-1979",
      "away": "Pohronie",
      "country": "SVK",
      "home": "FC Vion Zlate Moravce - Vrable",
      "league": "2. Liga",
      "markets": [
        {
          "canonicalMarket": "MATCH_RESULT",
          "rawName": "1X2 ESITO FINALE | ESITO FINALE 1X2",
          "period": "FULL_TIME",
          "isActive": true,
          "selections": [
            {
              "canonicalOutcome": "HOME",
              "rawName": "1",
              "odds": 4,
              "rawOdds": "4.00",
              "isActive": true,
              "selectionId": "5371356377"
            },
            {
              "canonicalOutcome": "DRAW",
              "rawName": "X",
              "odds": 2.7,
              "rawOdds": "2.70",
              "isActive": true,
              "selectionId": "5371356378"
            },
            {
              "canonicalOutcome": "AWAY",
              "rawName": "2",
              "odds": 1.95,
              "rawOdds": "1.95",
              "isActive": true,
              "selectionId": "5371356379"
            }
          ],
          "marketId": "36411-1979-3-0",
          "moreInfo": {
            "cs": 3,
            "ia": 0,
            "sisalMarketId": "820844739"
          }
        },
        {
          "canonicalMarket": "OVER_UNDER",
          "rawName": "UNDER/OVER | U/O 3.5",
          "period": "FULL_TIME",
          "line": 3.5,
          "isActive": true,
          "selections": [
            {
              "canonicalOutcome": "UNDER",
              "rawName": "UNDER",
              "odds": 3,
              "rawOdds": "3.00",
              "isActive": true,
              "selectionId": "5371356753",
              "line": 3.5
            },
            {
              "canonicalOutcome": "OVER",
              "rawName": "OVER",
              "odds": 1.25,
              "rawOdds": "1.25",
              "isActive": true,
              "selectionId": "5371356754",
              "line": 3.5
            }
          ],
          "marketId": "36411-1979-7989-350",
          "moreInfo": {
            "cs": 7989,
            "ia": 350,
            "sisalMarketId": "820844793"
          }
        },
        {
          "canonicalMarket": "DOUBLE_CHANCE",
          "rawName": "DOPPIA CHANCE | DOPPIA CHANCE MULTIESITI",
          "period": "FULL_TIME",
          "isActive": true,
          "selections": [
            {
              "canonicalOutcome": "HOME_DRAW",
              "rawName": "1X",
              "odds": 1.65,
              "rawOdds": "1.65",
              "isActive": true,
              "selectionId": "5371356839"
            },
            {
              "canonicalOutcome": "HOME_AWAY",
              "rawName": "12",
              "odds": 1.33,
              "rawOdds": "1.33",
              "isActive": true,
              "selectionId": "5371356840"
            },
            {
              "canonicalOutcome": "DRAW_AWAY",
              "rawName": "X2",
              "odds": 1.16,
              "rawOdds": "1.16",
              "isActive": true,
              "selectionId": "5371356841"
            }
          ],
          "marketId": "36411-1979-28319-0",
          "moreInfo": {
            "cs": 28319,
            "ia": 0,
            "sisalMarketId": "820844813"
          }
        }
      ],
      "moreInfo": {
        "sisalEventId": 4900434,
        "competitionKey": "1-96",
        "status": "Iniziata",
        "statusCode": 1,
        "betradarId": "72305248"
      },
      "settlement": {
        "source": "sisal",
        "state": "in_play",
        "final": false,
        "inPlay": true,
        "lastSeenAt": "2026-10-12T16:20:37.981Z"
      },
      "slug": "/scommesse-live/evento/calcio/slovacchia/2-liga/fc-vion-zlate-moravce-vrable-pohronie",
      "sport": "soccer",
      "startTime": "2026-10-12T15:00:00.000Z",
      "matchClock": {
        "running": true,
        "minute": 63,
        "second": 39,
        "period": "2nd Half",
        "periodId": "PART_2"
      },
      "score": {
        "home": "1",
        "away": "2"
      },
      "statistics": {
        "football": {
          "home": {
            "yellowCards": 0,
            "redCards": 0,
            "corners": 0
          },
          "away": {
            "yellowCards": 0,
            "redCards": 1,
            "corners": 0
          }
        }
      }
    }
  ]
}

Racing — Win and Place Prices on Every Open Race

GET /api/sisal/horse-racing/races/1509162
{
  "data": {
    "id": "1509162",
    "EW": "",
    "active": "true",
    "country": "United Kingdom",
    "horses": [
      {
        "id": "4132578",
        "number": "1",
        "name": "Mae Amor",
        "jockey": "Tom Kiely-Marshall",
        "trainer": "R Menzies",
        "active": true,
        "EW": {
          "status": "active",
          "fractional": "",
          "decimal": "6.85"
        },
        "markets": [
          {
            "rawName": "Place (2)",
            "decimal": 3.5
          },
          {
            "rawName": "Place (3)",
            "decimal": 2.5
          },
          {
            "rawName": "Place (4)",
            "decimal": 1.93
          }
        ]
      },
      {
        "id": "2500096",
        "number": "2",
        "name": "Juan Les Pins",
        "jockey": "Mason Paetel",
        "trainer": "M Appleby",
        "active": true,
        "EW": {
          "status": "active",
          "fractional": "",
          "decimal": "7.9"
        },
        "markets": [
          {
            "rawName": "Place (2)",
            "decimal": 3.95
          },
          {
            "rawName": "Place (3)",
            "decimal": 2.75
          },
          {
            "rawName": "Place (4)",
            "decimal": 2.1
          }
        ]
      },
      {
        "id": "4213759",
        "number": "3",
        "name": "Kinnalargy",
        "jockey": "D Tudhope",
        "trainer": "D O'Meara",
        "active": true,
        "EW": {
          "status": "active",
          "fractional": "",
          "decimal": "4.3"
        },
        "markets": [
          {
            "rawName": "Place (2)",
            "decimal": 2.45
          },
          {
            "rawName": "Place (3)",
            "decimal": 1.88
          },
          {
            "rawName": "Place (4)",
            "decimal": 1.57
          }
        ]
      }
    ],
    "isInPlay": "false",
    "meetingId": "177047",
    "name": "Newcastle R5 Download The Raceday Ready App Handicap (Div 1)",
    "onlySP": true,
    "settled": false,
    "slug": "https://sisal-hts.mstchannel.com/pages/race/1509162?cID=6C0EA555-2DA3-44B4-BC97-3A32368E2853",
    "startDate": "2026-10-12T17:30:00.000Z"
  }
}

Why Use PulseScore for Sisal Data

Matchday Boards in the Hundreds

Sisal opens the deep board as kick-off nears: in the next three days the Champions League ran 166 to 414 markets a fixture, the Brasileirão up to 436 and Serie A and La Liga up to 389 — with Asian whole-goal totals, the 75-score correct score, corners and hat-trick and foul props — while the same competitions sit at 81 to 133 further out. Every line is a market of its own with a canonical type.

Betradar Match IDs and Sisal's Own Codes

Nearly every event carries moreInfo.betradarId next to Sisal's two-part event code (36421-7210), its internal event ID, competition key and team IDs, so Sisal joins any Sportradar-keyed source without name matching — useful on a book that prints Bayern Monaco and Barcellona. Live and result documents keep the prematch eventId.

Canonical Markets on an Italian Board

Sisal's board is in Italian — 1X2 ESITO FINALE, GOAL/NOGOAL, U/O SOMMA GOAL ASIATICO, SI and NO, PARI and DISPARI. Every market carries a canonicalMarket and every selection a canonicalOutcome, so MATCH_RESULT / HOME lines up with the same market on any other book, and line always holds the home side's number — even where Sisal prints the handicap from the other side.

Horse Racing and Italian Trotting

Two racing feeds: gallops from the UK, Ireland, France, Italy, Sweden, Turkey and the Americas, and harness racing from Italy, France and Sweden. Every runner on an open race carries a win price and place prices for a top-two, top-three or top-four finish, with the jockey or driver, the trainer and a non-runner flag.

In-Play Scores and a Results Archive

Live documents carry the score, a match clock with minute and second on soccer, per-set scores and the serve on tennis and table tennis, cards and corners on some soccer matches, Sisal's status code and a settlement block — and every match Sisal takes in play stays in a 30-day results archive under the same eventId.

REST Plus WebSocket Streaming

Poll the REST endpoints for prematch boards, leagues, racing cards and the results archive, or subscribe over WebSocket for in-play pushes roughly every second. All 16 sports are subscribable on PRO, MAX and ULTRA plans, and one PulseScore API key works across Sisal and every other bookmaker on the platform.

Frequently Asked Questions

What data does the Sisal API provide?

PulseScore provides pre-match and live odds from Sisal's Italian sportsbook (sisal.it) across 16 sports, horse and harness racing with win and place prices, and a 30-day results archive of every match Sisal takes in play. Events carry normalized market data with canonical market types and outcomes, decimal odds, the league and country, Sisal's event, competition and team IDs, the Betradar match ID and the sisal.it page slug.

Which sports are covered?

Sixteen: Soccer, Basketball, Tennis, Ice Hockey, Handball, Volleyball, American Football, Baseball, Esports, Boxing, Cricket, Darts, Table Tennis, Badminton, Padel and Rugby Union, plus horse racing and harness racing. Badminton, padel and rugby union fixtures are listed without prices at the moment. The smaller sports carry a handful of fixtures at a time, so call /sport-availability for what is on right now rather than hard-coding the list.

How deep are the Sisal soccer boards?

Deepest close to kick-off. Fixtures of the big competitions in the next three days averaged 200 to 238 markets — the Champions League 166 to 414, the Brasileirão up to 436, Serie A and La Liga up to 389 — with Asian whole-goal totals, the 75-score correct score, corners and hat-trick and foul props. Further out the same competitions sit at 81 to 133, most other leagues at 60 to 95, and reserves and youth leagues at 23 to 51. Thirty-six canonical market types are mapped and every market has one — there is no OTHER bucket on this book.

What language is the board in?

Italian. Markets read 1X2 ESITO FINALE, DOPPIA CHANCE, UNDER/OVER, U/O SOMMA GOAL ASIATICO, GOAL/NOGOAL, RISULTATO ESATTO and TESTA A TESTA (head-to-head); selections read 1, X and 2, SI and NO, PARI and DISPARI, NESSUNO. League and team names are partly Italian too — Liga Adelante, I Divisione, Coppa d'Israele, Bayern Monaco, Barcellona, Siviglia — and women's competitions end in F. Read canonicalMarket and canonicalOutcome rather than the raw labels.

How do Sisal's handicap lines work?

line always holds the home side's number. On soccer's European handicaps, 1X2 HANDICAP: INIZIA DA 0-1 is line -1. On Asian, set and point handicaps the HOME selection carries the home line and the AWAY selection the opposite. Sisal prints its own number from the other side — T/T HANDICAP (-1.5) on basketball is the home side's +1.5, 1X2 HANDICAP (-1) on ice hockey the home side's +1 — so trust line, not the number in rawName.

What is the Sisal eventId?

A two-part code, Sisal's programme number and event number (36421-7210), the same in the prematch, live and results feeds. moreInfo adds Sisal's internal event ID, its competition key (the league document's leagueId), team IDs, the number of markets Sisal lists and, on nearly every fixture, the Betradar match ID. marketId (the eventId plus Sisal's bet-type and line codes) and selectionId are unique across the board.

What racing is included?

Horse racing from the UK, Ireland, France, Italy, Sweden, Turkey, the USA, Canada, Argentina, Brazil and Chile, and harness racing from Italy, France and Sweden — about two days of cards. Each runner on an open race carries a win price in EW.decimal and place prices for a top-two, top-three or top-four finish; races Sisal has not opened yet are listed without prices. onlySP is true on every race and can be ignored.

Is live in-play data available?

Yes — /api/sisal/live-events over HTTP and a WebSocket for streaming. Live documents keep the prematch eventId and carry the in-play board, a score with the numbers as strings (plus the game points on tennis), a match clock with minute and second on soccer and the set on tennis, volleyball and table tennis, per-set scores, cards and corners on some soccer matches, Sisal's status and a settlement block. Live retention is 120 seconds, so documents that stop being refreshed drop out.

How do I tell finished matches in the results?

Read settlement.state: 'final' (with finalAt) once Sisal marks the match finished, 'unresolved' with delisted: true when its live board dropped the match first, and 'in_play' while it runs. So far only soccer, basketball, handball and baseball reach 'final' — tennis, table tennis, volleyball and ice hockey end 'unresolved' with the last score the board showed. There is no ?final= filter on this book; ?country= takes Sisal's three-letter codes.

How do I connect to the Sisal WebSocket?

Open wss://api.pulsescore.net/api/sisal/ws/live?key=YOUR_KEY&sport=soccer. The sport parameter is kebab-case (ice-hockey, table-tennis, american-football) and all 16 sports are valid. The server sends a connected frame with your plan and the valid sport list, then pushes live events roughly every second. WebSocket access requires PRO, MAX or ULTRA.

How often is the data updated?

Live events are pushed roughly every second over WebSocket and expire 120 seconds after their last refresh over HTTP. Pre-match boards, leagues and racing cards drop out an hour after Sisal stops listing them, and results are retained for 30 days.

Can I use this data commercially?

Yes. PulseScore plans cover commercial use — odds comparison sites, trading models, in-play dashboards and internal tooling. Rate limits and WebSocket connection counts scale with the plan, and one API key works across Sisal and every other bookmaker on the platform.

Start Using the Sisal API Today

Free tier available. No credit card required. Get your API key in 30 seconds.