Getting Started
This API provides cached NFL data (players, games, stats) for fantasy analytics and prop research. Data updates daily and is not real-time.
Endpoint
https://api.sportsort.co/api/nfl
Auth
Bearer token requiredAPI Token (stored locally)
Used by the Run buttons below. Stored in your browser only.
Prop Evaluation
Evaluate over/under hit rates with multiple split windows in a single query.
Paste your API token above to run this example.
Evaluate prop (multi-split)
query EvaluateProp($playerName: String!) {
evaluateProp(
input: {
playerName: $playerName
sport: NFL
stat: RUSHING_YARDS
threshold: 70.5
direction: OVER
splits: [{ games: 5 }, { games: 10 }, { games: 15 }]
}
) {
playerName
stat
threshold
direction
splits {
label
hitRate
sampleSize
}
}
}
Example Queries
QB prop research
player(name: "Jalen Hurts") {
averages(season: 2025) {
passingYards
passingTDs
rushingYards
rushingTDs
}
}
WR reliability
player(name: "Amon-Ra St. Brown") {
averages(season: 2025) {
targets
receptions
receivingYards
consistency(scoring: HALF_PPR, minPoints: 12)
}
}
Head-to-head comparison
a: player(name: "Tyreek Hill") {
averages(season: 2025) { receivingYards }
}
b: player(name: "CeeDee Lamb") {
averages(season: 2025) { receivingYards }
}
Games by week
query WeekGames($season: Int!, $week: Int!) {
games(season: $season, week: $week) {
id
date
status
homeTeam { abbreviation }
awayTeam { abbreviation }
scores { home away }
}
}
Game leaders
query GameLeaders($gameId: ID!, $season: Int!) {
gameLeaders(gameId: $gameId, season: $season) {
passingYards { player { name } value }
rushingYards { player { name } value }
receivingYards { player { name } value }
touchdowns { player { name } value }
}
}
Authentication
Send your API key in the Authorization header using Bearer format.
Authorization: Bearer YOUR_API_KEY
Missing or invalid keys return an authentication error.
Apollo Sandbox
Use Apollo Sandbox to explore the schema and run queries.
https://api.sportsort.co/api/nfl
Set headers:
{
"Authorization": "Bearer YOUR_API_KEY"
}
Core Queries
These are the main entry points for data.
- player(name: String!)
- players(season, filters, team, position)
- games(season, week, team, status)
- teamSchedule(team, season)
- gameLeaders(gameId, season, seasonType, topN)
Player shape
player(name: "Jalen Hurts") {
id
name
position
team { name abbreviation }
stats(season: 2025) { gamesPlayed }
averages(season: 2025) { passingYards rushingYards fantasyPoints(scoring: HALF_PPR) }
}
Player Filters
Filter players by usage, production, and fantasy output.
query TopUsage($season: Int!) {
players(
season: $season
filters: {
avgPassAttemptsGte: 32
avgPassingYardsGte: 240
avgFantasyPointsGte: 18
avgFantasyPointsScoring: HALF_PPR
}
) {
name
position
team { abbreviation }
averages(season: $season) {
passAttempts
passingYards
fantasyPoints(scoring: HALF_PPR)
}
}
}
For week-range analysis, use weekRange with from and
to.
Fantasy Analytics
Use built-in fantasy scoring modes and derived analytics.
Fantasy Points
averages(season: 2025) {
fantasyPoints(scoring: FULL_PPR)
}
Consistency
averages(season: 2025) {
consistency(scoring: HALF_PPR, minPoints: 12)
}
Boom/Bust
averages(season: 2025) {
boomBust(scoring: HALF_PPR, boomThreshold: 20, bustThreshold: 6) {
boomRate
bustRate
}
}
Week Range
averages(season: 2025) {
consistency(
scoring: HALF_PPR
minPoints: 12
weekRange: { from: 10, to: 18 }
)
}
Schema Overview
Here are the core entry points and types you will use most.
Top-level queries
type Query {
player(name: String!): Player
players(season: Int, filters: PlayerFilterInput, team: String, position: Position): [Player!]!
games(season: Int, week: Int, team: String, status: String): [Game!]!
teamSchedule(team: String!, season: Int): [Game!]!
gameLeaders(gameId: ID!, season: Int!, seasonType: SeasonType = REGULAR, topN: Int = 3): GameLeaders
}
Key types
type Player {
id: ID!
name: String!
team: Team!
position: Position!
stats(season: Int!, seasonType: SeasonType = REGULAR): PlayerStats
averages(season: Int!): PlayerAverages!
}
Player filters
input PlayerFilterInput {
avgReceptionsGte: Float
avgTargetsGte: Float
avgReceivingYardsGte: Float
avgRushAttemptsGte: Float
avgRushingYardsGte: Float
avgPassAttemptsGte: Float
avgPassingYardsGte: Float
avgPassingTDsGte: Float
avgTotalYardsGte: Float
avgFantasyPointsGte: Float
avgFantasyPointsScoring: FantasyScoring
weekRange: WeekRangeInput
}
Full schema: schema.graphql
Errors
Common error causes:
- Missing
Authorizationheader. - Invalid API key.
- Missing required arguments like
seasononplayers.
FAQ
Is this real-time? No. Data is cached and updated daily.
Does it include betting odds? No. This API focuses on stats and fantasy analytics.
Do you support other sports? Not on this endpoint. This is NFL-only.
Can I use Sheets or Python? Yes. Any client that can POST to the endpoint works.