MaxPreps APImaxpreps.com ↗
Access MaxPreps data via API: search schools, get team rosters, schedules, athlete profiles, rankings, and live scores for high school sports.
What is the MaxPreps API?
The MaxPreps API exposes 9 endpoints covering high school sports data across the United States, including school search, team rosters, game schedules, athlete profiles, national and state rankings, and live scoring. The get_team_schedule endpoint returns full contest arrays with dates, scores, and win/loss status, while get_scoretracker_by_id delivers real-time period scores, clock, possession, and football-specific down-and-distance data for any tracked game.
curl -X GET 'https://api.parse.bot/scraper/e0a033cc-4c08-49d5-8417-81682c9b3dbf/search_schools?query=Oak+Hill+Academy' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for schools by name or query. Returns matching schools with their IDs, locations, mascots, and paths for use in other endpoints.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | School name or search query (e.g., 'Oak Hill Academy', 'Mater Dei') |
{
"type": "object",
"fields": {
"schools": "array of school objects with school_id, name, city, state, mascot, url, and path"
},
"sample": {
"data": {
"schools": [
{
"url": "https://www.maxpreps.com/va/mouth-of-wilson/oak-hill-academy-warriors/",
"city": "Mouth of Wilson",
"name": "Oak Hill Academy",
"path": "/va/mouth-of-wilson/oak-hill-academy-warriors/",
"state": "VA",
"mascot": "Warriors",
"school_id": "f80db136-2ddf-4840-8835-c02f4785634d"
}
]
},
"status": "success"
}
}About the MaxPreps API
School and Team Data
Start with search_schools, which accepts a query string and returns an array of school objects — each with school_id, name, city, state, mascot, and a path you pass to downstream endpoints. Append a sport to that path and use it with get_team_roster to retrieve a full player list: career_id, athlete_id, jersey, position, height, grade, and a photo URL per player. The optional season parameter (format YY-YY) lets you pull rosters for prior years.
Schedules and Game Data
get_team_schedule returns a contests array for a given team path and season. Each contest object carries date, status (final, live, or upcoming), contest_id, qwix_core_game_id, home_team, away_team, and a game_url. Pass game_url to get_scoretracker for a per-game score breakdown including period_scores, or to get_matchup for both teams' season-recap totals as shown on the Matchup tab. For real-time data, pass qwix_core_game_id to get_scoretracker_by_id, which returns possession, clock, down_distance, and field_position for football.
Rankings and Live Scores
get_rankings takes a sport and an optional state code (or 'national') and returns a ranked list with each school's rank, overall record, movement, and teamLink. get_live_and_upcoming_games scopes results by sport, state, and optional gender or school filter. Without a date parameter it returns games across the next 7 days; with one it narrows to a single date. Each game object includes contest_id, time, status, period, clock, and possession.
Athlete Profiles
get_athlete_profile requires both a path and a career_id from roster results. It returns career_data (season-by-season stats and awards), a timeline of articles and game events, club_teams, and a prospect_report object (or null if no rating data exists). This is the deepest per-player endpoint in the set.
The MaxPreps API is a managed, monitored endpoint for maxpreps.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when maxpreps.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 maxpreps.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?+
- Build a high school football score tracker using
get_live_and_upcoming_gamesandget_scoretracker_by_idfor real-time period scores and down-distance - Power a recruiting dashboard by pulling
get_athlete_profilecareer stats and prospect ratings for players identified viaget_team_roster - Generate weekly state or national rankings feeds for a sports media site using
get_rankingswith sport and state parameters - Automate schedule monitoring for a school district by polling
get_team_scheduleand alerting onstatuschanges from upcoming to final - Build a team comparison tool using
get_matchupto surface both teams' season-recap totals before a game - Archive multi-year roster data by iterating
get_team_rosteracross seasons for a given school path - Create a school directory with sport-level detail by combining
search_schoolsresults with roster and schedule data
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does MaxPreps have an official public developer API?+
What does `get_scoretracker` return versus `get_scoretracker_by_id`?+
get_scoretracker operates on a full game URL and returns period_scores, status, clock, and period, but possession and last_updated are always null from that source. get_scoretracker_by_id takes a qwixCoreGameId UUID (available from get_team_schedule) and additionally returns possession, last_updated, down_distance, and field_position, making it more suitable for live football tracking.Does the API cover box scores or individual game stats?+
get_matchup), and career-level stats per athlete in get_athlete_profile, but individual game-level box scores (rushing yards, passing stats, point-by-point data) are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting game-level stat pages.Are there any coverage limitations by sport or state?+
get_live_and_upcoming_games requires a state parameter, so there is no single national live-game feed across all states in one call. You can fork this API on Parse and revise it to aggregate across multiple state calls if a national live view is needed.How do I get a `career_id` to use with `get_athlete_profile`?+
career_id field is returned in each player object from get_team_roster. You also get the athlete path from that same object. Both are required inputs for get_athlete_profile.