← Back to all posts

APIProduct

The PropEdge API: Every Number on the Site, as Free JSON


Correction (September 2026). An earlier version of this post described two paid tiers ($29 and $79 a month), API keys sent in an x-api-key header, a Square payment form, and per-day request quotas. None of that existed. The API has always been free and public, and this post now describes it as it actually is. If you tried to subscribe and hit a dead page, that is why — there was never anything to buy.

PropEdge is free. That was always the point: we publish every number our model produces rather than hiding it behind credits or a subscription. The API is the same idea for code instead of eyeballs. Everything the site shows is available as JSON, with no account and no key.

No key, no signup

Just request the URL:

cURL:

curl "https://propedge.today/api/edges?sport=NBA"

JavaScript:

const resp = await fetch('https://propedge.today/api/edges?sport=NBA');
const data = await resp.json();

Python:

import requests
data = requests.get("https://propedge.today/api/edges", params={"sport": "NBA"}).json()

Endpoints

Picks

  • GET /api/edges — current edges. Filter with ?sport=.
  • GET /api/best-bets — the highest-conviction picks only.
  • GET /api/late-swaps — edges created or strengthened by late lineup news.

Model output

  • GET /api/projections — the model's projection for each prop: probability, projected value, sample size.
  • GET /api/player-stats — every prop we have for one player.
  • GET /api/matchup-context — game-level context behind the projections.

Track record

  • GET /api/paper-stats — the paper-trading record: resolved picks, wins, losses, and ROI measured on the amount actually staked.
  • GET /api/pnl?days=30 — profit and loss broken down by sport, direction and stat.
  • GET /api/results-feed — graded picks, for building your own tracker.

Parlay pricing

  • GET /api/price?legs=0.62:LAL,0.58:BOS — prices an entry of 2–6 legs. Each leg is probability:team. Returns what PrizePicks pays for that entry size, what PropEdge would pay, the rebate on a loss, and the expected value of each. Legs on the same team are repriced for correlation, and the response says so.

When the data isn't ready

Right after a deploy the model is still building its first projections. During that window some endpoints return 503 with {"error":"Data warming up"}. Retry in a minute or two.

Rate limits

15 requests per minute, per endpoint, per IP address. Past that you get a 429 with a Retry-After: 60 header. That is plenty for a bot polling every few minutes or a daily spreadsheet pull. There are no daily quotas and no tiers.

What people build with it

  • Discord and Telegram bots that post new picks from /api/best-bets.
  • Spreadsheets that pull /api/projections each morning.
  • Your own tracker, built on /api/results-feed and /api/pnl, so you don't have to take our win rate on trust.
  • Parlay tools on top of /api/price.

That last one matters to us. We print our calibration gap and our losses on the track record page because a record you can't check is marketing. The API is the same principle: if you want to verify a number, you shouldn't need our permission to fetch it.