Best Practice Guide

Tips for integrating with Live Data XML Feed

Matchlist

Matchlist is a message that contains all booked or all booked and bookable matches for a particular time period. For the message to contain all booked and bookable matches, include the attribute includeavailable in your request. For booked-only matches, you can omit that part.

<matchlist hoursback="1" hoursforward="2" includeavailable="yes"/>

or

<matchlist hoursback="1" hoursforward="2"/>

To differentiate between booked and bookable matches, refer to the 'booked' attribute (0 indicates bookable, 1 indicates booked):

<matchlist>
<match t2name="SK RAPID" t2id="6592" t1name="FK AUSTRIA WIEN"
t1id="6597"t1abbr="FAK" t2abbr="SCR" start="1733920680000"
matchid="124395595"extrainfo="0" distance="10" device="4"
coveredfrom="venue" booked="1" coveragestatusid="0">
<tournament name="Bundesliga" id="29"/>
<category name="Austria" id="17"/>
<sport name="Soccer" id="1"/>
<status start="1733922929294" name="ENDED" id="100"/>
<score type="current" t1="0" t2="0"/>
</match><match t2name="SK RAPID" t2id="6592" t1name="FC SALZBURG"
t1id="6593"t1abbr="SAL" t2abbr="SCR" start="1733920680000"
matchid="124395596"extrainfo="0" distance="247" device="4"
coveredfrom="venue" booked="0" coveragestatusid="0">
<tournament name="Bundesliga" id="29"/>
<category name="Austria" id="17"/>
<sport name="Soccer" id="1"/>
<status start="1733922933016" name="ENDED" id="100"/><score
type="current" t1="0" t2="0"/>
</match>

The matchlist response can be filtered to show matches for a specific sport. For instance, the following command would return a list of all booked and bookable eSoccer matches within the selected timeframe:

<matchlist hoursback="1" hoursforward="1" includeavailable="yes">
<sport sportid="137" />
</matchlist>

The maximum timespan one can request matches for is 300 hours. This will increase the response time to this request. Filtering per sport and choosing different frequencies of requests is preferred by most customers. If the timespan is greater than 300 hours, it will automatically be adjusted down to 300 hours. If the optional attribute includeavailable="yes" is set, the maximum values of "hoursback" and "hoursforward" are 48 hours and 240 hours respectively.

A matchlistupdate message is triggered when a significant change occurs to a fixture, such as a change in the starting time. It is also sent automatically after a match has been booked. However, these messages must first be enabled through an XML configuration ID 18.

Tip At the start of each day, request a matchlist response for booked matches in the next 24 hours. To stay up to date, supplement this with matchlistupdate messages, which will be automatically sent whenever a significant change occurs to one of your booked matches. For added safety, you can also request the matchlist manually every hour or two.

Match Booking

A valid match booking request and its corresponding response would appear as follows:

<bookmatch matchid="56103479"/>
<bookmatch matchid="56103479" message="OK" result="valid"/>

Sending a booking request for a match that has already been booked will result in the following response:

<bookmatch matchid="56103479"/>
<bookmatch matchid="56103479" message="The match is booked"
result="invalid"/>

After a match is booked, it becomes available for subscription.

Subscription

To subscribe to a match, use the following request:

<match matchid="124395595" />

A valid response to a match subscription request is a full match message (full feed). However, a subscription request may fail, typically because the match is not booked. In such cases, the response will be as follows:

<matchstop matchid="34825725" reason="Bookmaker does not have access
to this match"/>

Tip In rare occurrences a delay may happen to the service that manages bookings. To counter this, please insert a small gap between booking and subscription requests. Alternatively, monitor subscription requests that have failed and attempt to resubscribe.

Multiple matches can be subscribed to with a single request. An example of such a request is as follows:

<matchsubscription>
<match matchid="27518145"/>
<match matchid="27518171"/>
</matchsubscription>

Tip

To prevent processing issues, we recommend keeping the number of matches in a subscription request below 50

Unsubscription

To unsubscribe and stop receiving live updates for a specific match, send the following request:

<matchstop matchid="56103479"/>

The valid response to an unsubscription request will be as follows:

<matchstop matchid="56103479" reason="User unsubscribed to match"/>

Betstatus

