Racenet APIracenet.com.au ↗
Get today's Australian and NZ thoroughbred meetings, race times, full runner fields, barrier draws, jockey/trainer data, and bookmaker win odds via the Racenet API.
What is the Racenet API?
The Racenet API covers today's Australian and New Zealand thoroughbred racing across 2 endpoints, returning meeting schedules with local race times and full per-race runner fields. The list_meetings endpoint enumerates every venue active on the current racing day, while get_race_fields delivers barrier draws, jockey and trainer assignments, form data, and public bookmaker win odds for a specific race.
curl -X GET 'https://api.parse.bot/scraper/4b2b3142-7e53-42b8-b484-afe6c4bd967f/list_meetings?country=NZ' \ -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 racenet-com-au-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: browse today's AU meetings, drill into a race card, inspect runners."""
from parse_apis.racenet_com_au_api import Racenet, Country, RaceNotFound
client = Racenet()
# List today's Australian meetings (capped to 5 total items).
for meeting in client.meetings.list(country=Country.AU, limit=5):
print(meeting.venue, meeting.meeting_date_local, f"({meeting.state})")
# Pick the first meeting and open its first race card.
meeting = client.meetings.list(country=Country.AU, limit=1).first()
if meeting is not None and meeting.races:
race_slug = meeting.races[0].race_slug
try:
card = meeting.get_race_card(race_slug=race_slug)
except RaceNotFound:
print("Race not found — may have been abandoned")
else:
print(card.race.race_name, f"{card.race.distance_metres}m", card.race.track_condition)
print(f"{card.runner_count} runners")
# Show each runner's form and best odds.
for runner in card.runners:
best = runner.odds.best_win
form_str = runner.form.last_ten
print(
f" #{runner.saddlecloth_number} {runner.horse_name}"
f" barrier {runner.barrier} {runner.weight_kg}kg"
f" jockey={runner.jockey} form={form_str} best_win=${best}"
)
# List sibling races at the same meeting for navigation.
for other in card.other_races:
print(f" Race {other.race_number}: {other.race_name}")
print("exercised: meetings.list / get_race_card / runners / form / odds / other_races")
Lists the thoroughbred meetings on Racenet's form guide for the current racing day (the site's own 'Today' view, reported in `date`), restricted to Australian and New Zealand venues; barrier-trial meetings are included with `group` = 'Barrier Trials'. Each meeting carries its venue, state, country, IANA timezone, local meeting date and every race with race number, name, distance, class, track condition, status and start time both as UTC and converted to the venue's local date/time. `starters` on a race is null in this listing (runner counts come from get_race_fields). Only the current day is available; other days are not served by this endpoint. One round trip; `meeting_slug` and `races[*].race_slug` are the keys accepted by get_race_fields.
| Param | Type | Description |
|---|---|---|
| country | string | Restrict the listing to one country. Omitted = both Australian and New Zealand meetings. |
{
"type": "object",
"fields": {
"date": "racing day the listing covers (YYYY-MM-DD, the site's current day)",
"country": "the country filter applied, or null when both countries are returned",
"meetings": "array of meeting objects, each with venue/state/country/timezone, meeting_date_local, group ('Australia', 'International' for NZ, 'Barrier Trials') and a races array",
"meeting_count": "integer count of meetings returned",
"meetings[*].races": "array of races: race_id, race_slug, race_number, race_name, race_date_local and race_time_local (HH:MM, venue timezone), start_time_utc, distance_metres, race_class, status, result_state, is_abandoned, track_condition, starters (null here)"
},
"sample": {
"data": {
"date": "2026-09-05",
"country": "NZ",
"meetings": [
{
"group": "International",
"races": [
{
"status": "closed",
"race_id": "3420397",
"starters": 4,
"race_name": "Rich Hill Stud 3yo",
"race_slug": "rich-hill-stud-3yo-race-1",
"race_class": "3yo, open, SW+P",
"race_number": 1,
"is_abandoned": false,
"result_state": "resulted",
"start_time_utc": "2026-09-04T23:55:00.000Z",
"distance_metres": 1400,
"race_date_local": "2026-09-05",
"race_time_local": "11:55",
"track_condition": "Soft 5"
},
{
"status": "open",
"race_id": "3420399",
"starters": null,
"race_name": "Dunstan Horsefeeds Hcp",
"race_slug": "dunstan-horsefeeds-hcp-race-2",
"race_class": "open, Handicap",
"race_number": 2,
"is_abandoned": false,
"result_state": "unresulted",
"start_time_utc": "2026-09-05T00:32:00.000Z",
"distance_metres": 2200,
"race_date_local": "2026-09-05",
"race_time_local": "12:32",
"track_condition": "Soft 5"
}
],
"state": "NZ",
"venue": "Ellerslie",
"is_tab": true,
"country": "NZ",
"timezone": "Pacific/Auckland",
"meeting_id": "449566",
"meeting_slug": "ellerslie-nz-20260905",
"meeting_type": "Metro",
"venue_abbrev": "ELNZ",
"meeting_stage": "FinalFields",
"rail_position": "True",
"track_comments": "N/A",
"meeting_category": "Professional",
"total_prize_money": 940240,
"meeting_date_local": "2026-09-05"
}
],
"meeting_count": 1
},
"status": "success"
}
}About the Racenet API
Meeting Listings
The list_meetings endpoint returns the full schedule of thoroughbred meetings for the current racing day as defined by Racenet's own 'Today' view. Each meeting object includes venue, state, country, timezone, and meeting_date_local. The group field separates regular cards ('Australia'), New Zealand venues ('International'), and 'Barrier Trials'. Embedded within each meeting is a races array carrying race_id, race_slug, race_number, race_name, race_date_local, and race_time_local in the venue's local timezone. The optional country parameter narrows results to Australian or New Zealand meetings; omitting it returns both.
Race Fields
get_race_fields takes a meeting_slug (e.g. belmont-20260905) and a race_slug from the meeting's races array. The response includes a race object with distance, class, track_condition, status, race_time_local, and start_time_utc. The meeting object repeats venue metadata including venue_abbrev, meeting_type, and timezone. The runners array is the core payload: each runner carries saddlecloth_number, barrier, horse_name, horse_slug, age, sex, is_emergency, is_scratched, jockey, trainer, form string, and public bookmaker win odds. A runner_count integer and an other_races array listing sibling races at the same meeting are also returned.
Coverage and Scope
Data is restricted to the current racing day; there is no historical date parameter on either endpoint. Coverage is Australian and New Zealand thoroughbred meetings only — harness and greyhound codes are not included. Both slugs required by get_race_fields are stable keys sourced directly from list_meetings, making a two-step call pattern the standard integration flow.
The Racenet API is a managed, monitored endpoint for racenet.com.au — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when racenet.com.au 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 racenet.com.au 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 race-day schedule sorted by
race_time_localfor each Australian state. - Build a runner comparison tool using
barrier,saddlecloth_number, and bookmaker win odds fromget_race_fields. - Alert bettors when
is_scratchedflips to true for a runner they have bookmarked. - Aggregate jockey and trainer workloads across all meetings returned by
list_meetingson a given day. - Filter today's barrier trials by checking for
group= 'Barrier Trials' in the meetings listing. - Show track condition and race class alongside odds for in-play or pre-race betting dashboards.
- Cross-reference
horse_slugacross races to identify runners contesting multiple events on the same day.
| 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 Racenet have an official developer API?+
What does `list_meetings` return for New Zealand venues?+
country filter is applied. Their group field is set to 'International' rather than 'Australia', and their country and timezone fields reflect the NZ venue. Passing country with the appropriate value restricts the listing to one country only.Does the API cover historical racing dates or future race cards?+
list_meetings and get_race_fields reflect Racenet's 'Today' view; there is no date parameter to query past results or advance cards. You can fork this API on Parse and revise it to add a date-parameterised endpoint if historical or upcoming data is needed.Are harness racing or greyhound meetings included?+
How granular is the odds data returned by `get_race_fields`?+
runners array includes public bookmaker win odds as a single figure per runner. Place odds, exotic market prices (quinella, exacta, trifecta), and fluctuation history are not part of the current response shape. You can fork this API on Parse and revise it to add additional market data if a wider odds set is required.