ScoreStream APIscorestream.com ↗
Get live, final, and scheduled high school varsity football scores with quarter-by-quarter box scores and team details by US state via the ScoreStream API.
What is the ScoreStream API?
The ScoreStream API exposes 2 endpoints covering live, final, and scheduled high school varsity football games across US states, including per-quarter box scores and team metadata. The list_games endpoint returns a paginated feed of games filtered by state and date window, while get_game retrieves a single game with engagement metrics such as fan cheers, chat counts, and photo counts not available in the list view.
curl -X GET 'https://api.parse.bot/scraper/6de03e57-d13b-456a-a44a-96a9b44a2abe/list_games?state=TN&end_date=2026-09-22&start_date=2026-09-05' \ -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 scorestream-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.
"""Walkthrough: ScoreStream SDK — high school football scores, bounded and re-runnable."""
from parse_apis.scorestream_com_api import ScoreStream, GameNotFound
client = ScoreStream()
# Browse upcoming/recent Tennessee football games (default state="TN").
for summary in client.game_summaries.list(limit=5):
print(summary.home_team.name, "vs", summary.away_team.name, "|", summary.status)
# Drill into the first game for full detail including engagement counts.
summary = client.game_summaries.list(limit=1).first()
if summary is not None:
game = summary.details()
print(game.home_team.short_name, game.home_score, "-", game.away_score, game.away_team.short_name)
print("cheers:", game.home_cheers, "/", game.away_cheers, "| chat:", game.chat_count)
# Walk quarter-by-quarter box scores.
if game.box_scores:
for qs in game.box_scores:
print(f" {qs.segment}: home {qs.home_score} - away {qs.away_score}")
# Point lookup by id discovered from the listing.
try:
same_game = client.games.get(game_id=game.game_id)
print("fetched by id:", same_game.home_team.name, "at", same_game.url)
except GameNotFound:
print("game no longer available")
print("exercised: game_summaries.list / details / games.get / box_scores")
Lists high school varsity football games (scheduled, in progress and final) for one US state within a date window, one row per game. Each game carries a derived status ('scheduled' = no score reported yet, 'in_progress' = score reported and game not marked Final, 'final'), the current score, the current period label while in progress, and per-quarter box scores (null where the site has no per-quarter figure). Date-times are UTC as the site stores them; local_timezone gives the venue's IANA zone. Omitting start_date and end_date uses a rolling window from 7 days ago through 7 days ahead (UTC midnight bounds), which covers the previous week's finals, any games in progress right now, and the coming week's schedule. Ordering follows the site: newest start date first. Paginated by offset/count over the site's own result stream; total is the site's count of matching games and has_more tells whether another page exists. One round trip per page (plus a one-time bootstrap). A window with no games returns an empty games array with total 0. Only games the site holds with at least moderate confidence are included, matching what the site's own scores page shows. Games where a Tennessee team plays an out-of-state opponent are included.
| Param | Type | Description |
|---|---|---|
| count | integer | Games per page; values above 200 are clamped to 200. |
| state | string | Two-letter US state code (upper or lower case). A code with no games returns an empty result rather than an error. |
| offset | integer | Number of games to skip in the site's result stream; use offset + count of the previous page to continue. |
| end_date | string | Last day of the window inclusive, ISO date YYYY-MM-DD. Must be on or after start_date. Omitted = 7 days after today. |
| start_date | string | First day of the window, ISO date YYYY-MM-DD (UTC midnight). Omitted = 7 days before today. |
{
"type": "object",
"fields": {
"count": "number of games in this page",
"games": "array of game rows: game_id, status (scheduled|in_progress|final), sport, start_datetime_utc, local_timezone, home_team/away_team {team_id, name, short_name, mascot, city, state}, home_score/away_score (null while scheduled), current_segment_id/current_segment (period label, only while in_progress), game_clock (seconds, may be null), last_scored_at_utc, score_confidence (site's 0-100 confidence grade), stoppage_message, box_scores [{segment_id, segment, away_score, home_score}], game_title, venue_id, latitude, longitude, url",
"state": "state code the query was run for",
"total": "site's total number of matching games in the window",
"offset": "offset applied",
"has_more": "true when offset + count < total",
"window_end_utc": "exclusive end of the queried window, UTC",
"window_start_utc": "start of the queried window, 'YYYY-MM-DD HH:MM:SS' UTC"
},
"sample": {
"data": {
"count": 1,
"games": [
{
"url": "https://scorestream.com/game/portland-vs-east-robertson-6239700",
"sport": "football",
"status": "final",
"game_id": 6239700,
"latitude": 36.570949915256975,
"venue_id": 151586,
"away_team": {
"city": "Cross Plains",
"name": "East Robertson High School",
"state": "TN",
"mascot": "Indians",
"team_id": 15418,
"short_name": "East Robertson"
},
"home_team": {
"city": "Portland",
"name": "Portland High School",
"state": "TN",
"mascot": "Panthers",
"team_id": 15569,
"short_name": "Portland"
},
"longitude": -86.50950369425118,
"away_score": 49,
"box_scores": [
{
"segment": "1st Qtr",
"away_score": null,
"home_score": null,
"segment_id": 10010
},
{
"segment": "2nd Qtr",
"away_score": null,
"home_score": null,
"segment_id": 10020
},
{
"segment": "3rd Qtr",
"away_score": null,
"home_score": null,
"segment_id": 10030
},
{
"segment": "4th Qtr",
"away_score": null,
"home_score": null,
"segment_id": 10040
},
{
"segment": "Final",
"away_score": 49,
"home_score": 7,
"segment_id": 19999
}
],
"game_clock": null,
"game_title": null,
"home_score": 7,
"local_timezone": "America/Chicago",
"current_segment": null,
"score_confidence": 99,
"stoppage_message": null,
"current_segment_id": null,
"last_scored_at_utc": "2026-09-12 04:13:27",
"start_datetime_utc": "2026-09-12 00:00:00"
}
],
"state": "TN",
"total": 345,
"offset": 50,
"has_more": true,
"window_end_utc": "2026-09-15 00:00:00",
"window_start_utc": "2026-09-01 00:00:00"
},
"status": "success"
}
}About the ScoreStream API
Game Feed by State
The list_games endpoint returns a page of high school varsity football games for a given US state (state param, two-letter code) within a date window defined by start_date and end_date (ISO format, YYYY-MM-DD). The response includes total, count, offset, and has_more for cursor-style pagination — pass offset + count as the next offset to walk through all results. Each game row contains game_id, a derived status of scheduled, in_progress, or final, start_datetime_utc, local_timezone, and structured home_team and away_team objects with team_id, name, short_name, mascot, city, and state. Current and final scores appear as home_score and away_score (null while scheduled).
Per-Game Detail and Box Scores
The get_game endpoint accepts a single game_id (from list_games) and returns the full game record in the same shape plus a box_scores array. Each element of box_scores includes segment_id, segment (e.g., "Q1", "Q2"), away_score, and home_score, giving quarter-by-quarter breakdowns when the source has them. This endpoint also adds fan engagement fields absent from the list view: chat_count, photo_count, video_count, home_cheers, and away_cheers.
Status Logic and Date Windows
The status field is derived: a game with no score reported is scheduled; one with a score but not yet marked final is in_progress; otherwise it is final. The default date window is 7 days before today through 7 days after. The window_start_utc and window_end_utc fields in the list_games response confirm the actual window applied. Passing a state code with no matching games returns an empty result set rather than an error.
The ScoreStream API is a managed, monitored endpoint for scorestream.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when scorestream.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 scorestream.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 a live high school football scoreboard filtered by state using
list_gameswith a narrowstart_date/end_datewindow - Build a quarter-by-quarter box score view for a specific game using the
box_scoresarray fromget_game - Track fan engagement on rivalry games by monitoring
home_cheers,away_cheers, andchat_countfromget_game - Aggregate weekly game results across multiple states by looping
list_gameswith differentstateparams - Power a high school sports schedule widget using
status: scheduledgames andstart_datetime_utcfor countdowns - Identify high-activity games by sorting on
photo_countandvideo_countreturned byget_game
| 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 ScoreStream have an official developer API?+
How does pagination work in list_games?+
total, count, offset, and has_more. To fetch the next page, set offset to the sum of the previous offset and count. The maximum count per request is 200; values above that are clamped automatically.Does the API cover sports other than high school football, or other competition levels like JV or middle school?+
Are per-quarter box scores always populated?+
box_scores array is present for every game returned by get_game, but individual away_score and home_score values within each segment are null when the source has not reported quarter-level data for that game.