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 | Provenance | Actions |
|---|---|---|---|---|
| betfairlightweight-2.24.0.tar.gz | 221.2 kB | Without provenance | Details for betfairlightweight-2.24.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| betfairlightweight-2.24.0-py3-none-any.whl | Python 3 | none | any | Details for betfairlightweight-2.24.0-py3-none-any.whl |
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
|
Security for betfairlightweight 2.24.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.