Skip to content

w1r2p1/betfair

 
 

Repository files navigation

betfairlightweight

Build Status Coverage Status PyPI version

Lightweight, super fast (uses c libraries) pythonic wrapper for Betfair API-NG allowing all betting operations (including market and order streaming) and most account operations, see examples.

Documentation

Join slack group

Currently tested on Python 2.7, 3.4, 3.5 and 3.6.

installation

$ pip install betfairlightweight

setup

Add your certificates to '/certs/' and app_key (optional) to environment variables with username as key before using.

.bash_profile

export username = "appkey"

The library can then be used as follows:

>>> import betfairlightweight

>>> trading = betfairlightweight.APIClient('username', 'password', app_key='app_key')

>>> trading.login()
>>> event_types = trading.betting.list_event_types()

[<EventTypeResult>, <EventTypeResult>, ..]

Following endpoints are available:

>>> trading.login
>>> trading.keep_alive
>>> trading.logout

>>> trading.betting
>>> trading.account
>>> trading.navigation
>>> trading.scores
>>> trading.streaming

>>> 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.

Exchange Stream API

In development so breaking changes likely.

from betfairlightweight.filters import (
    streaming_market_filter,
    streaming_market_data_filter,
)

betfair_socket = trading.streaming.create_stream(
    unique_id=0,
    description='Test Market Socket',
)

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(async=False)

historical data

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).

Historical Data

In development so breaking changes likely.

stream = trading.streaming.create_historical_stream(
    directory='horse-racing-pro-sample',
)

stream.start(async=False)

About

Lightweight python wrapper for Betfair API-NG (with streaming)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%