MaxPreps APImaxpreps.com ↗
Access high school sports data from MaxPreps: school search, team rosters, schedules, athlete profiles, rankings, live scores, and soccer stat leaders.
What is the MaxPreps API?
The MaxPreps API covers 11 endpoints returning high school sports data including team rosters, game schedules, live scores, athlete profiles, and national or state rankings. The get_team_schedule endpoint returns contest dates, opponents, scores, win/loss status, and contest IDs that chain directly into get_scoretracker or get_matchup for per-game detail. School IDs and paths from search_schools serve as the entry point for most other endpoints.
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 school name query and returns an array of school objects — each with school_id, name, city, state, mascot, and a path field used as input to roster and schedule endpoints. Append a sport segment to that path and pass it to get_team_roster (with an optional season in YY-YY format) to retrieve player-level records: career_id, athlete_id, jersey number, position, height, grade, and a photo URL. The career_id and athlete path from the roster feed directly into get_athlete_profile, which returns career_data (per-season stats, awards, school info), timeline events, club_teams, and a prospect_report object where available.
Schedules and Live Scores
get_team_schedule returns a contests array where each object carries the date, opponent, score, a status field ('final', 'live', or pending), and a game_url usable in downstream endpoints. get_live_and_upcoming_games broadens that to a state-wide feed filtered by sport, state, and optional gender, date, or school parameters, returning all games within a rolling 7-day window when no date is specified. For per-game scoring detail, get_scoretracker accepts a full game URL and returns away_team and home_team objects with score, period_scores, record, possession, and football-specific down_distance and field_position fields. get_scoretracker_by_id does the same from a UUID contest_id without requiring the full URL.
Rankings and Soccer Stat Leaders
get_rankings returns a ranked list of schools for any sport with optional state filtering (or 'national'); each entry includes rank, school name, state code, overall record, and a movement indicator. For soccer, get_soccer_stat_leaders returns a class-level goalkeeper leaderboard — either saves or gaa — for a given state, gender, and classification such as '3A'. Setting all_pages to true returns every ranked player across all leaderboard pages rather than just the first 50. get_soccer_goalkeepers merges both the saves and GAA leaderboards into one array, with each player object carrying both stat values alongside player_id, name fields, and a profile_path for use in get_athlete_profile.
Endpoint Chaining
The endpoints are designed to chain: search_schools → get_team_roster → get_athlete_profile for player research; get_team_schedule or get_live_and_upcoming_games → get_scoretracker or get_matchup for game detail. The get_matchup endpoint returns both teams' school_color fields, season recap totals, and school identity metadata as shown on the game page's Matchup tab.
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 scoreboard that polls
get_live_and_upcoming_gamesby state and surfaces live scores with down-and-distance. - Track a recruited athlete's career stats across seasons using
get_athlete_profilecareer_data and prospect_report. - Generate weekly power rankings by combining
get_rankingsnational data with team record fields. - Pull complete rosters for multiple schools in the same sport to seed a fantasy or simulation league.
- Monitor schedule results for a specific team throughout a season by querying
get_team_scheduleon a recurring basis. - Research soccer goalkeeper depth by class using
get_soccer_goalkeepersto merge saves and GAA leaderboards for a state classification. - Feed a game-day notification system with
get_scoretracker_by_idpolled by contest UUID for final score alerts.
| 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 for a football game versus other sports?+
get_scoretracker returns possession, down_distance, and field_position for football games when a live scoring feed is active. For all sports it returns clock, period, status ('live', 'final', 'upcoming', or 'incomplete'), and per-team score and period_scores. Fields derived from the scoring feed — possession, last_updated — are null when no feed is available for that game.Does the API cover individual game box scores or play-by-play data?+
Are stat leaderboards available for sports other than soccer?+
get_soccer_stat_leaders and get_soccer_goalkeepers) currently cover soccer goalkeepers only. Leaderboards for other sports or non-goalkeeper soccer stats are not included. You can fork this API on Parse and revise it to target MaxPreps stat leader pages for other sports or positions.How does season filtering work across endpoints that accept a `season` parameter?+
season parameter uses a two-digit year format such as '24-25' for the 2024-25 school year. It is optional on get_team_roster, get_team_schedule, and the soccer stat-leader endpoints; when omitted, the site's current active season is used. The resolved season string is returned in the response so you can confirm which season was applied.