from urllib.request import Request, urlopen
import csv
import json
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = 'https://www.oddschecker.com/football/english/premier-league/crystal-palace-v-leicester/winner'
req = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"})
page_soup = BeautifulSoup(req.content, "html.parser")
market_id = page_soup.select('h2:-soup-contains("Both Teams To Score")')[1]
market_id = market_id["aria-controls"]
api_url = ("https://www.oddschecker.com/api/markets/v2/all-odds?market-ids={}&repub=OC")
data = requests.get(api_url.format(market_id)).json()
When I run this I get the error list index out of range for the market_id line, but don't understand why that is occurring. Could it be that I have been blocked from the website or something?
CodePudding user response:
An index error often occurs when accessing an nth element which does not exist. It's probably the case that you are not accessing an array with 2 elements in it. Double check that the [1] element is what you are trying to access.
CodePudding user response:
The item you are selecting (e.g. the <h2>
element) is not always present. When it is not present, your script will still try and access the second element resulting in the error.
You should add a test (and possibly a retry) to see if any elements were returned. For example:
from urllib.request import Request, urlopen
import csv
import json
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = 'https://www.oddschecker.com/football/english/premier-league/crystal-palace-v-leicester/winner'
req = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"})
page_soup = BeautifulSoup(req.content, "html.parser")
market_ids = page_soup.select('h2:-soup-contains("Both Teams To Score")')
if len(market_ids) == 2:
aria_controls = market_ids[1]["aria-controls"]
api_url = f"https://www.oddschecker.com/api/markets/v2/all-odds?market-ids={aria_controls}&repub=OC"
data = requests.get(api_url).json()
print(data)
else:
print("Not present")
When this works, you would see data
containing:
[{'marketId': 3535074586, 'marketName': 'Crystal Palace v Leicester#Both Teams to Score', 'subeventId': 97188743, 'subeventName': 'Crystal Palace v Leicester', 'subeventType': 'MATCH', 'subeventStartTime': '2021-10-03T13:00:00Z', 'subeventEndTime': '2021-10-03T16:00:00Z', 'eventId': 2457, 'eventName': 'English Premier League Matches', 'categoryId': 2, 'categoryName': 'UK Football', 'categoryGroupId': 2, 'categoryGroupName': 'FOOTBALL', 'betTypeId': 4323, 'marketTypeName': 'Both Teams To Score', 'marketGroup': 'Score Betting', 'priority': 11, 'repubUrl': {'us': '', 'oc': '', 'it': '', 'es': ''}, 'odds': [{'betId': 26804794402, 'bookmakerCode': 'MI', 'oddsDecimal': 1.87, 'oddsFractional': '20/23', 'oddsUs': '-115', 'bookmakerSelectionId': 'Q1117222186_40253', 'status': 'ACTIVE', 'movement': '-0.04', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T07:09:06.015Z', 'inOut': 'out', 'inOutChange': '-0.04'}, {'betId': 26804794402, 'bookmakerCode': 'MA', 'oddsDecimal': 1.85, 'oddsFractional': '17/20', 'oddsUs': '-118', 'bookmakerSelectionId': '1861384264790016*1861384263510016', 'status': 'ACTIVE', 'movement': ' 0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T09:30:12.216Z', 'inOut': 'in', 'inOutChange': ' 0.05'}, {'betId': 26804794402, 'bookmakerCode': 'MK', 'oddsDecimal': 1.83, 'oddsFractional': '5/6', 'oddsUs': '-120.00', 'bookmakerSelectionId': '42394784*/sport/football/england-premier-league/2021/10/03/13-00/crystal-palace-vs-leicester-city*56837871*1.83', 'status': 'ACTIVE', 'movement': ' 0.01', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T06:35:17.889Z', 'inOut': 'in', 'inOutChange': ' 0.01'}, {'betId': 26804794402, 'bookmakerCode': 'RK', 'oddsDecimal': 1.83, 'oddsFractional': '5/6', 'oddsUs': '-120.00', 'bookmakerSelectionId': '42394784*/sport/football/england-premier-league/2021/10/03/13-00/crystal-palace-vs-leicester-city*56837871*1.83', 'status': 'ACTIVE', 'movement': ' 0.01', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T06:35:20.649Z', 'inOut': 'in', 'inOutChange': ' 0.01'}, {'betId': 26804794402, 'bookmakerCode': 'SA', 'oddsDecimal': 1.83, 'oddsFractional': '5/6', 'oddsUs': '-120', 'bookmakerSelectionId': 'Q1117222186_40253', 'status': 'ACTIVE', 'movement': ' 0.03', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T14:51:52.23Z', 'inOut': 'in', 'inOutChange': ' 0.03'}, {'betId': 26804794402, 'bookmakerCode': 'BF', 'oddsDecimal': 1.82, 'oddsFractional': '4/5', 'oddsUs': '-122', 'bookmakerSelectionId': '30246*1.187918753*football*30924024*1.187918753', 'status': 'ACTIVE', 'movement': '-0.03', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T17:09:08.682Z', 'inOut': 'out', 'inOutChange': '-0.03'}, {'betId': 26804794402, 'bookmakerCode': 'OE', 'oddsDecimal': 1.8, 'oddsFractional': '4/5', 'oddsUs': '-125', 'bookmakerSelectionId': 'Q1117222186_40253', 'status': 'ACTIVE', 'movement': '-0.03', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-29T05:36:53.125Z', 'inOut': 'out', 'inOutChange': '-0.03'}, {'betId': 26804794402, 'bookmakerCode': 'VT', 'oddsDecimal': 1.79, 'oddsFractional': '11/14', 'oddsUs': '-127', 'bookmakerSelectionId': '2383373793', 'status': 'ACTIVE', 'movement': ' 0.01', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T17:10:12.257Z', 'inOut': 'in', 'inOutChange': ' 0.01'}, {'betId': 26804794402, 'bookmakerCode': 'SI', 'oddsDecimal': 1.78, 'oddsFractional': '39/50', 'oddsUs': '-128', 'bookmakerSelectionId': 'football*england-premier-league*798359*378742383', 'status': 'ACTIVE', 'movement': ' 0.03', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-29T04:07:53.179Z', 'inOut': 'in', 'inOutChange': ' 0.03'}, {'betId': 26804794402, 'bookmakerCode': 'NV', 'oddsDecimal': 1.77, 'oddsFractional': '77/100', 'oddsUs': '-130', 'bookmakerSelectionId': '22734065*1993034002', 'status': 'ACTIVE', 'movement': '-0.01', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T17:42:51.113Z', 'inOut': 'out', 'inOutChange': '-0.01'}, {'betId': 26804794402, 'bookmakerCode': 'UN', 'oddsDecimal': 1.77, 'oddsFractional': '3/4', 'oddsUs': '-130', 'bookmakerSelectionId': '2977192062*1007732636', 'status': 'ACTIVE', 'movement': '-0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T08:02:24.176Z', 'inOut': 'out', 'inOutChange': '-0.02'}, {'betId': 26804794402, 'bookmakerCode': 'WA', 'oddsDecimal': 1.77, 'oddsFractional': '31/40', 'oddsUs': '-129', 'bookmakerSelectionId': '798618530*206759162*8329146', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T06:50:17.328Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794402, 'bookmakerCode': 'B3', 'oddsDecimal': 1.75, 'oddsFractional': '3/4', 'oddsUs': '-133', 'bookmakerSelectionId': '2268443*107967852*Soccer*107967852*EF5AD7D154394838A93F30814E607EAA2B0EC78C', 'status': 'ACTIVE', 'movement': ' 0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T07:11:25.518Z', 'inOut': 'in', 'inOutChange': ' 0.05'}, {'betId': 26804794402, 'bookmakerCode': 'EE', 'oddsDecimal': 1.75, 'oddsFractional': '3/4', 'oddsUs': '-133', 'bookmakerSelectionId': '6757860563', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-27T23:08:21.258Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794402, 'bookmakerCode': 'BY', 'oddsDecimal': 1.73, 'oddsFractional': '8/11', 'oddsUs': '-137', 'bookmakerSelectionId': '21846183.1*193238891.1*1377948955.1', 'status': 'ACTIVE', 'movement': ' 0.03', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T09:59:01.607Z', 'inOut': 'in', 'inOutChange': ' 0.03'}, {'betId': 26804794402, 'bookmakerCode': 'SX', 'oddsDecimal': 1.73, 'oddsFractional': '8/11', 'oddsUs': '-137', 'bookmakerSelectionId': '1960162*325210849', 'status': 'ACTIVE', 'movement': ' 0.06', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-27T22:10:32.728Z', 'inOut': 'in', 'inOutChange': ' 0.06'}, {'betId': 26804794402, 'bookmakerCode': 'WH', 'oddsDecimal': 1.73, 'oddsFractional': '8/11', 'oddsUs': '-137', 'bookmakerSelectionId': '3346415933*1002019993*Yes*Both Teams To Score*false', 'status': 'ACTIVE', 'movement': '-0.07', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T09:57:53.739Z', 'inOut': 'out', 'inOutChange': '-0.07'}, {'betId': 26804794402, 'bookmakerCode': 'FB', 'oddsDecimal': 1.7272727, 'oddsFractional': '8/11', 'oddsUs': '-138', 'bookmakerSelectionId': '30246*924.276932295', 'status': 'ACTIVE', 'movement': '-0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T12:22:57.664Z', 'inOut': 'out', 'inOutChange': '-0.02'}, {'betId': 26804794402, 'bookmakerCode': 'PP', 'oddsDecimal': 1.7272727, 'oddsFractional': '8/11', 'oddsUs': '-138', 'bookmakerSelectionId': '30246*927.149112950', 'status': 'ACTIVE', 'movement': ' 0.08', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T07:55:23.881Z', 'inOut': 'in', 'inOutChange': ' 0.08'}, {'betId': 26804794402, 'bookmakerCode': 'SK', 'oddsDecimal': 1.7272727, 'oddsFractional': '8/11', 'oddsUs': '-138', 'bookmakerSelectionId': '918279156*59*28050397*8/11', 'status': 'ACTIVE', 'movement': ' 0.06', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T06:52:08.741Z', 'inOut': 'in', 'inOutChange': ' 0.06'}, {'betId': 26804794402, 'bookmakerCode': 'RM', 'oddsDecimal': 1.67, 'oddsFractional': '4/6', 'oddsUs': '-150', 'bookmakerSelectionId': '6323610.106252377500.530253481058', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T10:27:02.825Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794402, 'bookmakerCode': 'VC', 'oddsDecimal': 1.67, 'oddsFractional': '4/6', 'oddsUs': '-150', 'bookmakerSelectionId': '6323610.106252377500.530253481058', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T10:27:02.825Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794402, 'bookmakerCode': 'FR', 'status': 'FAILED', 'movement': '', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '', 'inOut': '', 'inOutChange': ''}, {'betId': 26804794396, 'bookmakerCode': 'RM', 'oddsDecimal': 2.15, 'oddsFractional': '23/20', 'oddsUs': '115', 'bookmakerSelectionId': '6323610.106252377400.530253481059', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T10:27:02.653Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'VC', 'oddsDecimal': 2.15, 'oddsFractional': '23/20', 'oddsUs': '115', 'bookmakerSelectionId': '6323610.106252377400.530253481059', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T10:27:02.653Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'BF', 'oddsDecimal': 2.12, 'oddsFractional': '11/10', 'oddsUs': '112', 'bookmakerSelectionId': '110503*1.187918753*football*30924024*1.187918753', 'status': 'ACTIVE', 'movement': '-0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-29T07:12:45.222Z', 'inOut': 'out', 'inOutChange': '-0.02'}, {'betId': 26804794396, 'bookmakerCode': 'MK', 'oddsDecimal': 2.12, 'oddsFractional': '19/17', 'oddsUs': '112.00', 'bookmakerSelectionId': '42394784*/sport/football/england-premier-league/2021/10/03/13-00/crystal-palace-vs-leicester-city*56837872*2.12', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T08:04:03.782Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794396, 'bookmakerCode': 'RK', 'oddsDecimal': 2.12, 'oddsFractional': '19/17', 'oddsUs': '112.00', 'bookmakerSelectionId': '42394784*/sport/football/england-premier-league/2021/10/03/13-00/crystal-palace-vs-leicester-city*56837872*2.12', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T08:04:23.979Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794396, 'bookmakerCode': 'FB', 'oddsDecimal': 2.1, 'oddsFractional': '11/10', 'oddsUs': '110', 'bookmakerSelectionId': '110503*924.276932295', 'status': 'ACTIVE', 'movement': ' 0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T12:22:59.82Z', 'inOut': 'in', 'inOutChange': ' 0.05'}, {'betId': 26804794396, 'bookmakerCode': 'BY', 'oddsDecimal': 2.05, 'oddsFractional': '21/20', 'oddsUs': '105', 'bookmakerSelectionId': '21846183.1*193238891.1*1377948958.1', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T09:59:01.607Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'EE', 'oddsDecimal': 2.05, 'oddsFractional': '21/20', 'oddsUs': '105', 'bookmakerSelectionId': '6757860564', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-27T23:08:21.258Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'MI', 'oddsDecimal': 2.05, 'oddsFractional': '21/20', 'oddsUs': '105', 'bookmakerSelectionId': 'Q1117222187_40253', 'status': 'ACTIVE', 'movement': ' 0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T07:09:06.015Z', 'inOut': 'in', 'inOutChange': ' 0.05'}, {'betId': 26804794396, 'bookmakerCode': 'MA', 'oddsDecimal': 2.04, 'oddsFractional': '26/25', 'oddsUs': '104', 'bookmakerSelectionId': '1861384264830016*1861384263510016', 'status': 'ACTIVE', 'movement': '-0.04', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T09:24:35.883Z', 'inOut': 'out', 'inOutChange': '-0.04'}, {'betId': 26804794396, 'bookmakerCode': 'NV', 'oddsDecimal': 2.02, 'oddsFractional': '51/50', 'oddsUs': '102', 'bookmakerSelectionId': '22734065*1993034003', 'status': 'ACTIVE', 'movement': ' 0.01', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T17:42:51.113Z', 'inOut': 'in', 'inOutChange': ' 0.01'}, {'betId': 26804794396, 'bookmakerCode': 'UN', 'oddsDecimal': 2.02, 'oddsFractional': '1/1', 'oddsUs': '102', 'bookmakerSelectionId': '2977192065*1007732636', 'status': 'ACTIVE', 'movement': ' 0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T08:02:24.176Z', 'inOut': 'in', 'inOutChange': ' 0.02'}, {'betId': 26804794396, 'bookmakerCode': 'VT', 'oddsDecimal': 2.02, 'oddsFractional': '42/41', 'oddsUs': '102', 'bookmakerSelectionId': '2383373792', 'status': 'ACTIVE', 'movement': '-0.02', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T17:10:12.257Z', 'inOut': 'out', 'inOutChange': '-0.02'}, {'betId': 26804794396, 'bookmakerCode': 'SI', 'oddsDecimal': 2.01, 'oddsFractional': '101/100', 'oddsUs': '101', 'bookmakerSelectionId': 'football*england-premier-league*798359*378742384', 'status': 'ACTIVE', 'movement': '-0.04', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-29T04:07:53.179Z', 'inOut': 'out', 'inOutChange': '-0.04'}, {'betId': 26804794396, 'bookmakerCode': 'B3', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': '2268445*107967852*Soccer*107967852*48892C147F344CBA0013B790F4CD9BFA951925E2', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T07:11:25.518Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'PP', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': '110503*927.149112950', 'status': 'ACTIVE', 'movement': '-0.10', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T07:55:23.881Z', 'inOut': 'out', 'inOutChange': '-0.10'}, {'betId': 26804794396, 'bookmakerCode': 'SA', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': 'Q1117222187_40253', 'status': 'ACTIVE', 'movement': ' 0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-30T14:51:52.23Z', 'inOut': 'in', 'inOutChange': ' 0.05'}, {'betId': 26804794396, 'bookmakerCode': 'SK', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': '918279157*59*28050397*1/1', 'status': 'ACTIVE', 'movement': '-0.10', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T06:52:08.741Z', 'inOut': 'out', 'inOutChange': '-0.10'}, {'betId': 26804794396, 'bookmakerCode': 'SX', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': '1960162*325210850', 'status': 'ACTIVE', 'movement': '-0.10', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-27T22:10:32.728Z', 'inOut': 'out', 'inOutChange': '-0.10'}, {'betId': 26804794396, 'bookmakerCode': 'WA', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': '798618531*206759162*8329146', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-28T06:50:17.328Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'WH', 'oddsDecimal': 2, 'oddsFractional': '1/1', 'oddsUs': '100', 'bookmakerSelectionId': '3346415941*1002019993*No*Both Teams To Score*false', 'status': 'ACTIVE', 'movement': ' 0.09', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-10-01T09:57:53.962Z', 'inOut': 'in', 'inOutChange': ' 0.09'}, {'betId': 26804794396, 'bookmakerCode': 'OE', 'oddsDecimal': 1.95, 'oddsFractional': '19/20', 'oddsUs': '-105', 'bookmakerSelectionId': 'Q1117222187_40253', 'status': 'ACTIVE', 'movement': '-0.05', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '2021-09-29T16:18:24.842Z', 'inOut': 'out', 'inOutChange': '-0.05'}, {'betId': 26804794396, 'bookmakerCode': 'FR', 'status': 'FAILED', 'movement': '', 'eachWay': False, 'eachWayDenominator': 0, 'eachWayPlaces': 0, 'betFeedTimestamp': '', 'inOut': '', 'inOutChange': ''}], 'bets': [{'marketId': 3535074586, 'betId': 26804794402, 'betName': 'Yes', 'bestOddsBookmakerCodes': ['MI'], 'bestOddsDecimal': 1.87, 'bestOddsFractional': '20/23', 'bestOddsUs': '-115'}, {'marketId': 3535074586, 'betId': 26804794396, 'betName': 'No', 'bestOddsBookmakerCodes': ['RM', 'VC'], 'bestOddsDecimal': 2.15, 'bestOddsFractional': '23/20', 'bestOddsUs': '115'}]}]