The two possible BetStatus values are BETSTOP and STARTED, which are toggled by the event types BETSTOP and BETSTART. BETSTOP changes the BetStatus from STARTED to BETSTOP, while BETSTART changes it from BETSTOP to STARTED. BETSTOP is triggered when a significant change occurs in an ongoing match, such as a goal being scored in soccer, or when the current situation is unknown or unpredictable, prompting the suspension of betting on the match. BETSTART indicates that the score and all data for an ongoing match are accurate and up to date, allowing betting to resume/commence

Tip When subscribing to a match, first check the value of the BetStatus attribute in the full match message (full feed). Then, track the BETSTOP and BETSTART event types to ensure that your system’s BetStatus remains in sync with the BetStatus from Sportradar at all times.

<match t1namenatural="Niva Dolbizno" t2namenatural="Naftan
Novopolotsk"t2name="NAFTAN NOVOPOLOTSK" t2id="193281" t1name="NIVA
DOLBIZNO"t1id="17878888"t1abbr="NIV"t2abbr="NAF"start="1733313600000"
matchid="56103479" feedtype="full_paginated" extrainfo="0"
betstatus="BETSTOP"connectionstatus="1" device="4" coveredfrom="tv"
var="0" matchtime="29:32" uuid="84941714-764a-4b03-a26c-4870252037f6"
page="0" totalpages="1">
<status start="1733313680333" name="FIRST_HALF" id="6"/>
<score type="current" t1="0" t2="1"/>
<score type="period1" t1="0" t2="1"/>
<red t2="0" t1="0"/>
<yellow t2="1" t1="2"/>
<corners t2="2" t1="2"/>
<dangerousattacks t2="11" t1="10"/>
<attacks t2="21" t1="19"/>
<weatherconditions name="MEDIUM" id="2"/>
<pitchconditions name="GOOD" id="1"/>
<kickoffteam team="2"/>
<tournament name="Vysshaya League, Rel/Prom Playoffs" id="14373"/>
<category name="Belarus" id="91"/>
<sport name="Soccer" id="1"/>

Tip You can track different BETSTOP reasons, identified by the extrainfo attribute of the Betstop event type, and choose to disregard some of them based on your own risk assessment.

Coverage Status

The Coverage Status event type indicates whether a given match will be covered, not covered at all, or has been abandoned. If multiple Coverage Status events are sent, the most recent one is considered correct. For example, a match may transition from Covered to Not Covered and then back to Covered if the original scout is unable to perform their duties and no replacement is available at the time, but another scout is later found to take over.

  • Coverage Status: Covered means the match will be covered as expected.

<event type="1102" stime="1733321820315" side="none" mtime="00:00"
info="Coverage status: Covered" id="2226791320" uuid="888c4daf-a9b1-
4982-8b2d-52a1d16d5346" extrainfo="0" matchscore="0:0"
matchstatus="NOT_STARTED"/>
  • Coverage Status: Not Covered means that the previously planned coverage for the match can no longer be performed. As a result, live data will not be provided for that match.

<event type="1102" stime="1733321740317" side="none" mtime="00:00"
info="Coverage status: Not covered" id="2226791302" uuid="758f895d-
0c4a4284b2e1-ddf056935ddd" extrainfo="2" matchscore="0:0"
matchstatus="NOT_STARTED"/>
  • Coverage Status: Abandoned means that we can no longer guarantee accuracy or completeness of the ongoing coverage. While live data will generally continue to be sent until the end of the match, it should be treated with caution

<event type="1102" stime="1733321780388" side="none" mtime="00:00"
info="Coverage status: Coverage abandoned" id="2226791316"
uuid="78c3cef8-9565-4a29-b0ee-d33b7f60b3d9" extrainfo="1"
matchscore="0:0" />

Tip Coverage status can be included in the matchlist message by activating XML Config ID 97.

Deltaupdate messages

Deltaupdate messages (feedtype=deltaupdate) are sent to update previous delta messages within a given coverage, modifying one or more of their attributes. These messages do not represent new events, but rather modifications or updates to events that have already occurred. The score- and time-related attributes in these messages will remain unchanged from their values in the original delta message. For example, a ‘Goal Confirmed’ event is sent as soon as we are certain that a goal has been scored and will stand. However, this event typically does not include the goal scorer, as that information usually requires additional verification. The goal scorer is then added to the previously sent goal event through a deltaupdate message:

