Coolbet APIcoolbet.ee ↗
Access Coolbet.ee sports betting data via 6 endpoints: sports tree, events by category, live in-play odds, event markets, recommendations, and promotions.
What is the Coolbet API?
The Coolbet.ee API provides structured access to sports betting data through 6 endpoints covering everything from the full sports navigation tree to granular per-event markets. Use get_events_by_category to pull upcoming matches with odds for specific leagues, or get_live_events to stream in-play events grouped by league. Response fields include team names, start times, market outcomes, and odds across multiple market types.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/72d76056-f538-4af4-9a0a-7977f194a32c/get_sports_tree' \ -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 coolbet-ee-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.
from parse_apis.coolbet_sports_betting_api import Coolbet, SportCategory, Match, LeagueCategory, Promotion, EventDetail
coolbet = Coolbet()
# Get the sports navigation tree
tree = coolbet.sportcategories.tree()
print(tree.name, tree.depth)
for sport in tree.children:
print(sport.name, sport.icon, sport.id)
# Fetch recommended/popular matches
for match in coolbet.matches.recommended():
print(match.name, match.home_team_name, match.away_team_name, match.match_start)
for market in match.markets:
print(market.name, market.view_type)
for outcome in market.outcomes:
print(outcome.name, outcome.result_key)
break
# Get event details for a specific match
detail = coolbet.match(id=4756043).details()
print(detail.match.home_team_name, detail.match.away_team_name, detail.match.layout)
for group in detail.fo_groups:
print(group.name, group.position)
for mtg in detail.markets:
print(mtg.market_type_name, mtg.view_type)
# Browse events by league category
for league in coolbet.leaguecategories.by_category(category_id=18975):
print(league.name, league.region_name)
for match in league.matches:
print(match.name, match.status, match.markets_total_count)
# Check live events
for league in coolbet.matches.live():
print(league.name, league.sport_id)
for match in league.matches:
print(match.name, match.status)
# List active promotions
for promo in coolbet.promotions.list():
print(promo.name_external, promo.code, promo.bonus_type, promo.start_time, promo.end_time)
print(promo.products.casino, promo.products.sportsbook)
Retrieve the full sports navigation tree with categories and subcategories. Returns a hierarchical tree rooted at a single node with nested children representing sports, regions, and leagues. Each leaf node has an id usable as category_id in get_events_by_category.
No input parameters required.
{
"type": "object",
"fields": {
"id": "integer root node ID",
"name": "string root node name",
"depth": "integer depth level of root node",
"children": "array of sport category objects, each containing nested children for regions and leagues"
},
"sample": {
"data": {
"id": 1,
"name": "Root",
"slug": "",
"depth": 1,
"order": null,
"children": [
{
"id": 62,
"icon": "football",
"name": "Jalgpall",
"slug": "jalgpall",
"depth": 2,
"order": 1,
"children": [
{
"id": 18769,
"icon": "GB-ENG",
"name": "Inglismaa",
"slug": "inglismaa",
"depth": 3,
"order": 2,
"children": [
{
"id": 18975,
"icon": null,
"name": "Premier League",
"slug": "meistriliiga",
"depth": 4,
"order": 1,
"children": [],
"fullSlug": "jalgpall/inglismaa/meistriliiga",
"matches_count": 1,
"sport_category_id": 62
}
],
"fullSlug": "jalgpall/inglismaa",
"country_code": "GB-ENG",
"sport_category_id": 62
}
],
"fullSlug": "jalgpall",
"sport_category_id": 62
}
],
"fullSlug": ""
},
"status": "success"
}
}About the Coolbet API
Sports Navigation and Event Discovery
get_sports_tree returns a hierarchical tree of sports, regions, and leagues rooted at a single node. Each node carries an id, name, and depth, with nested children arrays for sub-levels. Leaf node IDs feed directly into get_events_by_category as the category_id parameter — for example, 18975 for the Premier League or 19104 for La Liga. The events response includes categories (league objects containing matches and market_types), a filterUsed string, and availableFilters for switching between views like upcoming and today.
Event Details and Markets
get_event_details accepts a match_id — sourced from get_events_by_category, get_live_events, or get_recommendations — and returns the full market depth for that match. The response includes a match object with team names, start time, and betbuilder_id, an array of foGroups describing market group definitions (Winner, Totals, Mixed), and a markets array containing all available outcomes with odds. If match_id is omitted, the endpoint automatically resolves a popular event from site recommendations.
Live Events and Recommendations
get_live_events returns currently in-play events with a hasMore boolean for offset-based pagination via the offset and limit parameters. The categories array will be empty when no events are active. get_recommendations returns a ranked list of popular matches in a matches array alongside market_types_by_league_category, a mapping of category ID strings to market type definitions useful for decoding market data across different leagues.
Promotions
get_promotions returns active bonus campaigns with fields including id, name, code, bonus_type, start_time, end_time, description, images, and products. This is useful for tracking current promotional offers without needing to parse the site manually.
The Coolbet API is a managed, monitored endpoint for coolbet.ee — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when coolbet.ee 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 coolbet.ee 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?+
- Aggregate pre-match odds from Coolbet for specific leagues using category IDs from get_sports_tree
- Monitor live in-play events and odds changes via get_live_events with offset pagination
- Build an odds comparison tool by extracting market outcomes and odds from get_event_details
- Track popular betting events using get_recommendations and the market_types_by_league_category mapping
- Audit active Coolbet promotions including bonus codes and validity periods via get_promotions
- Map the full sports hierarchy to identify available category IDs before querying events
- Power a betting analytics dashboard with structured match metadata including betbuilder_id and foGroups
| 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 Coolbet have an official public developer API?+
How do I find the right category_id for a specific league like the Premier League?+
get_sports_tree first. It returns a nested tree of sports, regions, and leagues. Traverse the children arrays to find the target league node, then use its id value as the category_id parameter in get_events_by_category. For example, the Premier League uses ID 18975.What happens when no live events are currently active in get_live_events?+
categories array will be empty. The hasMore field will be false. You can poll the endpoint and check categories.length to detect when live events become available.Does the API include historical match results or settled bet data?+
Can I filter events by date range within get_events_by_category?+
limit parameter and returns an availableFilters array in the response indicating which filters the source supports (such as today or upcoming). There is no explicit date-range input parameter currently. You can fork this API on Parse and revise it to add date-range filtering as an input parameter mapped to the available filter values.