Everything we publish is also exposed as JSON. Permissive CORS so you can call it from any frontend. Use it for dashboards, Discord bots, Twitter automation, fantasy-league widgets — whatever you build, ship it.
Current week's picks with confidence tiers, spreads, model moneylines, and disagree flags.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| pick_team | string | Team abbreviation the model picked to cover |
| tier | S | A+ | A | B | C | Confidence tier. S is highest conviction |
| confidence | number | Model probability (0-1) |
| disagree | boolean | True when our pick opposes the consensus moneyline |
| spread | number | Vegas closing spread (negative = favored) |
| model_ml | number | Model-implied moneyline price |
| vote_pattern | string | Three-model vote pattern, e.g. AAA or AAB |
{
"season": 2024,
"week": 12,
"generated_at": "2024-11-19T14:00:00.000Z",
"picks": [
{
"game_id": "2024_12_SF_GB",
"away_team": "SF",
"home_team": "GB",
"pick_team": "SF",
"pick_side": "away",
"tier": "S",
"confidence": 0.78,
"predicted_margin": 4.2,
"spread": -1.5,
"model_ml": -210,
"live_ml": -150,
"kickoff_at": "2024-11-24T18:25:00Z",
"disagree": false,
"vote_pattern": "AAA"
}
]
}/api/picks/{season}/{week}.jsonCACHE 24 HOURSAny historical week with picks and final results joined. Returns 404 if the week has no picks on file.
| PARAM | EXAMPLE | DESCRIPTION |
|---|---|---|
| season | 2024 | Four-digit NFL season year |
| week | 5 | Week number 1-22 (1-18 regular, 19-22 postseason) |
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| result | object | null | Null if game hasn't finished yet |
| result.correct | boolean | Whether the pick covered |
| result.profit | number | Unit profit/loss for a flat $100 bet |
{
"season": 2024,
"week": 5,
"generated_at": "2024-10-09T12:00:00.000Z",
"picks": [
{
"game_id": "2024_05_KC_LV",
"away_team": "KC",
"home_team": "LV",
"pick_team": "KC",
"pick_side": "away",
"tier": "A",
"confidence": 0.68,
"predicted_margin": 6.1,
"spread": -7.0,
"model_ml": -280,
"live_ml": -310,
"kickoff_at": "2024-10-07T00:20:00Z",
"disagree": false,
"result": {
"away_score": 27,
"home_score": 20,
"correct": true,
"profit": 91
}
}
]
}All-time record + per-tier hit rates + per-season breakdown. The single endpoint for embedding NoPunt performance in dashboards.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| all_time.accuracy | number | Win rate as decimal (0-1) |
| all_time.disagree_roi | number | ROI on disagree picks (1u = $100) |
| by_tier | object | Keyed by tier (S, A+, A, B, C) with wins/total/accuracy/profit |
| by_season | array | Per-season breakdown sorted most recent first |
{
"generated_at": "2024-11-19T14:00:00.000Z",
"all_time": {
"total_games": 1847,
"correct": 1021,
"accuracy": 0.5527,
"total_profit": 4280,
"disagree_bets": 312,
"disagree_wins": 189,
"disagree_roi": 0.142
},
"by_tier": {
"S": { "total": 98, "wins": 68, "accuracy": 0.694, "profit": 2100 },
"A+": { "total": 145, "wins": 91, "accuracy": 0.628, "profit": 1340 }
},
"by_season": [
{ "season": 2024, "total": 180, "wins": 102, "accuracy": 0.567, "profit": 820 }
],
"weeks_with_picks": 92
}32-team list with NoPunt's pick history per franchise: when we picked them, when we picked against them, combined accuracy.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| abbr | string | Official NFL team abbreviation |
| picks_for | number | Total times we picked this team to cover |
| picks_for_pct | number | null | Win rate when picking this team |
| combined_accuracy | number | null | Overall accuracy in games involving this team |
{
"generated_at": "2024-11-19T14:00:00.000Z",
"teams": [
{
"abbr": "KC",
"slug": "kc",
"picks_for": 42,
"picks_for_wins": 28,
"picks_for_pct": 0.667,
"picks_against": 18,
"picks_against_wins": 10,
"picks_against_pct": 0.556,
"combined_accuracy": 0.633,
"last_kickoff": "2024-11-17T20:25:00Z"
}
]
}/api/team/{abbr}CACHE 10 MINUTESComprehensive per-team analytics hub: EPA performance, coaching tendencies, playoff simulation odds, and NoPunt pick history.
| PARAM | EXAMPLE | DESCRIPTION |
|---|---|---|
| abbr | kc | Team abbreviation (case-insensitive) |
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| team.power_rank | number | null | 1-32 ranking by net EPA/play |
| epa.net_epa_play | number | null | Net expected points added per play |
| coaching.pass_rate | number | null | Overall pass play percentage |
| coaching.fourth_down_go_rate | number | null | How often team goes for it on 4th down |
| playoffs.super_bowl_pct | number | null | Monte Carlo Super Bowl win probability |
| picks.for_pct | number | null | Win rate when NoPunt backs this team |
{
"season": 2024,
"team": { "abbr": "KC", "slug": "kc", "power_rank": 3 },
"picks": { "for_record": "28-14", "for_pct": 0.667, "total_games": 60 },
"epa": { "net_epa_play": 0.098, "off_epa_play": 0.065, "def_epa_play": -0.033 },
"coaching": { "pass_rate": 0.617, "fourth_down_go_rate": 0.167, "red_zone_td_rate": 0.792 },
"playoffs": { "playoff_pct": 94.2, "super_bowl_pct": 18.7 }
}32 teams ranked by composite EPA. Each row includes off_epa_play, def_epa_play, net_epa_play, success rates, and PPG.
| PARAM | EXAMPLE | DESCRIPTION |
|---|---|---|
| season | 2024 | Optional — defaults to most recent backfilled season |
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| rank | number | 1-32 ranking by net EPA/play |
| net_epa_play | number | Offense EPA minus defense EPA per play |
| off_epa_play | number | Expected points added per offensive play |
| def_epa_play | number | Expected points added per defensive play (lower is better) |
| off_success | number | null | Offensive success rate (positive EPA plays / total) |
| points_for | number | null | Total points scored |
{
"season": 2024,
"generated_at": "2024-11-19T14:00:00.000Z",
"rankings": [
{
"rank": 1,
"team": "BAL",
"slug": "bal",
"net_epa_play": 0.142,
"off_epa_play": 0.098,
"def_epa_play": -0.044,
"off_success": 0.48,
"def_success": 0.38,
"points_for": 312,
"points_against": 218,
"games_played": 11
}
]
}Top N stat leaders by position for the current season (or a specified week). Supports passing/rushing/receiving/PPR.
| PARAM | EXAMPLE | DESCRIPTION |
|---|---|---|
| view | season | season (default) or week |
| pos | QB | QB, RB, WR, or TE |
| stat | passing_yards | passing_yards | rushing_yards | receiving_yards | fantasy_points_ppr | etc |
| limit | 20 | 1-50, default 20 |
| season | 2024 | Optional — defaults to most recent season with data |
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| leaders | array | Ranked list of player stat rows |
| leaders[].player_name | string | Player display name |
| leaders[].team | string | Current team abbreviation |
| leaders[].stat_total | number | Season total for the requested stat (the value rows are ranked by). Per-stat fields are null in the season view. |
| leaders[].games_played | number | Games the player has data for this season (season view only) |
{
"season": 2024,
"view": "season",
"pos": "QB",
"stat": "passing_yards",
"limit": 3,
"leaders": [
{
"player_name": "Joe Burrow",
"team": "CIN",
"position": "QB",
"stat_total": 4918,
"games_played": 17,
"passing_yards": null,
"passing_tds": null,
"fantasy_points_ppr": null
}
]
}/api/exports/predictions.csvCACHE 24 HOURSPROFull pick history with joined results as a downloadable CSV. Includes every pick, tier, confidence, spread, moneyline, final score, and W/L outcome. Pro only — requires an active Pro session.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| game_id | string | Unique game identifier (e.g. 2024_12_SF_GB) |
| tier | S | A+ | A | B | C | Confidence tier |
| correct | boolean | Whether the pick won |
| profit | number | Unit profit/loss for a flat $100 bet |
game_id,season,week,home_team,away_team,pick_team,...,home_score,away_score,correct,profit 2024_12_SF_GB,2024,12,GB,SF,SF,...,20,27,true,91
/api/exports/player-stats.csvCACHE 24 HOURSPROPer-player weekly stat lines — passing, rushing, receiving, and fantasy points. 2020-present. Pro only — requires an active Pro session.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| player_id | string | NFL GSIS player ID |
| fantasy_points_ppr | number | PPR fantasy points for the week |
player_id,player_name,position,team,season,week,...,fantasy_points_ppr 00-0036442,Josh Allen,QB,BUF,2024,12,...,28.4
/api/exports/team-stats.csvCACHE 24 HOURSPROPer-team season EPA composites — offensive, defensive, net EPA per play, pass/rush splits, and point totals. Pro only — requires an active Pro session.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| net_epa_play | number | Net EPA per play (offense - defense) |
| off_epa_play | number | Offensive EPA per play |
| def_epa_play | number | Defensive EPA per play (lower is better) |
team,season,games_played,off_epa_play,def_epa_play,net_epa_play,... KC,2024,17,0.082,-0.061,0.143,...
Health check pinging Supabase. Returns 200 OK with elapsed_ms, 503 if degraded.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| status | "ok" | "degraded" | Overall service health |
| supabase | "ok" | "error" | "unconfigured" | Database connectivity |
| elapsed_ms | number | Round-trip latency in milliseconds |
{
"status": "ok",
"supabase": "ok",
"error": null,
"elapsed_ms": 42,
"timestamp": "2024-11-19T14:00:00.000Z"
}RSS 2.0 feed of the latest 50 completed games. Each item includes our pick, tier, confidence, final score, and outcome.
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| channel/item | XML | One item per completed game with title, description, pubDate, guid |
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>NoPunt Picks</title>
<link>https://www.nopunt.com</link>
<item>
<title>SF 27 - GB 20 (Picked SF ✓)</title>
<description>Tier S | Conf 0.78 | Spread -1.5</description>
<pubDate>Sun, 24 Nov 2024 18:25:00 GMT</pubDate>
<guid>2024_12_SF_GB</guid>
</item>
</channel>
</rss>No formal license. If you build something fun on top of this data, credit nopunt.com and link back. If you push it to production, ping us — we will link to the cool stuff in the footer.