H2hggl APIh2hggl.com ↗
Access H2H GG League eBasketball schedules, live scores, match stats, play-by-play timelines, player stats, and head-to-head comparisons via 9 endpoints.
What is the H2hggl API?
The H2H GG League eBasketball API exposes 9 endpoints covering game schedules (100–200 games per day), live scores, full box scores, play-by-play timelines, and player career statistics. The get_schedule endpoint returns upcoming and completed games across a configurable date range, while get_match_timeline delivers per-incident play-by-play with millisecond timing and running scores for any completed match.
curl -X GET 'https://api.parse.bot/scraper/dd72b5c0-aef0-43c1-9cc0-4246bb6dbe2b/get_schedule?date=2026-07-11&days=1' \ -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 h2hggl-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.
"""
H2H GG League eBasketball API - Usage Example
Get your API key from: https://parse.bot/settings
"""
from parse_apis.h2h_gg_league_ebasketball_api import H2HGGLeague, ResourceNotFound
# Initialize client
h2h = H2HGGLeague(api_key="YOUR_API_KEY")
# Get today's schedule — returns a Schedule with games, date_range, total_games
schedule = h2h.schedules.fetch()
print(schedule.total_games, schedule.date_range.from_date, schedule.date_range.to_date)
# List live games — bounded iteration
for game in h2h.games.list_live(limit=5):
print(game.external_id, game.team_a_name, "vs", game.team_b_name, game.team_a_score, game.team_b_score)
# Get all players and inspect the first one
player = h2h.players.list(limit=1).first()
if player:
print(player.participant_name, player.avg_points, player.matches_win_pct, player.match_form)
# Construct a player and get head-to-head comparison
sparkz = h2h.player(participant_name="SPARKZ")
comparison = sparkz.head_to_head(opponent="SAINT JR")
print(comparison.player_a, "vs", comparison.player_b)
print(comparison.h2h.results)
print(comparison.h2h.participant_a_stats.avg_points, comparison.h2h.participant_b_stats.avg_points)
# Construct a game and fetch full match details (stats + timeline combined)
game = h2h.game(external_id="NB151100626")
try:
details = game.fetch_details()
print(details.match_id, len(details.stats), "periods")
for period in details.stats[:2]:
print(period.period_type, period.team_a.stats_points, period.team_b.stats_points)
print(details.timeline.match_summary.sport, details.timeline.match_summary.start_date)
except ResourceNotFound as exc:
print(f"Match not found: {exc}")
# Get past games for a player
for game in sparkz.past_games(limit=3):
print(game.external_id, game.team_a_name, game.team_a_score, "vs", game.team_b_name, game.team_b_score)
print("exercised: schedules.fetch / games.list_live / players.list / head_to_head / fetch_details / past_games")
Get all eBasketball games for a specific date or date range. Returns both upcoming and completed games with scores, teams, and participant info. Each day typically has 100-200 games. Defaults to today (UTC) if no date provided.
| Param | Type | Description |
|---|---|---|
| date | string | Date in YYYY-MM-DD format. Defaults to today (UTC). |
| days | integer | Number of days to fetch starting from date. |
{
"type": "object",
"fields": {
"games": "array of game objects with externalId, startDate, teamAName, teamBName, participantAName, participantBName, matchStatus, teamAScore, teamBScore, streamName",
"date_range": "object with from (string), to (string), and days (integer)",
"total_games": "integer count of games in the range"
},
"sample": {
"data": {
"games": [
{
"_date": "2026-06-10",
"startDate": "2026-06-10T20:43:00Z",
"teamAName": "New York Knicks",
"teamBName": "Boston Celtics",
"externalId": "NB183100626",
"streamName": "Ebasketball 3",
"teamAScore": null,
"teamBScore": null,
"isCancelled": false,
"matchStatus": null,
"tournamentName": "Ebasketball H2H GG League",
"_status_category": "upcoming",
"participantAName": "MARINE",
"participantBName": "SAINT JR"
}
],
"date_range": {
"to": "2026-06-10",
"days": 1,
"from": "2026-06-10"
},
"total_games": 177
},
"status": "success"
}
}About the H2hggl API
Schedule and Live Game Data
The get_schedule endpoint accepts a date parameter in YYYY-MM-DD format and an optional days integer to fetch multi-day windows. Each game object in the games array includes externalId, startDate, teamAName, teamBName, participantAName, participantBName, and matchStatus. The date_range response object confirms the actual window served. For currently active sessions, get_live_games returns the same game shape plus a streamName field and a total count across all live and immediately upcoming matches — no parameters required.
Match Statistics and Timelines
get_match_stats returns box score data broken down by quarter-1 through quarter-4 and an end-match period. Each period object contains parallel teamA and teamB sub-objects covering points, field goals, three-pointers, free throws, rebounds, assists, steals, blocks, and turnovers. Stats are only populated for matches where matchStatus equals MATCH_ENDED. get_match_timeline returns an incidents array where each event carries a messageType, time (milliseconds remaining in the period), period info, and a running score — useful for reconstructing possession-level flows. get_match_details combines both the stats and timeline into a single call.
Player Stats and Head-to-Head
get_players returns the full roster of approximately 160 active players, each with avgPoints, matchesPlayed, matchesWon, matchesLost, matchesWinPct, and a matchForm string. For individual lookup, get_player_stats accepts a case-insensitive player_name and returns the same career fields alongside a recent_games array. get_player_past_games isolates the 15 most recent completed games for a given player. get_h2h takes two case-insensitive player names and returns participantAStats, participantBStats, and an h2H array of win/loss strings from player A's perspective.
The H2hggl API is a managed, monitored endpoint for h2hggl.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when h2hggl.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 h2hggl.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 daily eBasketball results digest using
get_schedulewith a rollingdayswindow - Power a live scoreboard widget with real-time data from
get_live_games - Render quarter-by-quarter box score breakdowns for completed matches via
get_match_stats - Reconstruct game flow with millisecond-precise play-by-play from
get_match_timeline - Generate player performance dashboards using career stats from
get_player_stats - Display head-to-head records and win rates between two players using
get_h2h - Track recent form for betting or fantasy purposes using
get_player_past_games
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does H2H GG League have an official public developer API?+
What does `get_match_stats` return for live or upcoming matches?+
get_match_stats only returns populated box score data for matches where matchStatus equals MATCH_ENDED. For live or upcoming matches, the stats array is empty. Use get_live_games to confirm a match is active, then poll get_match_details for any partial timeline data that may be available mid-game.Does the API cover individual player per-game box scores, not just career averages?+
get_player_stats and get_player_past_games, but per-game individual box scores — points, rebounds, assists per match — are not currently broken out at the player level. Match stats in get_match_stats are aggregated at the team level per period. You can fork the API on Parse and revise it to add a player-level per-game box score endpoint.How many days of schedule data can be fetched in one call?+
get_schedule endpoint accepts a days integer alongside the date parameter, allowing multi-day windows in a single request. The response includes a date_range object with from, to, and days fields confirming what was returned. There is no documented maximum for the days value, but each day typically contains 100–200 games, so large ranges produce large payloads.Does the API support filtering games by team name or stream?+
get_schedule and get_live_games return all games for the given window without server-side filtering by team or stream. The response fields teamAName, teamBName, and streamName (on live games) are available for client-side filtering. You can fork the API on Parse and revise it to add a filtered endpoint that scopes results to a specific team or stream.