Generate an SSH key pair by following the instructions below.
Upon generating the SSH key pair, send an e-mail to integrations@imgarena.com with a specified username to connect to the SSH Feed, along with your public key attached.
You will be notified once your username has been authorised.
Mac OS X
Open the Terminal application.
Enter the following command in the Terminal window and hit enter:
ssh-keygen -t rsa
You will be prompted to specify the directory to store the key and a passphrase. Follow these prompts accordingly.
Navigate to the specified directory to retrieve your public key (.pub file)
Windows
Open the Command Prompt application.
Enter the following command in the Command Prompt window and hit enter:
ssh-keygen
You will be prompted to specify the directory to store the generated keys and a passphrase. Follow these prompts accordingly.
Navigate to the specified directory to retrieve your public key (.pub file)
Testing the Connection
Open up either the Terminal or Command Prompt application (depending on whether you're using Mac OS or Windows).
Note: you will need to replace [username] with the username given from the Feed Authentication sectionand [private key path] with the path to your private file i.e.
You will be prompted to enter in your passphrase, enter this in accordingly. This will connect you to the feed.
After entering in your password, immediately enter the following command and hit enter:
{"request": "init", "msg": {}}
Connecting
To connect to the feed, you will need to generate an SSH public/private key pair, and pass your public key on to Mustard Systems, who will provide you with a username. Your private key must be kept private from everyone -- if you suspect that it may have been exposed over an unencrypted channel or leaked in any way, you should generate a new pair and send the new public key to Mustard Systems.
To establish the initial SSH connection, you should use your username as well as your private key for authentication. After connection, the client should then send this message::
{ "request": "init", "msg": {} }
Please note, if an "init" request isn't made within 10 seconds of connecting to xenophobe you will be disconnected. We will not start heartbeating a connection until after this "init" request has been made.
After this, the server will start sending push messages detailing the available data for subscription.
The response to the "init" request will contain a unique session_id. Please provide this session id when raising any queries regarding the messages received for a given session.
If we have to close your connection for any reason, you will receive a push message::
where <reason> will be one of: "no init sent", "max connections hit", "connection rate limit hit", "slow reader", "internal disconnection requested", or "service error".
In addition to rate limiting connections, API requests are also rate limited. The response to a request that breached a rate limit will be as follows::
where request_id will only be present if you provided a request ID with the original request.
Recovering from disconnection
If your connection is terminated for any reason (including deliberately on your part due to a missed heartbeat, you should try to reconnect as soon as possible, reconnection attempts should be made with a 30 second interval. While you do not have an open connection, you must treat all markets as suspended. Once your connection is re-established, you must treat each market as suspended until you have received a <market-status-update> for that market. Until you receive that market update, it is not possible to know if any changes occurred to the market since you were last connected.
Details of SSH Connection
Once the SSH connection is established, the client should create a channel of type “session” and request a “shell” within that channel. All communication takes place on the “session” channel. A command line client will generally do this correctly. Some libraries may abstract away this level of detail as well.
If you are using a command line client to connect, either for testing or as a subprocess of the live client, you should tell it not to try to allocate a pseudo-tty. For the SSH client in most Linux distributions, this corresponds to the “-T” option. PuTTY for Windows uses the same option. It isn’t harmful to attempt to allocate a pseudo-tty, but it will result in a warning message.
Odds Distribution Service
IMGA Golf API documentation
June 2019 V1.2
Heartbeats
Clients will receive regular heartbeats once connected. Heartbeats will come every 3 seconds. If the last heartbeat received by a client was more than 10 seconds ago, the client should assume that there is either a network problem or they are lagging behind in processing messages. The client should suspend all markets which it is receiving from the feed until it receives another heartbeat message. Additionally, if no messages at all have been received in a 10 second period, the client should assume there is a network problem, disconnect from the feed and attempt to open a new connection.
IMPORTANT: If we are unable to send a heartbeat for 10 seconds (for example, if the SSH window size is at 0 and the client is unable to accept further messages), then we will terminate the connection.
Supported Sports
id
Name
sp.golf
Golf
Protocol
Communication with Xenophobe involves a bidirectional stream of JSON messages, encoded as UTF-8, sent over SSH.
Example requests and responses in this documentation are pretty-printed in places for clarity. On the feed itself, JSON objects sent in either direction must not contain newlines but are terminated with a single newline character (ASCII char 10 or 0x0A). This is to make it easier both to split out individual messages and to detect malformed requests.
There are two situations in which the server will send data to the client. One is that the client has made a request of some sort, in which case the server will send back response consisting of a JSON object containing a top-level key-value pair:
{ "mode": "resp", ... }
We refer to these as “Response” messages. The second situation is that the server just needs to push some data, such as a price change, to the client. In this case, the JSON object will contain top-level key-value pair:
{ "mode": "push", ... }
These are “Push” messages and may be sent by the server at any time after the initial login and registration requests are received and their responses sent, but never before.
Client requests will always receive a corresponding response message, but there may be Push messages sent in between the client sending the request and receiving the response, especially in the case where the client has subscribed to a data feed.
Market Behaviour
Due to limitations of tables on Gitbook, please request market behaviour speadsheet for more insight into market lifecycles and rules.
Results API
A separate API from the main odds feed for checking resulting post event
openapi: 3.0.1
info:
title: Results API
description: This is a Results API Server
version: 1.0.0
servers:
- url: https://resultsapi.mustardsystems.com/v1
description: Mustard IMG Results API
- url: https://resultsapi-staging.mustardsystems.com/v1
description: Mustard IMG Staging Results API
tags:
- name: healthcheck
description: Check the service is running
- name: results data
description: Everything results related
paths:
/ping:
get:
tags:
- healthcheck
summary: Check if service is up
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string
example: pong
/market/{market_id}:
get:
tags:
- results data
summary: Find market by ID
description: Returns results for a single market
parameters:
- name: market_id
in: path
description: ID of market to return
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Market'
/markets:
post:
tags:
- results data
summary: Find markets by IDs
requestBody:
description: List of market_ids to get results for.
content:
application/json:
schema:
$ref: '#/components/schemas/MarketIDsReq'
required: true
responses:
'200':
description: Returns results for multiple markets
content:
application/json:
schema:
$ref: '#/components/schemas/ArrayOfMarkets'
x-codegen-request-body-name: body
/event/{event_id}:
get:
tags:
- results data
summary: Find score by event ID
description: Returns score field for a single event
parameters:
- name: event_id
in: path
description: ID of event to return score field
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
components:
schemas:
SelectionResult:
type: object
properties:
selection_id:
type: string
example: bar_selection_id
result:
type: object
properties: {}
Market:
type: object
properties:
market_id:
type: string
example: foo_market_id
results:
type: array
items:
$ref: '#/components/schemas/SelectionResult'
ArrayOfMarkets:
type: array
items:
$ref: '#/components/schemas/Market'
MarketIDsReq:
type: object
properties:
market_ids:
type: array
items:
type: string
Event:
type: object
properties:
event_id:
type: string
example: foo_event_id
score:
type: object
properties: {}
securitySchemes:
basicAuth:
type: http
scheme: basic
security:
- basicAuth: []
FAQ
Is there a concurrent connection limit?
There is no connection limit, but the service uses a pool of database connections and when those are exhausted there may be a delay until those connections are released.
Is there a limit on requests? Either rate limiting or number of markets per request?
Yes, requests are rate limited to ensure the availability of the service at times of high demand.
How long after a market or selection has been resulted in the odds feed will it be made available in the results API and how long will those results persist on the results API.
The results should be made available almost instantaneously as will be written to the database upon successful settlement.
We intend to remove the results after 2 weeks, although that functionality has not yet been implemented. If you feel that's too short, please let us know.
If results are made available in the results API and then a resettlement occurs on the odds feed how is that reflected in the results API?
The database will be updated upon resettlement.
Will results still be available in the odds feed?
Yes resulting will not change in the odds feed. This service is primarily for checking results post round/tournament.
Maintenance
Please note that routine maintenance is scheduled on Monday's between 9am to 5pm GMT/BST. You may experience intermittent issues with our odds feed during this period.
It is recommended that you schedule any critical tests outside of this given period.
Liability Management
Each feed can have liability management enabled or disabled. If it's enabled, clients should notify Xenophobe whenever a bet is matched by sending an add_bet message:
The add_bet request may have the following properties:
selection_id The selection to which the bet should be applied.
market_id The market to which the bet should be applied.
bet_id An integer that uniquely identifies this bet. This is the client's choice, but it must not be reused for any other bet.
stake A string representing the stake taken. e.g. "20.13"
price A string representing the price at which the bet was taken. This must be decimal if we are sending decimal prices to you, or fractional otherwise. e.g. "2.30" or "8/1"
ew_terms If this is an each way bet, the terms at which it was taken. This is an object following the same format as described above in the :ref:Market Status Update <market-status-update> section.
currency A string representing the currency in which the bet was taken. At the moment, only GBP is supported.
timestamp An RFC 3339 string representation of the time at which the bet was taken. e.g. "2014-01-01 23:00:00.000000"
side The side of the bet that the client has accepted. This can be either "back" or "lay".
Clients should also notify Xenophobe whenever all or part of a bet is voided by sending a void_bet message::
{
"mode": "resp",
"status": "error",
"msg": {
"bet_id": 123456,
"error_text": "void_bet must have a non zero positive value for stake. Stake value given: '-10.0'",
},
"publish_time": "2014-01-01 22:22:22.123456",
}
Clients can also retrieve data about a bet_id by sending a get_bet message and providing the bet_id of interest:
publish_time is the time the message was published by the feed.
Market categorization
Once a connection is established, the server will proceed to send a list of the sports, competitions, events, market types, and markets that are available. The type of entity is determined by the "type" attribute. However, each entity has an ID which is globally unique, and is (with the exception of markets, which have no prefix) prefixed with a short code followed by a period in order to make it easy to determine the entity type when only the ID is available. The entity types and associated codes are:
Market Type
Code
Sport
sp
competition
comp
event
ev
market_type
mt
Note that all entity IDs and names are unicode strings (JSON is encoded using UTF-8).
In addition to the id and name, an event may have a competition id (the value will be null in the case where there is no associated competition). An event usually has a start time, but it may be null if it is unknown. It also has a "stage" property, which is "pre_play" before the event starts, "in_play" after it starts, "ended" once finished, and null if it is not known whether the event has started or in the case where the distinction between pre-match and in-running is meaningless.
The meta property contains additional information about the event. For golf, it is a list containing a single object. That object will contain the event_id key, whose value is the IMG DDE ID of the event in question. Note that some other keys of arbitrary JSON-serialisable nature may be added to that object in order to satisfy customers' needs.
Score update message
Here is a sample message representing a score update::
The score field is arbitrary JSON; its structure depends on the sport. For golf, it is the latest state of the leaderboard as per IMG DDE leaderboard endpoint.
Clients will receive score update if they are subscribed to the corresponding score tags e.g. ev.golf_1345 or sp.golf.
Market Type Message
Here is a sample message representing a market type:
Market definitions contain information that rarely or never changes about a market. Market definitions will be sent as a series of push messages containing property type set to market. The following example shows the simplest sort of market definition::
The properties of this object have the following semantics:
id
The id is a string, and will never change for a given market. It will also be globally unique -- no two markets will have the same ID, even in different events or sports.
name
The market display name.
tags
This property represents what sport, competition, event(s), and market type(s) the market is part of. It may (rarely) change due to corrections.
stage
This field's value will be one of: "pre_play", "in_play", or "ended". The use of the "pre_play" and "in_play" statuses differs between market types -- some markets may not appear in the "pre_play" or "in_play" stages at all, depending on whether they are meaningful to that market type.
When a market is in the "ended" stage, trading should stop and the market should be hidden from customers' view. Note that markets may change stages in reverse order -- this is rare, but may happen in the case of a mistake being corrected.
numwinners
The number of winning selections in the market. This will always be 1 or more. It will only change in the case of corrections.
meta
Arbitrary extra market information. This may be null.
Every market will have exactly one sport, but will usually also have one competition, one event and one or more market types. These are defined by the "tags" property on a market definition.
If more than one market definition is sent with a given id attribute, the later market definition is considered an update, and should replace the earlier one. This update may change any of the attributes (except id), so the client should re-process the definition and decide whether to update its subscriptions (see Subscription)
Removals
After the market's stage reaches "ended", it may be removed. Note that a market which has been removed may be re-added again later, with the same market id, for example, if the removal was in error. Removal of a market is signaled by the following message (note that a list of ids is provided)::
Upon competition removal, any event with that competition_id will also be removed; along with any markets with those event_ids. Only the single remove_competitions message will be sent.
The same applies for a remove_events message. All markets under it are removed; only the single remove_events message is sent.
Un-voiding
Below is an example of a selection being voided and a subsequent message of the selection being re-activated.
Selection g:520 gets withdrawn and his stake is returned.:
Selection g:520's status reverts to being active. It should be noted there will be no update to the settlement information (stake + payout), it must inferred from status transitioning from settled → active.:
Clients subscribe to tags (see the "tags" property on the Market Definition Message). Subscriptions are made separately to markets and scores, for example, clients should send a message of the following form:
Note that the market_tags attribute is a list of tags or market IDs to which the client will be subscribed. The score_tags attribute is a list of tags to which the client will be subscribed.
For backwards compatibility, the old attribute tags is also supported, being treated the same way as market_tags::
Note also that both market_tags and score_tags are additive, for example, the below subscription will provide messages for both mt.outright markets and mt.threeball markets as well as score updates for both ev.golf_1345 and ev.golf_2456 events::
Upon receipt of the "subscribe" message, the server will send one or more Market Status Update messages per market to initialise the client state, followed by a response::
Depending on the existence of the score for an event, a client will also receive the latest score update for each event they have subscribed to.
To unsubscribe, a client should send the same type of message as with subscription, but with value unsubscribe for the request property.
When a market has been removed, the server will automatically stop sending messages, so the client does not need to take any action. The same is true for an event or competition being removed.
Market Status Update
Clients will receive market status update messages for markets to which they have subscribed. More than one market may be updated in a single market_update message. Below is an example of a market update message::
The properties of a single market update have the following semantics:
id
id of the market.
status
This may be one of "suspended" or "active". Active means betting is allowed, suspended means betting should be prohibited.
display
Display recommendation (boolean).
In the case that multiple similar markets exist, we may recommend that one of the set is displayed, and the others are not. For example, in the event that we provide a number of handicap markets with different handicaps, we may use this field to recommend that the market with the most competitive prices be displayed.
It is safe to display markets that we recommend be hidden, and vice versa.
meta
Arbitrary extra market information. This may be null.
For golf, this takes the form:
round_num
Which round does this market relate to?
This key is present only when relevant to the market. e.g.
round leader/hole winner markets have an associated ``round_num``,
but whole tournament markets (such as winner) do not.
hole_num
Which hole does this market relate to?
This key is present only when relevant to the market. e.g.
hole winner markets have an associated ``hole_num``,
but whole tournament/round markets (such as winner/round leader) do not.
golfer_id
Which golfer does this market relate to?
This key is present only when the market relates to a single golfer
e.g. over/under finishing position, hole score.
group_id
Which group of golfers (i.e. twoball/threeball) does this market relate to?
This key is present only when the market relates to a single group of golfers
e.g. twoball/threeball hole winner
course_id
Which course does this market relate to?
This key is present only for course specific round leader markets
selection_updates
A list of changes to the market selections.
This field will always be present, though it is empty in the case where no selections have changed.
Every selection has a string property id, which is only guaranteed to be unique within a single market.
The rest of the selection properties will only be present when they need to be updated or the first time the selection is seen. The initial selection update will always contain these properties:
name
The selection name.
price
The selection's price, as a string in fractional odds format. If no valid selection price can be generated, you will receive ``null``. In this case, the market will be suspended.
max_stake
The maximum stake which should be allowed at this price. This field will only be populated if :ref:`liability-management` is enabled. If no valid selection max stake can be calculated, you will receive ``null``. In this case, the market will be suspended.
status
Status may be one of ``active``, ``suspended``, ``removed`` or ``settled``.
If the status is ``removed``, the ``reason`` property will be set.
If the status is ``settled``, the ``settlement`` property will be set.
display
Display recommendation (boolean).
In the case that multiple similar selections exist, we may recommend that only some of the set are displayed. For example, consider an over/under finishing position market for a given golfer. At the start of the tournament, the selections may be "Over 20.5" and "Under 20.5". If the golfer plays well, we may add "Over 5.5" and "Under 5.5", and recommend that the original two selections be hidden. It is safe to display selections that we recommend be hidden, and vice versa.
The rest of the selection properties will only be provided when updated, not on the addition of a selection, and should be considered to default to undefined or empty:
reason
Reason for the current status, only applicable to removed status. Valid values are:
withdrawn -- the selection has withdrawn from competition
cut -- the selection has missed the cut (applicable to golf markets)
added_erroneously -- the selection was only listed due to a mistake
exceptional_circumstances -- something else has happened
In the case of a reason of exceptional_circumstances, the note property of the selection shall be set to some value expanding on the details of said circumstances:
settlement
An object containg two float fields, stake_returned and payout_returned.
For example, a bet on the winner of an outright market (with no dead heat) will have settlement stake_returned=0.0, payout_returned=1.0. A void selection (i.e. a non-runner) will have settltment stake_returned=1.0, payout_returned=0.0.
In the case of a re-settlement, a new settlement will be sent for a selection or market, this should override any previous settlements you have previously received.
note
A human-readable explanatory string.
meta
Arbitrary extra selection information (for example, which golfer does this selection relate to?)
For golf, this takes the form:
**golfer_id**
Which golfer does this selection represent?
Present only if the selection represents a golfer winning the market. Hole score selections (birdie, par, etc), for example, will not have this key.
**finishing_position**
What is the golfer's finishing position in the market?
Present only for a subset of market types (e.g. win, winalternateew).
**player_status**
What is the golfer's status in the market?
Present only for a subset of market types (e.g. win, winalternateew).
**forecast_order**
What is the golfer's forecast order in the selection?
Present only for the forecast market type.
e.g. [101, 102] meaning golfer 101 is forecast to finish ahead of golfer 102.
If a client sees a selection with an id that it has not seen before, it should add the selection to the market. Once added, a selection will always be listed in the feed, but may be marked as being removed. In the case of a selection being removed as reason = added_erroneously, the selection should never be displayed; other cases are up to the client's discretion, although it is probably simplest to hide removed selections in all cases.
ew_terms
This property will only be set for markets which allow each-way betting -- in other cases it will be null. Markets may allow each-way bets at some times but not others. The property will always exist.
The value is an object which contains fraction and places properties. The fractionvalue is a string representing the fraction of the win odds used for the place odds, such as "1/4" to mean that the place odds are 1/4 of the win odds. The places property value is a number representing the number of places for the place part of the bet.
related_place_markets
This property will only be set for markets which allow each-way betting -- in other cases it will be null.
It will be a map from a number of places, represented as a string (e.g. "5"), to the market_id which represents that market.
This will contain all historic each-way related markets, not just the current one, i.e. {"3": "top_3_market", "5": "top_5_market"}.
FAQ
Please review below FAQ's for any related questions you may have.
What happens if a client disconnects before markets are settled/suspended?
The client receives a full image on reconnection which overwrites all older prices. The client will need to process the market message for every market, and the market_update message for every market that matches their subscription.
When are old events purged from the feed?
Up to 2 days after the event.
What happens when my application disconnects, and reconnection is established after bets have been settled?
You will receive settlement information for that event.
Will I receive old prices when reconnecting after a broken connection?
Subscriptions are not shared between connections. In a scenario of a reconnect, you will receive a market message with all the markets available just as you do when you initialize a connection. You then must re-subscribe to the markets. Once you have re-subscribed you will receive a market_update for all the markets which match your subscriptions. Each connection is independent and does not hold memory of its previous connection.
For dead heat settlement, are you going to use fraction or decimal values for stake and payout?
We won't send fractions, we'll send decimals (like in the example), but that's the correct structure.
"settlement": {
"stake_returned":0.0,
"payout_returned": 0.5
},
Removing a Market
Elaborating question:
If you want to "remove" a market created with the following "market" message:
"type": "market", "id": "golf_14754_threeball_hole~7cgolfer_ids~3d24~2c1544~2c1548~7chole_num~3d1~7cround_num~3d1",
Will you send this?
"type": "remove_markets", "msg": ["golf_14754_threeball_hole~7cgolfer_ids~3d24~2c1544~2c1548~7chole_num~3d1~7cround_num~3d1"] or this: "type": "remove_markets", "msg": ["golf_14754_threeball_hole"]
To answer this:
Every market message will have a property called ID. Let's say that this property is of type MarketID. It's a "slug", which is defined in the documentation:
“A slug is defined as a string which may only contain the following characters: digits 0-9, a-z and A-Z, hyphen (-), underscore (_), period (.), and tilde (~). A slug is represented equivalently in ASCII or UTF-8 and may be used in URLs without escaping.”
A market's id property is globally unique - we will never re-use them. The msg property of the remove_markets message has type List[MarketID]. Each ID we send will refer to either one or zero markets that we've sent market messages for. The zero there is because it's possible that we would send a remove_markets message for a market we hadn't sent a market message for. We don't expect this ever to actually happen in practice though.
Also note that markets are part of a hierarchy. Every market has a parent event, and every event a parent competition. If we send a remove_events message, then any market which belongs to those events should also be removed by that message.
Why is the feed not populating the start_time property for a pre_play market message?
Start time for Markets is always null. That's never set. We do set the start time for events which is dependent on when the Tee Times become available.
Which Tags can I subscribe to
You can subscribe to any combination of tags (sport, competition, event, and market type), but the additive nature means that multiple subscriptions are not usually required.
Some examples:
["sp.golf"] will subscribe to all golf markets
["comp.golf_pga"] subscribes to all PGA Tour golf markets
["ev.golf_14586"] will subscribe to all markets from event ev.golf_14586
["ev.golf_14586", "mt.twoball"] will subscribe to all markets from event ev.golf_14586, and also all markets (from any event) of type mt.twoball
Should we expect to continue receiving Odds after the tournament ends?
Yes, in case of late entries for example. You should see the markets listed as "ended" which is to indicate that you should not listen to any further updates.
We have noticed that within the market_update feed, under the selection_updates the price is returned as 0/1. Is this expected? Should we suspend markets in this case?
That usually happens when a selection does not have a legitimate price for some reason. When it happens, the selection itself should either be settled or suspended
Do we only provide odds for a player making the cut?
That's correct. We don't offer odds that a player won't make the cut.
Is there a way to see which market types will be offered for a particular event?
The market reports are the best way to tell. As a rule, Mustard will create all markets which are appropriate for that event type (L1, L2 etc)
Currently after we connect, we send the following command: {"request": "init","msg": {"tags": ["sp.golf", "comp.golf_europga", "ev.golf_14759","mt.threeball_hole"]}}. We expected this to return all 3-ball markets for The Genesis Invitational however it seems we get all markets back. Can you advise if we are requesting 3 ball markets correctly?Do we only provide odds for a player making the cut?
You'll receive the union of the markets which match your subscription, not the intersection: if you subscribe to "ev.golf_7" and "mt.outright", you'll get all markets for event ID 7, and any market of type "mt.outright", rather than markets of type "mt.outright" in event 7.
Currently, it's not possible to subscribe to all markets of a particular type within a particular event.
What are the possible ways a client can subscribe to a market?
They can subscribe to any combination of tags (sport, competition, event, and market type), but the additive nature means that multiple subscriptions are not usually required.
Some examples:
["sp.golf"] will subscribe to all golf markets
["comp.golf_pga"] subscribes to all PGA Tour golf markets
["ev.golf_14586"] will subscribe to all markets from event ev.golf_14586
["ev.golf_14586", "mt.twoball"] will subscribe to all markets from event ev.golf_14586, and also all markets (from any event) of type mt.twoball
We noticed that an initial market_update returned with 3 selections, then another one with just one; changing the price for one selection - is this expected? (logs below)
2021-02-19 20:25:50.421 [main] INFO ssh_traffic:26 - {"mode":"push","type":"market_update","msg":[{"id":"golf_14759_threeball_hole~7cgolfer_ids~3d547~2c4787~2c5179~7chole_num~3d9~7cround_num~3d2","status":"active","ew_terms":null,"meta":{"group_id":11,"hole_num":9,"round_num":2,"event_id":"254"},"selection_updates":[{"display":true,"id":"g:547","meta":{"golfer_id":3397},"name":"Cameron
2021-02-19 20:26:02.295 [main] INFO ssh_traffic:26 - {"mode":"push","type":"market_update","msg":[{"id":"golf_14759_threeball_hole~7cgolfer_ids~3d547~2c4787~2c5179~7chole_num~3d9~7cround_num~3d2","status":"active","ew_terms":null,"meta":{"group_id":11,"hole_num":9,"round_num":2,"event_id":"254"},"selection_updates":[{"id":"g:4787","price":"9/5"}],"display":true,"related_place_markets":null}]}
Yes, this is expected. As explained in https://docs.imgarena.com/mustard-systems-odds-distribution-service/-MKdexAVg8N0obU0S5dH/odds-distribution-service/feed-specification#market-status-update, the selection_updates field will only contain selections that have changed.
When will markets be sent to us?
Markets cannot be generated until static data is received i.e. tee times.
How many co-current connections can a client have over SSH?
2 connections per customer to each environment.
How can I subscribe to a subset of markets?
A subscription is a set of tags. A tag can be a sport, competition, event, market type, or market id. If multiple tags are provided, you will receive markets that match any of the provided tags. For example, "tags": ["ev.golf_1", "mt.outright"] will provide both "all markets for ev.golf_1" and "all markets of type mt.outright"
Why aren't I receiving messages for this market?
This may be because the market does not match your subscription - please note that each session can only have one subscription at time, for example, subscribing to ev.golf_2 after previously subscribing to ev.golf_1 will mean you no longer get markets from ev.golf_1.
This may also be because the market is not available for that event. If you think you should be receiving a market but aren't, please provide your session ID along with the subscription message that are you using
I got a market_update message but some selections were missing?
Only the first market_update message will necessarily contain every selection. Future messages will only contain deltas, for example if only one selection changes, the update message will only contain that selection.
What does resulting data look like? What does a dead heat look like?
There are two fields: stake_returned and payout_returned. Both will be decimals between 0.0 and 1.0 inclusive. A losing selection will have 0.0 for both stake and pay out returned. A winning selection will typically have 0.0 stake and 1.0 pay out. If two selections dead-heat, they will both get 0.5 for payout_returned. A void selection would get 1.0 stake and 0.0 pay out.
How do we result each-way markets?
Results are provided for the main market and the related place market independently. Clients are responsible for using these accordingly. This is because each-way terms can change during the lifecycle of a market. Related place markets are published as a dictionary in the market_update message, for example "related_place_markets": {"4": "golf_123_topn7cnplaces3d4"]"} means that the results for 4 places can be found in the market golf_123_topn7cnplaces3d4.
What is a "related place market"?
Some markets will offer each-way terms. Depending on the each-way settings (e.g. 4 places or 5 places), clients will need to look at more than just the main market to settle customer bets. For example, if the main outright market has each-way settings for 4 places, the related place market would be the "Top 4" market. A customer's bet on selection S would depend on that selection's result in both the main outright and the related place markets. Related place markets are published as a dictionary in the market_update message, for example "related_place_markets": {"4": "golf_123_topn7cnplaces3d4"]"} means that the results for 4 places can be found in the market golf_123_topn7cnplaces3d4.
Are the each-way terms static, or do you update them as the tournament goes on? Also, for the Alternative each way, do the each-way terms update as the tournament goes on or do they remain static for a period of time and then are removed from the offering?
‘Top Region’ markets have moving EW terms so these are updated throughout the tournament to give the correct offering for the changes in the market. The ‘Alternate EW’ markets have static EW terms which don’t change at any point during the tournament.
Market Publishing Timetable
L1
LPGA (same as L1 unless specified)
Field
Winner
Monday 11 AM
Tuesday 11 AM
Top 5
Monday 5 PM (or 60 hours before tournament start)
Tuesday 5 PM
Top 10
Monday 5 PM (or 60 hours before tournament start)
Tuesday 5 PM
Top 20
Monday 5 PM (or 60 hours before tournament start)
Top 30
Monday 5 PM (or 60 hours before tournament start)
Top 40
Monday 5 PM (or 60 hours before tournament start)
Winner Without <player name>
When applicable (guideline if true price < 2.5 at round end)
Win Only
Monday 11 AM
Tuesday 5 PM
Alt EW 1
Monday 5 PM (or 60 hours before tournament start)
Tuesday 5 PM
Alt EW 2
Monday 5 PM (or 60 hours before tournament start)
Tuesday 5 PM
Alt EW 3
Monday 5 PM (or 60 hours before tournament start)
Tuesday 5 PM
Alt EW 4
Monday 5 PM (or 60 hours before tournament start)
N/A
Alt EW 5
Monday 5 PM (or 60 hours before tournament start)
N/A
Round Leader
Monday 5 PM (or 60 hours before tournament start)
Tuesday 5 PM
Round Leader Top 5
36 Hours Before Event AND Tee times known for 2 hours
N/A
Round Leader Top 10
36 Hours Before Event AND Tee times known for 2 hours
N/A
Tournament Par 3 Winner
36 Hours Before Event AND Tee times known for 2 hours
N/A
Tournament Par 4 Winner
36 Hours Before Event AND Tee times known for 2 hours
N/A
Tournament Par 5 Winner
36 Hours Before Event AND Tee times known for 2 hours
N/A
To make the Cut
36 Hours Before Event AND Tee times known for 2 hours
N/A
Forecast
Round 4 Tee times know for 2 hours
Winner w/o Amateurs
Monday 11 AM
Round Leader w/o Amateurs
Monday 5 PM (or 60 hours before tournament start)
Top 5 w/o Amateurs
Monday 5 PM (or 60 hours before tournament start)
Top 10 w/o Amateurs
Monday 5 PM (or 60 hours before tournament start)
Top 20 w/o Amateurs
Monday 5 PM (or 60 hours before tournament start)
Selected
Top Region
36 Hours Before Event AND Tee times known for 2 hours
Tuesday 5 PM
Top Group
36 Hours Before Event AND Tee times known for 2 hours
Tuesday 5 PM
Tournament Matchbets
36 Hours Before Event AND Tee times known for 2 hours
Tournament Matchbets (With Tie)
36 Hours Before Event AND Tee times known for 2 hours
Round Matchbets
36 Hours Before Event AND Tee times known for 2 hours
Round Matchbets (With Tie)
36 Hours Before Event AND Tee times known for 2 hours
Golfer
Finishing Positions
36 Hours Before Event AND Tee times known for 2 hours
N/A
Selected Round Scores
Tee times known for 2 hours AND any prior rounds complete
N/A
Hole Score
Tee times known for 2 hours AND any prior rounds complete
To Make Putt
Tee times known for 2 hours AND any prior rounds complete
N/A
Score on Groups of Holes
Tee times known for 2 hours AND any prior rounds complete
Number of GIR in the round
Tee times known for 2 hours AND any prior rounds complete
N/A
To Hit a GIR on the Next Hole
Tee times known for 2 hours AND any prior rounds complete
N/A
Drive to finish… (par 4/5)
Tee times known for 2 hours AND any prior rounds complete
N/A
Distance from Pin
Tee times known for 2 hours AND any prior rounds complete
N/A
Tee shot to Finish within <n> Feet of the pin
Tee times known for 2 hours AND any prior rounds complete
N/A
Tee shot to finish (Par 3)
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Putts on the Hole
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Putts in the Round
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Birdies (or better) in the Round
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Birdies (or better) in the Tournament
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Pars in the Round
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Pars in the Tournament
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Bogeys (or worse) in the Round
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Bogeys (or worse) in the Tournament
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Fairways Hit
Tee times known for 2 hours AND any prior rounds complete
N/A
Group
2 balls
36 Hours Before Event AND Tee times known for 2 hours
2 balls with tie
36 Hours Before Event AND Tee times known for 2 hours
3 balls
36 Hours Before Event AND Tee times known for 2 hours
3 ball Matchups
Tee times known for 2 hours AND any prior rounds complete
Group Hole Score
Tee times known for 2 hours AND any prior rounds complete
2 Ball Hole Winner
Tee times known for 2 hours AND any prior rounds complete
2 Ball Hole Winner with tie
Tee times known for 2 hours AND any prior rounds complete
3 Ball Hole Winner
Tee times known for 2 hours AND any prior rounds complete
Hole Winner (matchup)
Tee times known for 2 hours AND any prior rounds complete
Next Player to Win a Hole
Tee times known for 2 hours AND any prior rounds complete
N/A
Who will Win a Group of Holes
Tee times known for 2 hours AND any prior rounds complete
Number of GIR for Group on a Hole
Tee times known for 2 hours AND any prior rounds complete
N/A
Who will Hit the Longest Drive
Tee times known for 2 hours AND any prior rounds complete
N/A
Distance of the Longest Drive
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Drives to Finish on the Fairway
Tee times known for 2 hours AND any prior rounds complete
N/A
Nearest the Pin
Tee times known for 2 hours AND any prior rounds complete
N/A
Distance of Nearest the Pin
Tee times known for 2 hours AND any prior rounds complete
N/A
Number of Putts in the Group on a Hole
Tee times known for 2 hours AND any prior rounds complete
N/A
2 Ball Par 3 Winner
Tee times known for 2 hours AND any prior rounds complete
N/A
2 Ball Par 4 Winner
Tee times known for 2 hours AND any prior rounds complete
N/A
2 Ball Par 5 Winner
Tee times known for 2 hours AND any prior rounds complete
N/A
3 Ball Par 3 Winner
Tee times known for 2 hours AND any prior rounds complete
N/A
3 Ball Par 4 Winner
Tee times known for 2 hours AND any prior rounds complete
N/A
3 Ball Par 5 Winner
Tee times known for 2 hours AND any prior rounds complete
N/A
First player to be under par
Tee times known for 2 hours AND any prior rounds complete
N/A
First player to be over par
Tee times known for 2 hours AND any prior rounds complete
N/A
Non-Golfer
Winning Score
36 Hours Before Event AND Tee times known for 2 hours
N/A
Winning Margin
36 Hours Before Event AND Tee times known for 2 hours
Will there be a hole-in-one
36 Hours Before Event AND Tee times known for 2 hours
N/A
Lowest 18-hole score
36 Hours Before Event AND Tee times known for 2 hours
N/A
Supported Market Types
Note: These market type IDs are provisional and subject to change. Final confirmation of market type IDs will be given prior to the start of your feed integration work.
Market
Example Market type
Market Description
Field
Winner
mt.outright
Betting on which golfer will be the winner of the tournament
Top 5
mt.top_n
Betting on which golfers will finish the tournament in the designated number of places.
Top 10
mt.top_n
Betting on which golfers will finish the tournament in the designated number of places.
Top 20
mt.top_n
Betting on which golfers will finish the tournament in the designated number of places.
Top 30
mt.top_30
Betting on which golfers will finish the tournament in the designated number of places.
Top 40
mt.top_40
Betting on which golfers will finish the tournament in the designated number of places.
Winner Without <player name>
mt.winner_without
There will be a “Winner Without <player name>” market offered in situation where one player has become very likely to win and there is still a significant portion of the tournament remaining.
Win Only
mt.winonly
Win books with no each-way terms, to provide enhanced win prices.
Alt EW 1
mt.winalternateew
Win books with different each-way terms, to give customers more variation.
Alt EW 2
mt.winalternateew
Win books with different each-way terms, to give customers more variation.
Alt EW 3
mt.winalternateew
Win books with different each-way terms, to give customers more variation.
Alt EW 4
mt.winalternateew
Win books with different each-way terms, to give customers more variation.
Alt EW 5
mt.winalternateew
Win books with different each-way terms, to give customers more variation.
Round Leader
mt.round_leader
Betting on which golfer will be the leader of the tournament at the end of the round
Round Leader Top 5
mt.round_leader_top_n
Betting on which golfer will be int the top “n” of a tournament at the end of the round
Round Leader Top 10
mt.round_leader_top_n
Betting on which golfer will be int the top “n” of a tournament at the end of the round
Tournament Par 3 Winner
mt.tournament_par3_winner
Which player will have the best score on the par 3’s over the tournament
Tournament Par 4 Winner
mt.tournament_par4_winner
Which player will have the best score on the par 4’s over the tournament
Tournament Par 5 Winner
mt.tournament_par5_winner
Which player will have the best score on the par 5’s over the tournament
To make the Cut
mt.make_cut
Betting on a player to make the 36 hole cut or not
Forecast
mt.forecast
Betting on which two players will finish first and second in the tournament
Winner w/o Amateurs
mt.winner_without_amateurs
Betting on which golfer will be the winner of the tournament without Amateurs
Round Leader w/o Amateurs
mt.round_leader_without_amateurs
Betting on which golfer will be the leader of the tournament at the end of the round without Amateurs
Top 5 w/o Amateurs
mt.without_amateurs_top_n
Betting on which golfers will finish the tournament in the designated number of places without Amateurs
Top 10 w/o Amateurs
mt.without_amateurs_top_n
Betting on which golfers will finish the tournament in the designated number of places without Amateurs
Top 20 w/o Amateurs
mt.without_amateurs_top_n
Betting on which golfers will finish the tournament in the designated number of places without Amateurs
Selected
Top Region
mt.topregion
Betting on which golfer will finish higher from a selection of golfers
Top Group
mt.topgroup
Betting on which golfer will finish higher from a selection of golfers
Tournament Matchbets
mt.matchbet
Betting on the best overall tournament score between 2 players
Tournament Matchbets (With Tie)
mt.matchbet_tie
Betting on the best overall tournament score between 2 players
Round Matchbets
mt.round_matchbet
Betting on the round winner between 2 players (not in the same 2/3 ball)
Round Matchbets (With Tie)
mt.round_matchbet_tie
Betting on the round winner between 2 players (not in the same 2/3 ball)
Golfer
Finishing Positions
mt.over_under_finish
Betting on the over/under line of a players finishing position for the tournament
Selected Round Scores
mt.over_under_round_score
Betting on the over/under line of a players total score for a round. E.g. Tiger Woods Round O/U 70.5
Hole Score
mt.oneball_hole
Betting on what score a player will make on a hole. There will be 3 selections (Birdie or better, Par, Bogey or worse).
To Make Putt
mt.make_putt
Betting on whether a player will make the putt they have upcoming.
Score on Groups of Holes
mt.hole_group_score
Betting on a player’s total score over a group of holes
Number of GIR in the round
mt.over_under_gir
Betting on the over/under of how many Greens in Regulation a player will hit in a round
To Hit a GIR on the Next Hole
mt.hit_gir
Betting on whether a player will hit a GIR on the next hole (possibly par 3 only at first)
Drive to finish… (par 4/5)
mt.drive_lie
Betting on what lie the player will have after the tee shot.
Distance from Pin
mt.over_under_distance_from_pin
Betting on the over/under distance from the pin a player’s approach shot finishes on a hole (possibly par 3 only at first).
Tee shot to Finish within <n> Feet of the pin
mt.tee_shot_finish_near_pin
Betting on whether a player’s tee shot on a par 3 finishes inside a specified distance from the pin
Tee shot to finish (Par 3)
mt.tee_shot_lie
Betting on what lie the player will have after the tee shot. Selections can include Hole, Green, Fairway/Fringe, Rough, Bunker and Water. Not all selections can be offered on each hole.
Number of Putts on the Hole
mt.player_hole_putts
Betting on the number of putts taken by a player on a hole.
Number of Putts in the Round
mt.player_round_putts
Betting on the total number of putts a player will take in his round.
Number of Birdies (or better) in the Round
mt.player_round_birdies
Betting on the total number of birdies (or better) a player will make in a round
Number of Birdies (or better) in the Tournament
mt.player_tournament_birdies
Betting on the total number of birdies (or better) a player will make in a tournament
Number of Pars in the Round
mt.player_round_pars
Betting on the total number of pars a player will make in a round
Number of Pars in the Tournament
mt.player_tournament_pars
Betting on the total number of pars a player will make in a tournament
Number of Bogeys (or worse) in the Round
mt.player_round_bogeys
Betting on the total number of bogies (or worse) a player will make in a round
Number of Bogeys (or worse) in the Tournament
mt.player_tournament_bogeys
Betting on the total number of bogies (or worse) a player will make in a tournament
Number of Fairways Hit
mt.over_under_fairways_hit
Betting on the over/under of how many Fairways a player will hit in a round
Group
2 balls
mt.twoball
Betting on the round winner (lowest score) of each 2 ball
2 balls with tie
mt.twoball_tie
Betting on the round winner (lowest score) of each 2 ball
3 balls
mt.threeball
Betting on the round winner (lowest score) of each 3 ball
3 ball Matchups
mt.threeball_matchup
Betting on the round winner (lowest score) of 2 out of the 3 players in each 3 ball
Group Hole Score
mt.group_hole_score
Betting on the total score the players in the 2/3 ball will make on a hole.
2 Ball Hole Winner
mt.twoball_hole
Betting within each 2/3 ball on the next player to win the hole (have the lowest score) in that 2/3 ball.
2 Ball Hole Winner with tie
mt.twoball_hole_tie
Betting within each 2/3 ball on the next player to win the hole (have the lowest score) in that 2/3 ball.
3 Ball Hole Winner
mt.threeball_hole
Betting within each 2/3 ball on the next player to win the hole (have the lowest score) in that 2/3 ball.
Hole Winner (matchup)
mt.threeball_hole_matchup
Betting within each 3 ball on the next player to win the hole between 2 of the 3 players in the 3 ball
Next Player to Win a Hole
mt.next_to_win_hole
Betting within each 2/3 ball on the next player to win a hole in that 2/3 ball from the time the bet is struck.
Who will Win a Group of Holes
hole_group_winner
Betting on a 2/3 ball winner over a group of holes
Number of GIR for Group on a Hole
mt.total_group_gir
Betting on the total number of GIR’s for the 2/3 balls on a hole (possibly par 3 only at first)
Who will Hit the Longest Drive
mt.longest_drive
Betting on which player in the 2/3 ball will hit the longest drive on a hole. (no Par 3’s)
Distance of the Longest Drive
mt.over_under_longest_drive_distance
Betting on the over/under of the length of the longest drive in the 2/3 ball on a hole (no Par 3’s)
Number of Drives to Finish on the Fairway
mt.group_drives_to_fairway
Betting on how many tee shots will finish on the fairway
Nearest the Pin
mt.group_nearest_pin
Betting on which players tee shot will finish closest to the hole in a 2/3 ball
Distance of Nearest the Pin
mt.distance_nearest_pin
Betting on the distance from the pin of the nearest the pin shot
Number of Putts in the Group on a Hole
mt.group_hole_putts
Betting on the total number of putts taken by the 2/3 ball on a hole.
2 Ball Par 3 Winner
mt.group_par3_winner
Which player will have the best score on the par 3’s in a 2 ball
2 Ball Par 4 Winner
mt.group_par4_winner
Which player will have the best score on the par 4’s in a 2 ball
2 Ball Par 5 Winner
mt.group_par5_winner
Which player will have the best score on the par 5’s in a 2 ball
3 Ball Par 3 Winner
mt.group_par3_winner
Which player will have the best score on the par 3’s in a 3 ball
3 Ball Par 4 Winner
mt.group_par4_winner
Which player will have the best score on the par 4’s in a 3 ball
3 Ball Par 5 Winner
mt.group_par5_winner
Which player will have the best score on the par 5’s in a 3 ball
First player to be under par
mt.group_first_under_par
Betting on which player in a 2/3 ball will be the first to have a total score under par for the round.
First player to be over par
mt.group_first_over_par
Betting on which player in a 2/3 ball will be the first to have a total score over par for the round.
Non-Golfer
Winning Score
mt.winning_score
Betting on the 72 hole score of the tournament winner
Winning Margin
mt.winning_margin
Betting on the margin of victory the tournament winner has (includes Playoff as a selection)
Will there be a hole-in-one
mt.hole_in_one
Betting on whether there will be a hole-in-one in the tournament or not
Lowest 18-hole score
mt.lowest_18_hole_score
Betting on the score of the lowest 18 hole score for the tournament
Match Play
Match Play – Tournament Winner
mt.outright
Betting on which golfer will be the winner of a Match Play tournament
Match Play – To Reach Final
mt.toreach|stage=final
Betting on which golfers will reach the final of a Match Play tournament
Match Play – To Reach Semi-Final
mt.toreach|stage=semi
Betting on which golfers will reach the semi-final of a Match Play tournament
Match Play – To Reach Quarter Final
mt.toreach|stage=quarter
Betting on which golfers will reach the quarter final of a Match Play tournament
Match Play – Match Winner
mt.match_winner
Betting on which player will win the match
Match Play – Match Winner with tie
mt.match_winner_tie
Betting on which player will win the match
Match Play – Group Winner
mt.group_winner
Betting on which player will win the group in a Match Play tournament
Match Play – Hole Winner
mt.hole_winner
Betting on which player will win the hole
Team Match Play - Tournament Winner
mt.outright
Betting on the winning team
Team Match Play - Team to Lift Trophy
mt.lift_trophy
Betting on which team will lift the trophy
Team Match Play - Correct Score
mt.correct_score
Betting on the correct score of the tournament
Team Match Play - Match Winner
mt.match_winner_tie
Betting on who will win the match
Team Match Play - Top Points Scorer
mt.top_points_scorer
Betting on who will be the top points scorer
Team Match Play - Top Team Points Scorer
mt.top_team_points_scorer
Betting on who will be the top points scorer in a team
Team Match Play - Top Wildcard Points Scorer
mt.top_wildcard_points_scorer
Betting on who will be the top points scorer of the wildcards
Team Match Play - Top Rookie Points Scorer
mt.top_rookie_points_scorer
Betting on who will be the top points scorer of the rookies
Team Match Play - Hole Winner
mt.hole_winner
Betting on who will win the hole
Team Match Play - Session Winner
mt.session_winner
Betting on which team will win the session
id
Name
Description
mt.outright
Winner
Which golfer will be the winner of the tournament
mt.outright
Alternate Each-Way Win Markets
Win books with different each-way terms (e.g. if the Win market has EW 1/4 4, alternate markets may be used to additionally offer 1/5 5, etc)
mt.top_n
Top “N”
Which golfers will finish the tournament in the designated number of places
mt.winner_without
Winner Without <player name>
Which golfer wins if <player name> is excluded
mt.round_leader
Round Leader
Which golfer will be the leader of the tournament at the end of the round
mt.round_leader_top_n
Round Leader Top “N”
Which golfer will be in the top “n” of a tournament at the end of the round
mt.over_under_finish
Finishing Positions
Over/under line of a player’s finishing position for the tournament
mt.topgroup
Top Group
Which golfer will finish higher from a group of golfers (Top Past Champion, etc)
mt.topregion
Top Region
Which golfer will finish higher from a region (Top European, etc)
mt.over_under_round_score
Selected Round Scores
Over/under line of a players total score for a round. E.g. Tiger Woods Round O/U 70.5
mt.matchbet
Tournament Matchbets
Best overall tournament score between 2 players
mt.matchbet_tie
Tournament Matchbets (including ties)
Best overall tournament score between 2 players (including ties)
mt.round_matchbet
Round Matchbets
Round winner between 2 players (not in the same 2/3 ball)
mt.round_matchbet_tie
Round Matchbets (including ties)
Round winner between 2 players (not in the same 2/3 ball, including ties)
mt.twoball
2 balls
Round winner (lowest score) of each 2 ball
mt.twoball_tie
2 balls (including ties)
Round winner (lowest score) of each 2 ball (including ties
mt.threeball
3 balls
Round winner (lowest score) of each 3 ball
mt.threeball_matchup
3 ball matchups
Round winner (lowest score) of 2 out of the 3 players in each 3 ball
mt.oneball_hole
Hole Score
Score a player will make on a hole. There will be 3 selections (Birdie or better, Par, Bogey or worse)
mt.group_hole_score
Group Hole Score
Total score the players in the 2/3 ball will make on a hole
mt.twoball_hole
Hole Winner (twoball)
Which player will win the hole (have the lowest score) from a 2 ball
mt.twoball_hole_tie
Hole Winner (twoball, including ties)
Which player will win the hole (have the lowest score) from a 2 ball (including ties)
mt.threeball_hole
Hole Winner (threeball)
Which player will win the hole (have the lowest score) from a 3 ball
mt.threeball_hole_matchup
Hole Winner (matchup)
Which player will win the hole from 2 of the 3 players in a 3 ball
mt.next_to_win_hole
Next Player to Win a Hole
Next player to win a hole from a 2/3 ball
mt.make_putt
To Make Putt
Will a player make their upcoming putt
mt.hole_group_score
Score on Groups of Holes
Player’s total score over a group of holes
mt.hole_group_winner
Who will Win a Group of Holes
Which player from a 2/3 ball wins over a group of holes
mt.outright
Match Play – Tournament Winner
Which golfer will be the winner of a Match Play tournament
mt.toreach|stage=final
Match Play – To Reach Final
Which golfers will reach the final of a Match Play tournament
mt.toreach|stage=quarter
Match Play – Quarter Winner
Which golfers will reach the quarter final of a Match Play tournament
mt.nominate_finalists
Match Play – Name the Finalists
Which 2 players will contest the final of a Match Play tournament
mt.match_winner
Match Play – Match Winner
Which player will win the match of a Match Play tournament
mt.group_winner
Match Play – Group Winner
Which player will win the group of a Match Play tournament
mt.over_under_gir
Number of Greens in Regulation
Over/under of how many Greens in Regulation a player will hit in a round
mt.hit_gir
To Hit a GIR on the Next Hole
Will the player hit a GIR on the next hole
mt.total_group_gir
Number of GIR for Group on a Hole
Total number of GIRs for the 2/3 balls on a hole
mt.longest_drive
Who will Hit the Longest Drive
Which player in the 2/3 ball will hit the longest drive on a hole
mt.over_under_longest_drive_distance
Distance of the Longest Drive
Over/under of the length of the longest drive in the 2/3 ball on a hole
mt.drive_lie
Drive to finish… (par 4/5)
What lie will the player have after the tee shot
mt.group_drives_to_fairway
Number of Drives to Finish on the Fairway
Number of drives in a 2/3 ball to finish on the fairway
mt.over_under_fairways_hit
Number of Fairways Hit
Over/under of how many Fairways a player will hit in a round
mt.over_under_distance_from_pin
Distance from Pin
Over/under distance from the pin a player’s approach shot finishes on a hole
mt.tee_shot_finish_near_pin
Tee shot to Finish within <n> Feet of the pin
Will a player’s tee shot finish inside a specified distance from the pin
mt.group_nearest_pin
Nearest the Pin
Which player’s tee shot will finish closest to the hole in a 2/3 ball
mt.distance_nearest_pin
Distance of Nearest the Pin
Distance from the pin of the “nearest the pin shot”
mt.tee_shot_lie
Tee shot to finish (Par 3)
What lie will the player have after the tee shot. Selections can include Hole, Green, Fairway/Fringe, Rough, Bunker and Water. Not all selections can be offered on each hole.
mt.player_hole_putts
Number of Putts on the Hole
Number of putts taken by a player on a hole
mt.group_hole_putts
Number of Putts in the Group on a Hole
Total number of putts taken by the 2/3 ball on a hole
mt.player_round_putts
Number of Putts in the Round
Total number of putts a player will take in his round
mt.player_round_birdies
Number of Birdies (or better) in the Round
Total number of birdies (or better) a player will make in a round
mt.player_tournament_birdies
Number of Birdies (or better) in the Tournament
Total number of birdies (or better) a player will make in a tournament
mt.player_round_pars
Number of Pars in the Round
Total number of pars a player will make in a round
mt.player_tournament_pars
Number of Pars in the Tournament
Total number of pars a player will make in a tournament
mt.player_round_bogies
Number of Bogies (or worse) in the Round
Total number of bogies (or worse) a player will make in a round
mt.player_tournament_bogies
Number of Bogies (or worse) in the Tournament
Total number of bogies (or worse) a player will make in a tournament
mt.group_par3_winner
Par 3 Winner
Which player will have the best score on the par 3s in a 2/3 ball
mt.group_par4_winner
Par 4 Winner
Which player will have the best score on the par 4s in a 2/3 ball
mt.group_par5_winner
Par 5 Winner
Which player will have the best score on the par 5s in a 2/3 ball
mt.tournament_par3_winner
Par 3 Winner
Which player will have the best score on the par 3s over the tournament
mt.tournament_par4_winner
Par 4 Winner
Which player will have the best score on the par 4s over the tournament
mt.tournament_par5_winner
Par 5 Winner
Which player will have the best score on the par 5s over the tournament
mt.group_first_under_par
First player to be under par
Which player in a 2/3 ball will be the first to have a total score under par for the round
mt.group_first_over_par
First player to be over par
Which player in a 2/3 ball will be the first to have a total score over par for the round
mt.winning_score
Winning Score
72 hole score of the tournament winner
mt.winning_margin
Winning Margin
Margin of victory the tournament winner has (includes Playoff as a selection)
mt.hole_in_one
Will there be a hole-in-one
Will there be a hole-in-one in the tournament or not
mt.make_cut
To make the Cut
Player to make the 36 hole cut or not
mt.lowest_18_hole_score
Lowest 18-hole score
Score of the lowest 18 hole score for the tournament
mt.forecast
Forecast
which two players will finish first and second in the tournament