betfair_parser
A simple and fast betfair parser. Why you might like this library:
- Complete: All betfair (non-vendor) client API included
- Conventions: The API strictly follows pythonic naming conventions
- Consistency: All data is type checked, API requests as well as responses
- Comfort: All betfair enums and type definitions are included, to support IDE syntax completion
- Clear errors: API errors don't just throw cryptic codes, but contain documentation about that error
- Compatible: Use it with any HTTP library you like, including async libraries
- Cheetah fast: Thanks to the magic of msgspec, megabytes of input parse in milliseconds
Usage
betfair_parser is built out of API building blocks, that can be used with any HTTP client
you like. All API operations provide .headers(), .body() and a .parse_response() method.
The client module
contains a sample, minimalistic client implementation. It may be used as is with any requests-compatible
HTTP client or serve as an example, how to integrate betfair_parser with other HTTP clients.
import requests
from betfair_parser import client
from betfair_parser.spec import accounts, betting
session = requests.Session() # or anything similar like httpx.Client()
client.login(session, "username", "password", "app_key")
client.request(session, accounts.GetAccountFunds.with_params())
# AccountFundsResponse(available_to_bet_balance=10000.0, exposure=0.0,
# retained_commission=0.0, exposure_limit=-10000.0, discount_rate=0.0,
# points_balance=10, wallet=<Wallet.UK: 'UK'>)
# Request with an invalid wallet parameter:
client.request(session, accounts.GetAccountFunds.with_params(wallet="AUS"))
# >>> AccountAPINGException: INVALID_PARAMETERS: Problem parsing the parameters,
# or a mandatory parameter was not found
client.request(session, betting.ListCurrentOrders.with_params())
# CurrentOrderSummaryReport(current_orders=[], more_available=False)
# Support for other countries
from betfair_parser.endpoints import endpoint
endpoint_cfg = endpoint("ITA") # alpha-3 code
client.login(session, "username", "password", "app_key", endpoints=endpoint_cfg)
See test_live.py
for more API call examples.
Releasing
Releases are published automatically when a tag matching the version schema MAJOR.MINOR[.PATCH]
(e.g. 1.2.3 or 1.2) is pushed to GitHub. Tags that do not match this schema are ignored.
# Set next version number
export RELEASE=x.x.x
# Create tags
git commit --allow-empty -m "Release $RELEASE"
git tag -a $RELEASE -m "Version $RELEASE"
# Push
git push --tags
git push
Metadata
Release files for betfair-parser 0.21.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| betfair_parser-0.21.1.tar.gz | 12.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| betfair_parser-0.21.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.6 MB
Release files / betfair_parser-0.21.1.tar.gz
| Download URL | betfair_parser-0.21.1.tar.gz |
|---|---|
| Size | 12.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2df51d8759decf5e6367d2d7c4e38f3f878238f52ba1b07d2f63d6255cb0c4a
|
|
BLAKE2b-256 checksum How to use checksums |
92bb0665dcc29709f8838c338764d823032551d11b5e4b2323443d0d76b3b933
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / betfair_parser-0.21.1-py3-none-any.whl
| Download URL | betfair_parser-0.21.1-py3-none-any.whl |
|---|---|
| Size | 75.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d1effa7883cbd611d8944e89cc48ed4d829d9fc9fb7d2dc49cbc4183671dcd23
|
|
BLAKE2b-256 checksum How to use checksums |
a8f78f3a9fcb80db2ffaaa830ead12f58e8748cb2bf6d0f3553d07c14234176a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|