ATG APIatg.se ↗
Access ATG.se race calendars, horse profiles, startlists, and race results via a structured API. Covers 5 endpoints for Swedish harness and thoroughbred racing data.
What is the ATG API?
The ATG.se API exposes 5 endpoints covering Swedish horse racing data: daily race calendars, individual race details with full starter lists, horse profiles with pedigree and lifetime statistics, game startlists with pool data, and completed game results. The get_race_details endpoint returns per-starter fields including horse, driver, result, and betting pool data for a given race ID.
curl -X GET 'https://api.parse.bot/scraper/242032cf-856c-464d-acc3-4784ba5bf8da/get_race_calendar?date=2026-07-11' \ -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 atg-se-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.
"""ATG Racing: explore today's calendar, drill into a race, look up a horse, and check V64 results."""
from parse_apis.ATG_Racing_Info_API import ATG, GameType, ResourceNotFound
client = ATG()
# Fetch today's race calendar — see which tracks are racing.
calendar = client.calendars.get(date="2026-06-23")
for track in calendar.tracks:
print(track.name, track.sport, track.biggest_game_type)
# Get details for a specific race discovered from the calendar.
race = client.races.get(race_id="2026-06-23_8_1")
for starter in race.starts:
print(starter.number, starter.horse.name, starter.driver.last_name)
# Look up the full profile of the first horse in that race.
horse = client.horses.get(horse_id="800917")
print(horse.name, horse.age, horse.sex)
print(horse.pedigree.father.name, horse.pedigree.mother.name)
print(horse.statistics.life.starts, horse.statistics.life.earnings)
# Fetch a V64 game's startlist and pool info.
game = client.games.get(game_id="V64_2026-06-23_8_4")
print(game.id, game.status, game.type)
# List recent V64 results — bounded to 3 items.
try:
for result in client.game_results.list(game_type=GameType.V64, limit=3):
print(result.id, result.turnover, result.track_names)
except ResourceNotFound as exc:
print(f"No results available: {exc}")
print("exercised: calendars.get / races.get / horses.get / games.get / game_results.list")
Fetch the full race calendar for a specific date. Returns all tracks racing that day with their scheduled races, start times, statuses, and available betting games. Each track entry includes an id, name, sport, and list of races; the games object groups available betting pools by type.
| Param | Type | Description |
|---|---|---|
| daterequired | string | Date in YYYY-MM-DD format. |
{
"type": "object",
"fields": {
"date": "string, the requested date",
"games": "object keyed by game type containing arrays of available games",
"tracks": "array of track objects with id, name, startTime, races, biggestGameType, sport, countryCode"
}
}About the ATG API
Race Calendar and Discovery
The get_race_calendar endpoint accepts a date parameter in YYYY-MM-DD format and returns an array of track objects for that day. Each track includes its id, name, startTime, a list of scheduled races, biggestGameType, sport, and countryCode. Track and race IDs discovered here are the entry point for all other endpoints — race IDs follow the format YYYY-MM-DD_trackId_raceNumber, and game IDs follow GameType_YYYY-MM-DD_trackId_raceNumber.
Race Details and Horse Profiles
get_race_details takes a race_id and returns the full context for one race: track conditions, race distance in meters, race status (e.g. upcoming or results), and a starts array where each entry contains the horse object, driver info, result fields if the race is completed, and pool data. Horse IDs from starts[*].horse.id feed directly into get_horse_profile, which returns a horse's age, sex, owner, breeder, pedigree (father, mother, grandfather), and both yearly and lifetime racing statistics.
Betting Games and Results
get_startlist retrieves pool and starter data for a specific ATG game (e.g. V64, V75) using a game ID sourced from get_race_calendar. It returns aggregate pools with turnover and result data, a races array with per-race starters and pools, and an overall status. The get_game_results endpoint accepts a game_type string — confirmed working values are V64, V75, and V86 — and returns recent completed results with payouts, winner counts, turnover figures, and associated race details. If no recent game of that type has completed, the gameResults array may be empty.
The ATG API is a managed, monitored endpoint for atg.se — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when atg.se 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 atg.se 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 Swedish horse racing schedule dashboard using
get_race_calendartrack and race data - Track horse career performance by querying
get_horse_profilefor lifetime and yearly statistics - Display live and final race results by polling
get_race_detailsfor status and result fields on each starter - Analyze V75 and V64 pool turnover trends using historical data from
get_game_results - Construct driver performance summaries by aggregating driver fields across race starter lists
- Feed pedigree data from
get_horse_profileinto breeding analytics tools using father, mother, and grandfather fields - Monitor game pool sizes before post time using the
poolsobject returned byget_startlist
| 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 ATG.se have an official public developer API?+
What does get_race_details return for a race that hasn't run yet?+
status field returns upcoming and the result fields within each starter object in the starts array will be absent or null. Full result data — including finishing positions and payouts — populates once the race status changes to results.Which game types work with get_game_results?+
game_type parameter are V64, V75, and V86. Other ATG game types may return empty gameResults arrays either because no recent completed games exist for that type or because that type is not currently supported.Does the API cover international races or only races held in Sweden?+
countryCode field, so non-Swedish tracks may appear when ATG.se carries them, but consistent coverage of international fixtures is not guaranteed. You can fork this API on Parse and revise it to add endpoints targeting specific international race data if ATG.se exposes it.Is odds or live betting data available through these endpoints?+
get_startlist and get_race_details endpoints return pool-level data including turnover figures, but real-time win odds per starter are not currently exposed as discrete fields. You can fork this API on Parse and revise it to add an endpoint surfacing per-horse odds if that data is accessible on ATG.se.