XML Structure

Keep-AliveMessage

Message is the root of the XML, it is structured as follows:

<Message>
    <Header>
        ...
    </Header>
    <Body>
        ...
    </Body>
</Message>

The header consists of general information, which can be later used as a reference. It is structured as follows:

<Header>
    <Type>2</Type>
    <MsgId>1</MsgId>
    <MsgGuid>16c9746d-619e-4e42-b8e1-fb95251c3859</MsgGuid>
    <ServerTimestamp>1489578474</ServerTimestamp>
</Header>

Model

Events

An array of Event elements. Every Event element holds Fixture, Markets, and Livescore elements. It is structured as follows:

Example:

<Events>
  <Event FixtureId="1385821">
      <Fixture>
        ...
      </Fixture>
      <Markets>
        ...
      </Markets>
      <Livescore>
        ...
      </Livescore>
  </Event>
  <Event FixtureId="1385822">
    ...
  </Event>
  <Event FixtureId="1385823">
    ...
  </Event>
</Events>

Model

Note: Be advised that the above example is relevant for RMQ messages only, API message structure is slightly different, and does not include <Event> tag - see example below:

{
  "Header": {
    "Type": 3,
    "ServerTimestamp": 1647866624
  },
  "Body": [
    {
      "FixtureId": 8355875,
      "Fixture": {
        "Sport": {
          "Id": 6046,
          "Name": "Football"
        },
        "Location": {
          "Id": 243,
          "Name": "England"
        },
        "League": {
          "Id": 40789,
          "Name": "Development League U23"
        },
        "StartDate": "2022-03-21T13:00:00",
        "LastUpdate": "2022-03-20T01:15:32.791982",
        "Status": 1,
        "Participants": [
          {
            "Id": 51982938,
            "Name": "Crewe Alexandra U23",
            "Position": "1"
          },
          {
            "Id": 52323724,
            "Name": "Bristol City U23",
            "Position": "2"
          }
        ]
      },

Fixture

The fixture element holds general data about the event.

<Fixture LastUpdate="2017-03-04T17:12:00Z" ExternalProviderId="578713">
  <Sport Id="6046" Name="Football"/>
  <Location Id="243" Name="England"/>
  <League Id="67" Name="Premier League"/>
  <StartDate>2017-03-04T15:30:00Z</StartDate>
  <Status>3</Status>
  <Participants>
    <Participant Id="19" Name="Liverpool" Position="1"/>
    <Participant Id="3" Name="Arsenal" Position="2"/>
  </Participants>
</Fixture>

Model

Outright Fixture

The outright fixture is a part of the competition hierarchy as follow:

Note: The following format will not be sent for non-outright fixtures at this time.

<Competition Id="4620" Name="Moe" Type="1">
  <Events>
    <Event FixtureId="4020579">
      <OutrightFixture LastUpdate="2018-09-11T04:41:49.536Z">
        <Sport Id="687888" Name="Horse Racing"/>
        <Location Id="172" Name="Australia"/>
        <StartDate>2018-09-10T21:30:00.000Z</StartDate>
        <Status>3</Status>
        <Participants>
          <Participant Id="52067806" Name="Cascade County" Position="2" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">Peter Gelagotis</Data>
              <Data Name="Jockey">Ben Melham</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067807" Name="Days Of Glory" Position="3" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">Michelle Payne</Data>
              <Data Name="Jockey">Ms Michelle</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067808" Name="Do You Reckon" Position="4" IsActive="1">
            <ExtraData>
              <Data Name="Result">3</Data>
              <Data Name="TrainerName">M D Moroney</Data>
              <Data Name="Jockey">Patrick Moloney</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067809" Name="Hautclere" Position="5" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">M Ellerton &amp; S Zahra</Data>
              <Data Name="Jockey">Damien Thornton</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067810" Name="Me Cabo" Position="6" IsActive="1">
            <ExtraData>
              <Data Name="Result">2</Data>
              <Data Name="TrainerName">Nick Ryan</Data>
              <Data Name="Jockey">James Winks</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52066808" Name="Secret Vega" Position="7" IsActive="1">
            <ExtraData>
              <Data Name="Result">1</Data>
              <Data Name="TrainerName">Lloyd Kennewell</Data>
              <Data Name="Jockey">Joe Bowditch</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067811" Name="They Callmemalcom" Position="8" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">S C Bottomley</Data>
              <Data Name="Jockey">Brian Higgins</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067812" Name="Hediard" Position="9" IsActive="1">
            <ExtraData>
              <Data Name="Result">4</Data>
              <Data Name="TrainerName">Anthony Freedman</Data>
              <Data Name="Jockey">Jye Mcneil</Data>
              <Data Name="JockeyWeight">56</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067813" Name="Linda Maria" Position="10" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">P &amp; P Snowden</Data>
              <Data Name="Jockey">Chris Parnham</Data>
              <Data Name="JockeyWeight">56</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067814" Name="Quora" Position="11" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">D &amp; B Hayes &amp; T Dabernig</Data>
              <Data Name="Jockey">Luke Nolen</Data>
              <Data Name="JockeyWeight">56</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
        </Participants>
      </OutrightFixture>
    </Event>
  </Events>
</Competition>

Competition Model

Note: This element is resuscrive. Every Competition element can have a Competitions element. Please consider that the competitions are constructred dynamically - Structure may change.

Outright Fixture Model

Outright League

The outright league is a part of the competition hierarchy as follow:

Note: The following format will not be sent for non-outright fixtures at this time.

<Competitions>
  <Competition Id="5248" Name="Thomas Cup" Type="3">
  <Competitions>
    <Competition Id="457" Name="2020" Type="4">
    <Events>
      <Event FixtureId="4999614">
      <OutrightLeague LastUpdate="2019-11-18T09:40:42.586Z">
        <Sport Id="1149093" Name="Badminton" />
        <Location Id="248" Name="International" />
        <Status>1</Status>
      </OutrightLeague>
      </Event>
    </Events>
    </Competition>
  </Competitions>
  </Competition>
  <Competition Id="145" Name="Davis Cup" Type="3">
  <Competitions>
    <Competition Id="556" Name="2019" Type="4">
    <Events>
      <Event FixtureId="4999616">
      <OutrightLeague LastUpdate="2019-11-18T09:40:43.415Z">
        <Sport Id="54094" Name="Tennis" />
        <Location Id="248" Name="International" />
        <Status>1</Status>
      </OutrightLeague>
      </Event>
    </Events>
    </Competition>
  </Competitions>
  </Competition>
</Competitions>

Competition Model

Note: This element is resuscrive. Every Competition element can have a Competitions element. Please consider that the competitions are constructred dynamically - Structure may change.

Outright League Model

Participant

An element that represents a participant (player, team, horse, etc.) in the event.

<Participant Id="51596051" Name="Sonoma Charro" Position="1" IsActive="1">
  <ExtraData>
    <Data Name="Result">1</Data>
    <Data Name="Owner">John Pinochet P.</Data>
    <Data Name="JockeyAddition">0</Data>
    <Data Name="ProgramNumber">13</Data>
    <Data Name="TrainerName">Pinochet P., John</Data>
    <Data Name="Form">5 - 8 - 8 - 3 - 3 - 1</Data>
    <Data Name="JockeyAllowance">0</Data>
    <Data Name="JockeyWeight">56</Data>
    <Data Name="Jockey">Robles, Pedro</Data>
    <Data Name="Blinkers">False</Data>
    <Data Name="Age">5</Data>
  </ExtraData>
</Participant>

Model

Extra Data

Extra data is an array of Data elements, which provide additional information about their parenting element in a name-value structure.

Note: This section applies for all Extra Data elements – FixtureExtraData, ParticipantExtraData, LivescoreExtraData and so on.

Examples

<FixtureExtraData>
  <Data Name=”RaceTitle”>Race 7</Data>
  <Data Name=”Category”>Handicap</Data>
</FixtureExtraData>
<ParticipantExtraData>
  <Data Name=”Jockey”> Medina, Jaime</Data>
  <Data Name=”ProgramNumber”>6</Data>
</ParticipantExtraData>

LiveScore ExtraData

<LivescoreExtraData>
  <Data Name=”Turn”>1</Data>
  <Data Name=”NumberOfPeriods”>3</Data>
</LivescoreExtraData>

ExtraData Model

Markets

The market element is an array of Market elements. Every Market holds data regarding markets and bets.

<Markets>
  <Market Id="13" Name="European Handicap">
    <Provider Id="8" Name="Bet365" LastUpdate="2017-03-16T10:44:43.4209099Z">
      <Bet Id="18933138861385821" Name="1" Line="0:2" BaseLine="0:2" Status="1" Price="2.4" LastUpdate="2017-03-04T16:09:35Z"/>
      <Bet Id="18932538611385821" Name="X" Line="2:0" BaseLine="0:2" Status="1" Price="2.875" LastUpdate="2017-03-04T16:09:35Z"/>
      <Bet Id="18933127991385821" Name="2" Line="2:0" BaseLine="0:2" Status="1" Price="2.875" LastUpdate="2017-03-04T16:09:35Z"/>
    </Provider>
    <Provider Id="7" Name="Tipico" LastUpdate="2017-03-16T10:42:52.6619509Z">
      <Bet Id="9867935571385821" Name="1" Line="0:2" BaseLine="0:2" Status="1" Price="2.3" LastUpdate="2017-03-04T16:09:09Z"/>
      <Bet Id="9867335321385821" Name="X" Line="2:0" BaseLine="0:2" Status="1" Price="3" LastUpdate="2017-03-04T16:09:09Z"/>
      <Bet Id="9867924701385821" Name="2" Line="2:0" BaseLine="0:2" Status="1" Price="3.2" LastUpdate="2017-03-04T16:09:09Z"/>
    </Provider>
    <Provider Id="31" Name="William Hill" LastUpdate="2017-03-16T10:49:51.5557465Z">
      <Bet Id="11426129041385821" Name="1" Line="0:2" BaseLine="0:2" Status="1" Price="2.375" LastUpdate="2017-03-04T16:09:45Z"/>
      <Bet Id="12315064531385821" Name="X" Line="2:0" BaseLine="0:2" Status="1" Price="2.7" LastUpdate="2017-03-04T16:09:45Z"/>
      <Bet Id="14640192711385821" Name="2" Line="2:0" BaseLine="0:2" Status="1" Price="3" LastUpdate="2017-03-04T16:09:45Z"/>
    </Provider>
  </Market>
</Markets>

Model

Note: order of elements may change between different messages (e.g. bets order could be '1', 'x', '2' and in a future message could be '1', '2', 'x'

Provider

ProvidersEvery market holds an array of Providers. Under every Provider, there is data for the market and its bets, as they were received from that Provider.

Model

Bet

Every provider holds an array of bets. Every bet holds data as it was received from the provider. All the bets are a part of their Market ancestor (parent of Provider).

Model

Livescore

The livescore element holds all scores and statistics:

Example 1

<Livescore>
  <Scoreboard Status="3" CurrentPeriod="100" Time="5700">
    <Score Position="1">1</Score>
    <Score Position="2">3</Score>
  </Scoreboard>
  <Periods>
    <Period Type="100" IsFinished="true" IsConfirmed="true">
      <Score Position="1">1</Score>
      <Score Position="2">3</Score>
    </Period>
    <Period Type="10" IsFinished="true" IsConfirmed="true">
      <Score Position="1">0</Score>
      <Score Position="2">2</Score>
      <Incidents>
        <Incident Period="10" IncidentType="9" Seconds="180" ParticipantPosition="2" PlayerName="Valencia A.">
          <Score Position="1">0</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="10" IncidentType="9" Seconds="600" ParticipantPosition="2" PlayerName="Lingard J.">
          <Score Position="1">0</Score>
          <Score Position="2">2</Score>
        </Incident>
      </Incidents>
    </Period>
    <Period Type="20" IsFinished="true" IsConfirmed="true">
      <Score Position="1">1</Score>
      <Score Position="2">1</Score>
      <Incidents>
        <Incident Period="20" IncidentType="9" Seconds="2880" ParticipantPosition="1" PlayerName="Lacazette A.">
          <Score Position="1">1</Score>
          <Score Position="2">2</Score>
        </Incident>
        <Incident Period="20" IncidentType="9" Seconds="3720" ParticipantPosition="2" PlayerName="Lingard J.">
          <Score Position="1">1</Score>
          <Score Position="2">3</Score>
        </Incident>
      </Incidents>
    </Period>
  </Periods>
  <Statistics>
    <Statistic Type="1">
      <Value Position="1">12</Value>
      <Value Position="2">1</Value>
    </Statistic>
    <Statistic Type="6">
      <Value Position="1">3</Value>
      <Value Position="2">2</Value>
      <Incidents>
        <Incident Period="20" IncidentType="6" Seconds="3420" ParticipantPosition="2" PlayerName="Rojo M.">
          <Score Position="1">0</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="4260" ParticipantPosition="1" PlayerName="Bellerin H.">
          <Score Position="1">1</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="5160" ParticipantPosition="1" PlayerName="Koscielny L.">
          <Score Position="1">2</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="5280" ParticipantPosition="1" PlayerName="Sanchez A.">
          <Score Position="1">3</Score>
          <Score Position="2">2</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="5280" ParticipantPosition="2" PlayerName="Herrera A.">
          <Score Position="1">3</Score>
          <Score Position="2">2</Score>
        </Incident>
      </Incidents>
    </Statistic>
    <Statistic Type="7">
      <Value Position="1">0</Value>
      <Value Position="2">1</Value>
      <Incidents>
        <Incident Period="20" IncidentType="7" Seconds="4380" ParticipantPosition="2" PlayerName="Pogba P.">
          <Score Position="1">0</Score>
          <Score Position="2">1</Score>
        </Incident>
      </Incidents>
    </Statistic>
    <Statistic Type="8">
      <Value Position="1">0</Value>
      <Value Position="2">0</Value>
    </Statistic>
    <Statistic Type="10">
      <Value Position="1">3</Value>
      <Value Position="2">3</Value>
    </Statistic>
    <Statistic Type="12">
      <Value Position="1">11</Value>
      <Value Position="2">10</Value>
    </Statistic>
  </Statistics>
  <LivescoreExtraData/>
</Livescore>

Example 2

<Livescore>
  <Scoreboard Status="2" CurrentPeriod="2" Time="-1">
    <Score Position="1">0</Score>
    <Score Position="2">1</Score>
  </Scoreboard>
  <Periods>
    <Period Type="1" IsFinished="true" IsConfirmed="true">
      <Score Position="1">1</Score>
      <Score Position="2">6</Score>
    </Period>
    <Period Type="2" IsFinished="false" IsConfirmed="false">
      <Score Position="1">3</Score>
      <Score Position="2">3</Score>
    </Period>
    <Period Type="60" IsFinished="false" IsConfirmed="false">
      <Score Position="1">40</Score>
      <Score Position="2">30</Score>
    </Period>
  </Periods>
  <Statistics>
    <Statistic Type="20">
      <Value Position="1">3</Value>
      <Value Position="2">6</Value>
    </Statistic>
    <Statistic Type="21">
      <Value Position="1">2</Value>
      <Value Position="2">2</Value>
    </Statistic>
  </Statistics>
  <ExtraData>
    <Data Name="Turn">1</Data>
    <Data Name="Serve Number">1</Data>
  </ExtraData>
</Livescore>

Scoreboard

Scoreboard Model

All child nodes are an array of Score

Score Model


Periods

Periods Model

All child nodes are an array of Period. Every Period represents a period (previous or current) during the live event.

Note: Delivering the IsFinished as true and the IsConfirmed as false means we couldn't validate the final result of the specific period

Score Model

Incident Model

Every period element may contain a list of incidents (e.g. goals that were scored). Incidents will appear as long as we have the information.

Note: Incidents may be sent after a final status had been received.


Statistics

An array of Statistics. Every Statistic represents an individual statistic during the live event. All statistics show the current values as they are (without period breakdown).

Model

Statistics Value

<Statistic Type="1">
  <Value Position="1">9</Value>
  <Value Position="2">3</Value>
</Statistic>

Livescore important notes

  1. Periods, scores, statistics, and time MAY be reverted due to mistakes made by the data providers.

  2. The current total score of the event can be found under the Scoreboard element. The score for every individual period can be found within the Period elements. Note: Every period contains the score relevant to that period alone

  3. As a part of our data quality improvement, new periods and statistical types may be added all the time. Make sure your system is dynamic enough to cope with unidentified types.

  4. A loss of coverage will occur if we are not able to provide data for an event due to technical difficulties or faulty data. Note: Should a loss of coverage occur – all bets will be suspended.

  5. There are several events that we are offering live up to 30 minutes before the event’s actual start time. Those events will be sent with the status “9”, which indicates that the event is about to start. The status is the attribute of the Scoreboard element.

  6. The period type “80” stands for “BreakTime”. This period applies to ANY break during the live event. The type of the break will be in the Description attribute of the Scoreboard element, as seen below:

<Scoreboard Status="2" CurrentPeriod="80" Description=”1” Time="2700">
  <Score Position="1">2</Score>
  <Score Position="2">1</Score>
</Scoreboard>

Football

  • Time

    • Time direction will be ascending until the end of the half.

    • During halftime, the time will always be 2700 seconds.

    • During overtime halftime, the time will always be 6300 seconds.

    • When the event is finished (without overtime), the time will always be 5400 seconds.

    • When the event is finished (after overtime), the time will always be 7200 seconds.

    • During penalties, there will be no time available.

Basketball

  • Time

    • Time direction will be descending or increasing, depending on the information received.

    • At the end of every period, the time will be set to 0 (for the descending clock) or 10\12 mins (for the increasing clock).

  • Periods

    • During NCAA events (College male basketball), the periods will show as halves (10 – 1st Half, 20 – 2nd Half) instead of quarters as usual.

Tennis

  • Periods

    • When the Tennis match is finished, the period “60” (Game period) will be removed as it is no longer relevant.

    • The serving player will appear under the ExtraData element, within the “Turn” key. The possible values are 1 or 2 (according to the participant's position).


Keep Alive

Keep alive messages contain an array of fixture IDs. These IDs are of the events that are live.

Note: When there are no events available (no orders/no live events), an empty KeepAlive message will be sent.

Example

<KeepAlive>
  <ActiveEvent>1234</ActiveEvent>
  <ActiveEvent>1111</ActiveEvent>
  <ActiveEvent>6213</ActiveEvent>
  <ActiveEvent>4021</ActiveEvent>
</KeepAlive>

Model


Heartbeat

Heartbeat messages will be sent every 5 seconds and they can be used to make sure that your connection is still alive. Note: Heartbeat messages are without Body (only Header)

Example

<Message>
  <Header>
    <Type>32</Type>
    <MsgGuid>ef3a5979-46ef-4f94-ae60-90c063ab3440</MsgGuid>
    <ServerTimestamp>1516013721</ServerTimestamp>
  </Header>
</Message>

Last updated