What it returns
US high school schedules, results and scores, read from schools' own athletics websites and from a state association's public score center.
Two datasets:
- games: one row per game, with school year, sport, gender, level (varsity, junior varsity, freshman and so on), date, local start time, home and away school with city and state, home and away score, set or period scores where given, location and whether it was a conference game.
- schools: one row per school found on the athletics-site network, with city, state, ZIP, latitude, longitude and athletics site address.
Filter by school (home or away), state, sport, gender, level, school year and date range, or ask for scored games only.
Sources:
- School athletics sites on the VNN / PlayOn network: about 400 schools' sites in Georgia, Maryland, Colorado, Florida and Alabama, plus the opponents they list. Schools enter their own scores, and many do not, so most games on this network have a date and teams but no score.
- WIAA ScoreCenter (Wisconsin): every member school's varsity results from the 2021-22 school year on, with scores: about 190,000 games, including football through the state finals. ScoreCenter does not list every winter state-tournament game, so March basketball and other late-winter tournament games may be missing.
Data is rebuilt weekly. No player names or rosters are included. A blank field means the source did not publish it.
Charged per row returned.
Request
POST https://api.pushbuild.com/high-school-sports-scores/run with a JSON body. Send your key in the X-API-Key header.
| Field | Type | Description |
|---|---|---|
dataset | string: games, schools | games (schedules, results and scores) or schools (name, city, state, location, athletics site). Default: "games". |
school | string | Part of a school name; games match either the home or the away school. |
states | list of strings | Two-letter state codes, e.g. WI, GA, MD, CO. |
sports | list of strings | e.g. Football, Volleyball, Soccer, Basketball. Matched loosely. |
gender | string: , Boys, Girls, Coed | Leave empty for all. |
level | string | e.g. Varsity, Junior Varsity, Freshman. |
season | string | e.g. 2026-2027. Leave empty for all. |
dateFrom | string | YYYY-MM-DD. |
dateTo | string | YYYY-MM-DD. |
resultsOnly | boolean | Only games with a final score. Default: false. |
maxItems | integer | Maximum items to return (1-500). Default: 100. |
Example
curl -X POST https://api.pushbuild.com/high-school-sports-scores/run \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"states": ["WI"], "maxItems": 20}'
Response
{"count": 20, "truncated": false, "seconds": 1.4, "items": [ { ... } ]}
Each call returns up to 500 items. Records that fail validation or are not found are flagged in the items and not charged.
Pricing
Pay only for results returned: $0.24 per 1,000 records. No charge for errors or empty searches.
Use it from Claude, ChatGPT or Cursor
This API is also an MCP server: https://api.pushbuild.com/mcp/high-school-sports-scores. Add it to any assistant that supports remote MCP servers, with your key in the X-API-Key header. Same prices. Setup for each app.
Tell us what you need built.
Questions about this API, higher volumes, or a data source you need that we don't cover yet.
hello@pushbuild.comWant this data inside your own app or CRM? API integrations and data sync