<match matchid="124311227" feedtype="delta" betstatus="BETSTOP"
connectionstatus="1" dc="1" sportid="1" stime="1733322182532">
<possession t2="0" t1="100"/>
<events>
<event type="1018" stime="1733322182277" side="home" mtime="00:04"
info="Possible goal [T1]" id="2226791393" uuid="224f8737-8f37-4471-9fee-
76f2fcce18c1" matchscore="0:0" matchstatus="FIRST_HALF"/>
</events>
</match>

<match matchid="124311227" feedtype="delta" betstatus="BETSTOP"
connectionstatus="1" dc="1" sportid="1" stime="1733322186769">
<score type="period1" t1="1" t2="0"/>
<score type="current" t1="1" t2="0"/>
<shotsontarget t2="0" t1="1"/>
<possession t2="0" t1="100"/>
<events>
<event type="30" stime="1733322186277" side="home" mtime="00:08"
info="Goal [T1] (outside the box, shot) (1:0)" id="2226791394" uuid="817f44af-
48ba-48ef-ae29-6a62f0e9eff0" extrainfo="-100" posx="50"
posy="50"matchscore="1:0" spot="0" matchstatus="FIRST_HALF"/>
</events>
</match>
<match matchid="124311227" feedtype="delta" betstatus="BETSTOP"
connectionstatus="1"dc="1"sportid="1"stime="1733322186795">matchstatus="NOT_STA
RTED"/>
<possession t2="0" t1="100"/>
<events>
<event type="1091" stime="1733322186277" side="none" mtime="00:08"
info="Early betstart" id="2226791395" uuid="5d96ddc5-37a0-4ee6-bcca-
be270baaf63a" extrainfo="1" matchscore="1:0" earlybetstarttype="1"?
</events>
</match>

<match matchid="124311227" feedtype="delta" betstatus="BETSTOP"
connectionstatus="1" dc="1" sportid="1" stime="1733322186942">
<possession t2="0" t1="100"/>
<events>
<event type="110" stime="1733322186277" side="away" mtime="00:08"
info="[T2] have possession" id="2226791396" uuid="92060eac-e627-4e77-8763-
d5accb030246" matchscore="1:0" matchstatus="FIRST_HALF"/>
</events>
</match>
<match matchid="124311227" feedtype="deltaupdate"
betstatus="BETSTOP" connectionstatus="1" dc="1" sportid="1"
stime="1733322195103">
<score type="period1" t1="1" t2="0"/>
<score type="current" t1="1" t2="0"/>
<shotsontarget t2="0" t1="1"/>
<possession t2="0" t1="100"/>
<events>
<event type="30" stime="1733322186277" side="home" mtime="00:08"
info="Goal [T1] (outside the box, shot) (1:0) -B. Saka"
id="2226791394"uuid="817f44af-48ba-48ef-ae29-6a62f0e9eff0" extrainfo="-100"
posx="50"posy="50"player1="1479630"matchscore="1:0"
spot="0"matchstatus="FIRST_HALF"/>
</events>
</match>

Tip Ensure that the information in deltaupdate messages does not modify the current score or match time in your system. Since these messages are used to update events that occurred earlier in the match, the score and time related information they contain is often outdated.

Event deletion

Events are deleted when they have been entered incorrectly, accidentally, or when certain occurrences are called off. This is done via the Event Deleted 1044 event type, which includes the event’s uuid in the refuuid attribute. When requesting the full match message after deletion, the deleted event will no longer be included. Instead, the message will only contain the 1044 event as confirmation that the deletion has occurred.

For example, the deletion of a confirmed yellow card would appear in the delta feed as follows:

<match matchid="124311227" feedtype="delta" betstatus="STARTED"
connectionstatus="1" dc="1" sportid="1" stime="1733322498773">
<attacks t2="1" t1="0"/>
<possession t2="98" t1="3"/>
<events>
<event type="1126" stime="1733322498451" side="away" mtime="05:20"
info="Attack [T2]" id="2226791595" uuid="c6ae4e48-9ac2-412f-8cc4-
cbf53435fbda" posx="42" posy="29" matchscore="1:0"
ballspotting="false"
matchstatus="FIRST_HALF"/>
</events>
</match>

