Australia Crawler - Racing Australia
Version 1 · Created the Australia crawler page with source pages, HTML artifact structure, run commands, readiness rules, verification, and module changelog.
Historical versionAustralia Crawler - Racing Australia
Last reviewed: 2026-08-08 AEST
Module identity
- Country: Australia
- Program/source name: Racing Australia
- Adapter source ID:
au_racing_australia - Python module:
src\formcrawler\sources\au\racing_australia.py - Launcher:
scripts\crawl_racing_australia_meeting.bat - Discipline: Thoroughbred (
T) - Racing jurisdiction code:
AUS - ISO country code:
AU - Allowed hosts:
racingaustralia.horse,www.racingaustralia.horse
Scope and key pages
The adapter captures a bounded five-page lifecycle bundle for one Racing Australia meeting. Any supported page containing the same Key value can be supplied; the adapter normalizes the meeting and uses the race program as the early-published discovery control.
| Page | Public route | Phase | Artifact type |
|---|---|---|---|
| Race program | /FreeFields/RaceProgram.aspx?Key=<meeting-key> |
pre_race |
race_program_html |
| Acceptances | /FreeFields/Acceptances.aspx?Key=<meeting-key> |
pre_race |
acceptances_html |
| Gear changes | /FreeFields/GearChanges.aspx?Key=<meeting-key> |
pre_race |
gear_changes_html |
| Scratchings | /FreeFields/Scratchings.aspx?Key=<meeting-key> |
pre_race |
scratchings_html |
| Results | /FreeFields/Results.aspx?Key=<meeting-key> |
post_race |
results_html |
The meeting key must contain date, state, and venue in the source format, for example 2026Aug07,NSW,Coffs Harbour. Supported state codes are ACT, NSW, NT, QLD, SA, TAS, VIC, and WA.
Capture workflow
- Validate the HTTPS host,
/FreeFieldsroute, singleKeyparameter, meeting date, state, and venue. - Convert the supplied page to the canonical race-program control URL.
- Capture and validate the program.
- Discover exactly five targets for the same meeting key.
- Deduplicate them in the persistent queue and capture each ready page through the shared 15-25-second host limiter.
- Store immutable HTML, metadata, and a FormParser inbox handoff.
- Leave unpublished lifecycle pages retryable rather than storing their placeholder text as successful data.
Source and artifact data structure
Each captured artifact is complete server-rendered HTML for one lifecycle page. The target metadata includes:
dateasYYYYMMDD;state;venue;meeting_key;- one of the five
page_type,capture_phase, andartifact_typecombinations above.
Readiness checks require the requested venue and displayed meeting date. Program and acceptances pages must expose Race 1 and their publication marker. Gear, scratchings, and results pages must expose their corresponding published content; results additionally require finish and margin headings.
Local Thoroughbred storage follows:
C:\Users\Robert\project-data\FormCrawler\t-artifacts\<year>\AUS\au_racing_australia\<event>\
C:\Users\Robert\project-data\FormParser\inbox\T\<year>\AUS\au_racing_australia\<artifact-id>.json
How to run
Capture all five pages from any supported meeting URL:
.\scripts\crawl_racing_australia_meeting.bat "https://racingaustralia.horse/FreeFields/Results.aspx?Key=2026Aug07%2CNSW%2CCoffs%20Harbour"
Equivalent generic command:
python scripts\formcrawler.py capture-discovered `
--source au_racing_australia `
--url "https://racingaustralia.horse/FreeFields/Results.aspx?Key=2026Aug07%2CNSW%2CCoffs%20Harbour"
Rerun the same command to resume queued or not-yet-ready pages. Use python scripts\formcrawler.py queue-status to inspect the shared queue.
For a public GET page that cannot be retrieved directly, add --use-racingandsports-proxy to a generic command or set FORMCRAWLER_USE_RACINGANDSORTS_PROXY=1 before launching the batch file.
Known limitations and recovery
- This module captures source material; FormParser owns field extraction and canonical JSON mapping.
- It does not discover meetings from a national calendar; it starts from a known meeting URL.
- A lifecycle page explicitly saying it is not currently available remains retryable.
- Stop safely with Ctrl+C and rerun the same meeting URL.
- The external
FormCrawler\STOPfile blocks new requests after a hard stop.
Verification
On 2026-08-07, the supplied Coffs Harbour meeting completed with zero retries and zero failures. Stored sizes were 37,784 bytes for the program, 152,298 for acceptances, 45,614 for gear changes, 34,727 for scratchings, and 190,581 for results. All five SHA-256 values and FormParser handoffs matched. The full project suite then passed 71 tests.
Module changelog
2026-08-07 - Initial implementation
- Added strict Racing Australia meeting-key and route validation.
- Added the five-page meeting bundle with program-led discovery.
- Added readiness checks that reject unavailable placeholders.
- Added
crawl_racing_australia_meeting.batand adapter/workflow tests. - Live-verified the Coffs Harbour program, acceptances, gear changes, scratchings, and results artifacts.