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:
https://api.statchasers.com/api/v1/dynasty/players/4866Your 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/valuesPick 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{
"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:
GET https://api.statchasers.com/api/v1/dynasty/values.csv?teams=12&qb=sf&scoring=pprPlayers 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.
| GET | Returns |
|---|---|
/values | Every player and rookie pick for a format. |
/values.csv | The 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. |
/picks | Rookie picks only. |
/formats | The settings you can ask for, as JSON. |
GET https://api.statchasers.com/api/v1/dynasty/players/4866?teams=12&qb=sf&scoring=ppr&tep=0.5{
"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=1qbGET https://api.statchasers.com/api/v1/dynasty/formatsParameters
Every parameter is optional. Leave one out and you get the default.
| Name | Values | Default | Notes |
|---|---|---|---|
teams | 8 to 32 (whole numbers) | 12 | League size. |
qb | sf, 1qb | sf | Superflex or one-quarterback. |
scoring | ppr, half, std | ppr | PPR, Half PPR or Standard. |
tep | 0, 0.25, 0.5, 0.75, 1 | 0 | TE premium: extra points per TE catch. |
bench | 0 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:
=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:
- In your sheet, open Extensions → Apps Script.
- Paste in the
ImportJSON.gscode from the ImportJSON page, then save. - Back in the sheet, type a formula below into any cell.
=ImportJSON("https://api.statchasers.com/api/v1/dynasty/values?teams=12&qb=sf&scoring=ppr", "/players")=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
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 Barkleyconst 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.