<match matchid="124311227" feedtype="delta" betstatus="STARTED"
connectionstatus="1" dc="1" sportid="1" stime="1733322504273">
<possession t2="98" t1="2"/>
<events>
<event type="1084" stime="1733322503451" side="away" mtime="05:25"
info="Possible yellow card [T2]" id="2226791597" uuid="96b5b65f-8016-
4a10-860a-c569dedf1309" matchscore="1:0" matchstatus="FIRST_HALF"/>
</events>
</match>
<matchdata matchid="124311227" mtime="05:29"/><match
matchid="124311227" feedtype="delta" betstatus="STARTED"
connectionstatus="1" dc="1" sportid="1" stime="1733322523161">
<yellow t2="1" t1="0"/>
<possession t2="98" t1="2"/>
<events>
<event type="40" stime="1733322522451" side="away" mtime="05:44"
info="Yellow card [T2]" id="2226791601" uuid="97ca6a45-93b7-4644-b5b5-
1bf7e4775ced" extrainfo="0" player1="-1" matchscore="1:0"
extrainfosoccer="0"
matchstatus="FIRST_HALF"/>
</events>
</match>

<match matchid="124311227" feedtype="delta" betstatus="STARTED"
connectionstatus="1" dc="1" sportid="1" stime="1733322529148">
<yellow t2="0" t1="0"/>
<possession t2="98" t1="2"/>
<events>
<event type="1044" stime="1733322529084" side="away" mtime="05:50"
info="Event deleted : Yellow card (originally entered at 14:28:42
UTC)"id="2226791603" uuid="43e9846f-2149-4d41-b9e1-5f95661b957c"
refuuid="97ca6a45-93b7-4644-b5b5-1bf7e4775ced" extrainfo="2226791601"
matchscore="1:0" refstime="1733322522451" matchstatus="FIRST_HALF"/>
</events>
</match>
<match matchid="124311227" feedtype="delta" betstatus="STARTED"
connectionstatus="1" dc="1" sportid="1" stime="1733322529187">
<possession t2="98" t1="2"/>
<events>
<event type="1044" stime="1733322529154" side="away" mtime="05:50"
info="Event deleted : Possible yellow card (originally entered at
14:28:23 UTC)"id="2226791604" uuid="8719133a-f9d6-4e17-917e-
034e7359da71"refuuid="96b5b65f-8016-4a10-860a-c569dedf1309"
extrainfo="2226791597"matchscore="1:0" refstime="1733322503451"
matchstatus="FIRST_HALF"/>
</events>
</match>

And the same deletion would appear like this in the subsequent full feed:

<event type="1126" stime="1733322498451" side="away" mtime="05:20"
info="Attack [T2]" id="2226791595" uuid="c6ae4e48-9ac2-412f-8cc4-
cbf53435fbda" posx="42" posy="29" matchscore="1:0"ballspotting="false"
matchstatus="FIRST_HALF"/>
<event type="1044" stime="1733322529084" side="away" mtime="05:50"
info="Event deleted : Yellow card (originally entered at 14:28:42
UTC)"id="2226791603" uuid="43e9846f-2149-4d41-b9e1-5f95661b957c"
refuuid="97ca6a45-93b7-4644-b5b5-1bf7e4775ced" extrainfo="2226791601"
matchscore="1:0" refstime="1733322522451" matchstatus="FIRST_HALF"/>
<event type="1044" stime="1733322529154" side="away" mtime="05:50"
info="Event deleted : Possible yellow card (originally entered at
14:28:23 UTC)"id="2226791604" uuid="8719133a-f9d6-4e17-917e-
034e7359da71"refuuid="96b5b65f-8016-4a10-860a-c569dedf1309"
extrainfo="2226791597"matchscore="1:0" refstime="1733322503451"
matchstatus="FIRST_HALF"/>

Tip Use the uuid value in the refuuid attribute of the 1044 Deletion event type to identify the deleted event and ignore it.

Replay Server

Connection details for the replay server: Hostname: replay.livedata.betradar.com Port: 2047 (SSL) All booked matches can be replayed indefinitely, beginning 4 hours after the match has started. The replay can be conducted at real speed or at a predetermined speed. Additionally, a replay can begin from a specific message, such as the 100th message sent within the coverage. To request a replay of a specific match at real speed, send the following request:

<match matchid="34825725" />

To request a replay that runs at a speed of 150 milliseconds between messages, starting from the 25th message, send the following request:

<match matchid="25326612" messagedelay="150" startmessage="25" />

Tip To receive the full feed message without waiting for the replay to complete, simply request that the replay starts from a specific message and choose a very high number to skip directly to the end of the replayed match:

<match matchid="50198027" messagedelay="150" startmessage="25555" />

Last updated

Was this helpful?