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.9, 3.10, 3.11, 3.12, 3.13 and 3.14.
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)
Metadata
Release files for betfairlightweight 2.24.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| betfairlightweight-2.24.0.tar.gz | 221.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| betfairlightweight-2.24.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 291.2 kB
Release files / betfairlightweight-2.24.0.tar.gz
| Download URL | betfairlightweight-2.24.0.tar.gz |
|---|---|
| Size | 221.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce4238d25628db34380cc45598c0b5091efe4e29084875803d9489d4879d00df
|
|
BLAKE2b-256 checksum How to use checksums |
9afb56819027833bb50ff94d5b00b9a8f2592956deb66d901eb5b68fba1d3e77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / betfairlightweight-2.24.0-py3-none-any.whl
| Download URL | betfairlightweight-2.24.0-py3-none-any.whl |
|---|---|
| Size | 70.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
04f6c5d07d193d72670bfc7433f5efe4ca2e6b20565e5fa19105145c5b7987a4
|
|
BLAKE2b-256 checksum How to use checksums |
70384f1dbe769e1d3b4518da3793407e5b7e3b1d87f123d49128992343a8f6a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|