StatChasers Dynasty Values API

Free dynasty player and rookie pick values as JSON, for your own tools.

Use StatChasers dynasty values in your own tools: a website, a Discord bot, a league dashboard, a Google Sheet or a personal project. It's free, with no account, no API key and nothing to install. If you can open a link, you can use it.

One rule: if you show our values to other people, credit StatChasers with a link. See Attribution below.

Wait, what's an API?

Our rankings pages show values in a table made for people. The API gives the same values as plain, organized text (called JSON) that spreadsheets, apps and scripts can read. Each set of data has its own web address, and you change the address to get different data. Try it now:

One player (Saquon Barkley)
Open
https://api.statchasers.com/api/v1/dynasty/players/4866

Your browser shows the player's name, team, rank and value as text. That's the API. The rest of this page lists which addresses do what.

In a browser: paste any address from this page for a quick look. In Google Sheets: one formula pulls a whole board into your sheet; see Google Sheets. In code: every address returns JSON to a plain GET request, with no login. See Code examples.

Standard formats only

The API gives StatChasers values for supported standard dynasty league formats: 8 to 32 teams, Superflex or 1QB, PPR, Half PPR or Standard, TE premium of 0, 0.25, 0.5, 0.75 or 1, and your bench depth. Custom scoring systems (passing TD points, yardage, first downs, bonuses, custom reception values) are not supported through the public API, and any other parameter is rejected.

Quick start

The default board is a 12-team Superflex PPR league with no TE premium:

GET https://api.statchasers.com/api/v1/dynasty/values

Pick your league's format with query parameters:

GET https://api.statchasers.com/api/v1/dynasty/values?teams=14&qb=sf&scoring=half&tep=0.5
Example response
{
  "source": "StatChasers",
  "version": "1",
  "format": { "teams": 14, "qb": "sf", "scoring": "half", "tep": 0.5, "bench": 15 },
  "updated_at": "2026-10-14T09:02:55.456Z",
  "players": [
    { "sleeper_id": "7564", "name": "Ja'Marr Chase", "position": "WR", "team": "CIN", "rank": 1, "value": 8980 },
    { "sleeper_id": "9509", "name": "Bijan Robinson", "position": "RB", "team": "ATL", "rank": 2, "value": 8445 }
  ],
  "picks": [
    { "label": "2027 Early 1st", "season": 2027, "round": 1, "tier": "early", "value": 4526 },
    { "label": "2027 Mid 1st", "season": 2027, "round": 1, "tier": "mid", "value": 2473 },
    { "label": "2027 2nd", "season": 2027, "round": 2, "tier": null, "value": 717 }
  ],
  "attribution": "Values by StatChasers",
  "attribution_url": "https://statchasers.com"
}

Prefer a spreadsheet? Add .csv to the values address and your browser downloads the whole board as a file (every player, then every rookie pick) that opens in Excel, Numbers or Google Sheets. The same settings apply, and the file name says which format it holds:

Download the board as a CSV file
Open
GET https://api.statchasers.com/api/v1/dynasty/values.csv?teams=12&qb=sf&scoring=ppr

Players are keyed by their Sleeper player id, the id most dynasty tools already use. The best assets sit near 10,000. Compare values within one format, not across formats.

Every response starts with source and version. The version only changes if a response changes shape or a value starts to mean something different; new fields can appear without it changing, so ignore fields you don't use.

Endpoints

All endpoints start with https://api.statchasers.com/api/v1/dynasty and take the same format parameters.

GETReturns
/valuesEvery player and rookie pick for a format.
/values.csvThe same board as a spreadsheet file (CSV): one row per player, then one per rookie pick. Opens in Excel, Numbers or Google Sheets.
/players/{sleeper_id}One player, by Sleeper player id.
/picksRookie picks only.
/formatsThe settings you can ask for, as JSON.
One player
Open
GET https://api.statchasers.com/api/v1/dynasty/players/4866?teams=12&qb=sf&scoring=ppr&tep=0.5
Example response
{
  "source": "StatChasers",
  "version": "1",
  "format": { "teams": 12, "qb": "sf", "scoring": "ppr", "tep": 0.5, "bench": 15 },
  "updated_at": "2026-10-14T09:02:55.456Z",
  "player": { "sleeper_id": "4866", "name": "Saquon Barkley", "position": "RB", "team": "PHI", "rank": 78, "value": 2297 },
  "attribution": "Values by StatChasers",
  "attribution_url": "https://statchasers.com"
}

The numbers in the example responses on this page are a snapshot from the day they were written. The live endpoint shows today's rank and value, with a newer updated_at.

Rookie picks use the same labels as the Dynasty Command trade calculator. First rounds are split into early, mid and late; later rounds have one value per round (tier is null).

