Lightweight python wrapper for Betfair API-NG
Project description
betfairlightweight
Lightweight, super fast (uses C and Rust libraries) pythonic wrapper for Betfair API-NG allowing all betting operations (including market and order streaming) and account operations, see examples.
Currently tested on Python 3.8, 3.9, 3.10, 3.11 and 3.12.
installation
$ pip install betfairlightweight
To use C/Rust libraries install with
$ pip install betfairlightweight[speed]
setup
In order to connect to the Betfair API you will need an App Key, SSL Certificates and a username/password.
App Key
Follow these instructions to get your app key, you can either use a delayed or live key.
SSL certificates
Follow these instructions to set up your SSL certificates. Save your .ctr and .key files to a local directory. The default directory where the library is looking for the keys is '/certs' but you can specify any other directory.
Using the library
The library can then be used as follows:
import betfairlightweight
trading = betfairlightweight.APIClient('username', 'password', app_key='app_key', certs='/certs')
trading.login()
or the following for interactive login with no certs (not as secure)
import betfairlightweight
trading = betfairlightweight.APIClient('username', 'password', app_key='app_key')
trading.login_interactive()
event_types = trading.betting.list_event_types()
[<EventTypeResult>, <EventTypeResult>, ..]
Following endpoints are available:
-
trading.login
-
trading.login_interactive
-
trading.keep_alive
-
trading.logout
-
trading.betting
-
trading.account
-
trading.navigation
-
trading.scores
-
trading.streaming
-
trading.historical
-
trading.in_play_service
-
trading.race_card
streaming
Currently two listeners available, below will run the base listener which prints anything it receives. Stream listener is able to hold an order stream or a market stream (one per listener). The listener can hold a cache and push market_books/order_books out via a queue.
from betfairlightweight.filters import (
streaming_market_filter,
streaming_market_data_filter,
)
betfair_socket = trading.streaming.create_stream()
market_filter = streaming_market_filter(
event_type_ids=['7'],
country_codes=['IE'],
market_types=['WIN'],
)
market_data_filter = streaming_market_data_filter(
fields=['EX_ALL_OFFERS', 'EX_MARKET_DEF'],
ladder_levels=3
)
betfair_socket.subscribe_to_markets(
market_filter=market_filter,
market_data_filter=market_data_filter,
)
betfair_socket.start() # blocking
historic data
The historic endpoint provides some basic abstraction for the historicdata api:
trading.historic.get_my_data()
[{'plan': 'Basic Plan', 'purchaseItemId': 1343, 'sport': 'Cricket', 'forDate': '2017-06-01T00:00:00'}]
Taking advantage of the streaming code lightweight can parse/output historical data in the same way it process streaming data allowing backtesting or with a custom listener, csv creation (see examples).
stream = trading.streaming.create_historical_stream(
file_path='horse-racing-pro-sample',
)
stream.start()
or use the stream generator:
stream = trading.streaming.create_historical_generator_stream(
file_path='horse-racing-pro-sample',
)
g = stream.get_generator()
for market_books in g():
print(market_books)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file betfairlightweight-2.20.2.tar.gz
.
File metadata
- Download URL: betfairlightweight-2.20.2.tar.gz
- Upload date:
- Size: 218.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 838902aa84d0da8693c54b36725cda4918594fab42a9b1efea1240ea0aa1416c |
|
MD5 | 5fc17e8971715bc6e5d914943c6366d7 |
|
BLAKE2b-256 | 1c7c58bb8439074d51a7c7fe8b4aa08ca4c076fb2a6c237260c3057ff8ee96b5 |
File details
Details for the file betfairlightweight-2.20.2-py3-none-any.whl
.
File metadata
- Download URL: betfairlightweight-2.20.2-py3-none-any.whl
- Upload date:
- Size: 69.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d80eae5430a953b428a86cef03bfe7230b796e6391bb21ba8bcfe83bc0a7098 |
|
MD5 | 6115bda3d958d4c8f4e03393917cf901 |
|
BLAKE2b-256 | 85c0ae67a160b73b29be5f40c4bb40f23646ad4404757fbdd1e4b0a4485eeb7e |