Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

propzapi

Python client for propzapi, the props-first sports odds API.

Player props, game odds, fixtures and live scores as clean JSON. No scraping, no per-sportsbook parsers.

pip install propzapi

Get a key

Free tier is 500 credits a month, no card. Grab one from propzapi.com/app, or mint one in code:

from propzapi import register

print(register())
# {'api_key': 'pk_live_...', 'plan': 'free', 'credits': 500}

Quickstart

from propzapi import Propzapi

client = Propzapi("pk_live_...")        # or set PROPZAPI_API_KEY

# Player props, the thing most odds APIs cover thinly
props = client.props(league="NFL", market="player_passing_yards")

# Game odds grouped by book
odds = client.odds(league="NBA", market="h2h")

# Fixtures and live scores
games = client.events(league="NBA", status="live")

# What each call cost you
print(client.last_credits_cost)

Player props

Props are the point of this API. Markets are named player_<stat>:

League Markets
NFL player_passing_yards, player_passing_tds, player_rushing_yards, player_receiving_yards, player_receptions
NBA player_points, player_rebounds, player_assists, player_threes
MLB player_strikeouts, player_hits, player_home_runs, player_total_bases
NHL player_shots_on_goal, player_goals, player_saves

Leave market unset to get every prop on the slate.

for event in client.props(league="NBA", market="player_points"):
    for book in event["books"]:
        print(event["home_team"], book["book"], book["markets"])

Methods

Method Returns
client.props(league=, sport=, market=, limit=) list of events with prop lines
client.odds(league=, sport=, market=, limit=) list of events with odds by book
client.events(league=, sport=, status=, limit=) list of fixtures and scores
client.event(event_id) one event with all its lines
client.books() list of sportsbook names
client.account() your plan and credit balance
register() a fresh free key, no auth needed

market on odds() takes h2h, spreads, totals or player_props. Leave it unset for all game markets together.

Credits

propzapi meters by market and returns the exact cost of each call in an X-Credits-Cost header. The client reads it for you:

client.props(league="NFL")
client.last_credits_cost     # what that call actually cost
client.last_response         # the full payload, if you want the rest

Errors

Everything raises PropzapiError, with the status code attached:

from propzapi import Propzapi, PropzapiError

try:
    client.props(league="NFL")
except PropzapiError as e:
    print(e.status)   # 401 bad key, 402 out of credits, 429 rate limited
    print(e.payload)  # decoded body when there is one

Notes

  • Not a sportsbook. propzapi is a data provider and takes no wagers.
  • Bring your own requests.Session if you want retries or connection reuse: Propzapi(key, session=my_session).

License

MIT

Metadata

Release files for propzapi 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for propzapi 0.1.0
File Size Uploaded
propzapi-0.1.0.tar.gz 8.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for propzapi 0.1.0
File Interpreter ABI Platform
propzapi-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.8 kB

Release files / propzapi-0.1.0.tar.gz

Download URL propzapi-0.1.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5288c2584e8d8d7650b484db9e8d73e5f029a578f3ca3ed39f68c334394a7fe8
BLAKE2b-256 checksum
How to use checksums
7dcf805d3583e48d01ae6031572e2d4844891bc3db922bae31b9bdd21678afb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release files / propzapi-0.1.0-py3-none-any.whl

Download URL propzapi-0.1.0-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c595f1d46e2cb30fc49f5145cd18e723fca111e87fd40e5bca1ff9d03a4700b
BLAKE2b-256 checksum
How to use checksums
9f85663ea9cf10f25ec9245d9fe650a9c95ef58787281c73a54ab91f5894969c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page