GET https://api.statchasers.com/api/v1/dynasty/picks?teams=12&qb=1qb
Every setting you can ask for
Open
GET https://api.statchasers.com/api/v1/dynasty/formats

Parameters

Every parameter is optional. Leave one out and you get the default.

NameValuesDefaultNotes
teams8 to 32 (whole numbers)12League size.
qbsf, 1qbsfSuperflex or one-quarterback.
scoringppr, half, stdpprPPR, Half PPR or Standard.
tep0, 0.25, 0.5, 0.75, 10TE premium: extra points per TE catch.
bench0 to 40 (whole numbers)15 (sf) / 16 (1qb)Roster spots per team beyond the starting lineup, taxi included (not IR, K or DEF). Deeper benches keep more value further down the board.

Inputs are checked strictly. A value outside these lists (teams=7, qb=2qb, tep=0.3) returns HTTP 400 with the allowed values, rather than a board for a format you didn't ask for:

HTTP 400
{ "error": "Invalid tep", "allowed": [0, 0.25, 0.5, 0.75, 1] }

Whatever you send, the format object at the top of every response echoes the settings that were applied. If you asked for one format and the echo shows another, the tool you fetched with dropped or rewrote the query string before the request reached us: the API never swaps a default in for a value it was given.

Google Sheets

The quickest way needs nothing installed: Sheets' built-in IMPORTDATA reads the CSV address straight into your sheet, with one row per player and then one per rookie pick. Type this into any cell:

Every player and pick for a 12-team Superflex PPR league, no setup
=IMPORTDATA("https://api.statchasers.com/api/v1/dynasty/values.csv?teams=12&qb=sf&scoring=ppr")

Sheets refreshes an IMPORTDATA formula about once an hour on its own. If you'd rather work from the JSON (for example to pull only the players), the free ImportJSON script does that. Setting it up takes about two minutes:

  1. In your sheet, open Extensions → Apps Script.
  2. Paste in the ImportJSON.gs code from the ImportJSON page, then save.
  3. Back in the sheet, type a formula below into any cell.
Every player for a 12-team Superflex PPR league
=ImportJSON("https://api.statchasers.com/api/v1/dynasty/values?teams=12&qb=sf&scoring=ppr", "/players")
Rookie pick values
=ImportJSON("https://api.statchasers.com/api/v1/dynasty/picks?teams=12&qb=sf", "/picks")

Either way you get one row per player with Sleeper ID, name, position, team, rank and value (the CSV adds the rookie picks below the players, with their season, round and tier). Change the settings in the address (see Parameters) to match your league. Values update about once a day, so there's no need to refresh more often than that.

Code examples

Python
import requests

r = requests.get("https://api.statchasers.com/api/v1/dynasty/values",
                 params={"teams": 12, "qb": "sf", "scoring": "ppr", "tep": 0.5})
board = r.json()
values = {p["sleeper_id"]: p["value"] for p in board["players"]}
print(values.get("4866"))  # Saquon Barkley
JavaScript
const res = await fetch("https://api.statchasers.com/api/v1/dynasty/values?teams=10&qb=1qb&scoring=half");
const board = await res.json();
for (const p of board.players.slice(0, 10)) {
  console.log(p.rank, p.name, p.value);
}

Attribution

Attribution is required. Any app, site, bot or sheet that shows StatChasers values to other people must display "Values by StatChasers" with a link to statchasers.com wherever the values appear, or wherever practical (a footer, an about screen or a bot's help reply). Every response includes the text and link so it's easy to display (the CSV names the source on every row and in its headers):

<a href="https://statchasers.com">Values by StatChasers</a>

Not sure where to put it? Some ideas:

  • Discord bot: a small footer under each reply.
  • Website or app: a "Values by StatChasers" note in the footer or under the table that shows the values.
  • Shared spreadsheet: a cell at the top of the sheet with the link.

If we see the values used without credit, we'll reach out first and ask. Nobody gets blocked without a heads-up.

Rate limits and freshness

No API key is needed. Each IP address can make 300 requests every 15 minutes, across all endpoints. Past that you get HTTP 429; wait the number of seconds in the Retry-After header and try again.

Values refresh about once a day, and updated_at tells you when the board you have was made, so there's no need to poll. Fetch a format once, keep it for a while, and look players up from your copy. Responses can be cached for a few minutes.

Terms of use

Using the API means you agree to these terms:

  • It's free for reasonable, non-abusive use.
  • Attribution is required, as described above.
  • You may use StatChasers values inside your own fantasy football product. You may not mirror, republish or resell the StatChasers value database itself, in bulk or as a competing standalone values service.
  • Rate limits apply, and abusive traffic may be blocked.
  • The API, its endpoints and its response format may change. Breaking changes come with a new version.
  • The API is provided as is, with no guarantee of uptime, availability or accuracy.