FantasyCalc APIfantasycalc.com ↗
Access FantasyCalc player rankings, trade values, and historical trade data via API. Supports Dynasty, Redraft, Superflex, PPR, and multi-team formats.
What is the FantasyCalc API?
The FantasyCalc API exposes 3 endpoints covering fantasy football player rankings, trade value history, and database-wide trade counts derived from thousands of real league trades. The get_rankings endpoint returns a full ranked player list with integer trade values, positional ranks, 30-day trend data, and optional ADP figures across Dynasty, Redraft, Superflex, and multiple PPR settings. Player-level trade history is available through get_player_trades.
curl -X GET 'https://api.parse.bot/scraper/5e9d9ba7-cf7a-4bb0-bc6a-1c6038981577/get_rankings?ppr=0&num_qbs=1&num_teams=10&is_dynasty=True&include_adp=False' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fantasycalc-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.fantasycalc_api import FantasyCalc, Ppr, NumQbs, NumTeams
client = FantasyCalc()
# List rankings for a 10-team zero-PPR single-QB dynasty league
for ranking in client.rankings.list(ppr=Ppr.ZERO, num_qbs=NumQbs.ONE, num_teams=NumTeams.TEN, is_dynasty=True):
print(ranking.overall_rank, ranking.player.name, ranking.player.position, ranking.value, ranking.trend_30_day)
# Get trade history for a specific player
trade_history = client.tradehistories.get(player_id="6170", num_qbs=NumQbs.TWO, is_dynasty=True)
for hv in trade_history.historical_values:
print(hv.date, hv.value)
for trade in trade_history.implied_values:
print(trade.side1, trade.side2, trade.value, trade.date)
# Get total trade count
tc = client.tradecounts.get()
print(tc.count)
Fetch comprehensive fantasy football rankings and player values for a given league format. Returns all ranked players sorted by overall rank, each with trade value, positional rank, trend data, and player metadata. Paginates as a single page containing the full ranking list.
| Param | Type | Description |
|---|---|---|
| ppr | number | PPR scoring format. |
| num_qbs | integer | Number of starting QBs. |
| num_teams | integer | Number of teams in the league. |
| is_dynasty | boolean | Whether to fetch Dynasty (true) or Redraft (false) rankings. |
| include_adp | boolean | Whether to include ADP data in the response. |
{
"type": "object",
"fields": {
"items": "array of player ranking objects, each with value, overallRank, positionRank, trend30Day, and a nested player object with id, name, position, maybeTeam, maybeAge, and platform IDs"
},
"sample": {
"data": {
"items": [
{
"value": 10405,
"player": {
"id": 6170,
"name": "Josh Allen",
"mflId": "13589",
"espnId": "3918298",
"ffpcId": "27208",
"maybeAge": 30.1,
"maybeYoe": 8,
"position": "QB",
"maybeTeam": "BUF",
"sleeperId": "4984",
"maybeHeight": "77",
"maybeWeight": 237,
"maybeCollege": "Wyoming",
"fleaflickerId": "13761",
"maybeBirthday": "1996-05-21"
},
"maybeTier": 1,
"trend30Day": 266,
"overallRank": 1,
"positionRank": 1,
"redraftValue": 10453,
"combinedValue": 20858,
"maybeTradeFrequency": 0.0076,
"redraftDynastyValueDifference": 48,
"redraftDynastyValuePercDifference": 0
}
]
},
"status": "success"
}
}About the FantasyCalc API
Rankings and Player Values
The get_rankings endpoint accepts five optional parameters — ppr (0, 0.5, or 1), num_qbs (1 for standard, 2 for Superflex), num_teams (10, 12, or 14), is_dynasty (Dynasty vs. Redraft), and include_adp — and returns an array of player objects sorted by overallRank. Each object includes a numeric value (the trade value score), positionRank, trend30Day, and player metadata such as name, position, and the player.id field used to query other endpoints.
Trade Value History
The get_player_trades endpoint takes a required player_id (obtained from get_rankings results) plus optional num_qbs and is_dynasty flags. It returns an object with two arrays: historicalValues, a dated time series of the player's trade value ({date, value}), and impliedValues, which lists actual trade scenarios showing the assets on each side (side1, side2) along with the implied value. This makes it possible to reconstruct what other managers considered fair for a given player.
Trade Volume
The get_trade_count endpoint takes no parameters and returns a single integer representing the total number of trades in the FantasyCalc database. This figure reflects the data volume underpinning all value calculations and can be surfaced in applications to communicate data freshness or credibility to end users.
The FantasyCalc API is a managed, monitored endpoint for fantasycalc.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fantasycalc.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fantasycalc.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display dynasty league trade values sorted by
overallRankandpositionRankinside a custom team management dashboard - Track a player's
trend30Dayacross multiple weeks to identify buy-low or sell-high opportunities - Compare
historicalValuestime series for two players to evaluate a proposed trade over time - Build a Superflex startup draft board by querying
get_rankingswithnum_qbs=2andis_dynasty=true - Show users the actual
impliedValuestrade scenarios fromget_player_tradesto justify a recommended deal - Surface the total trade count from
get_trade_countas a data freshness indicator in a fantasy advice tool - Generate PPR-adjusted rankings for half-PPR leagues by setting
ppr=0.5inget_rankings
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does FantasyCalc have an official developer API?+
What does `get_player_trades` return beyond a single trade value number?+
historicalValues, which is a dated time series of the player's value, and impliedValues, which lists individual trade scenarios with assets on each side (side1, side2) and the implied value for that exchange. The num_qbs and is_dynasty parameters let you scope this history to a specific league format.Does the API cover IDP, TE-premium, or keeper league formats?+
num_qbs), Dynasty, and Redraft formats with 10, 12, or 14 teams. IDP, TE-premium scoring, or keeper-specific values are not exposed by the current endpoints. You can fork this API on Parse and revise it to add those scoring variants if FantasyCalc surfaces that data.Can I retrieve rankings for a specific player by name or position without fetching the full list?+
get_rankings returns all ranked players in one array sorted by overallRank. There is no per-player or per-position filter on that endpoint — filtering by position or name must be done client-side on the returned array. To get detailed trade history for one specific player, use get_player_trades with that player's player.id.How current is the trade value data?+
get_trade_count reflects the current database size. The historicalValues array in get_player_trades provides dated data points, so you can assess how recently values have shifted. Exact ingestion latency is not exposed by the API.