Harness and Greyhound Source Research - August 2026
Version 1 · Published the consolidated Harness/Greyhound investigation, validation, supplementary, and breeding/profile report.
Historical versionHarness and Greyhound Source Investigation
Version: 1.1.0 Last updated: 2026-08-08
Git baseline note: all eight adapters in this report, including LeTROT and the independent discipline registries, are committed and pushed on
origin/codex/harness-greyhound-jurisdictionsat490b0c9. The branch worktree is clean. They are not yet integrated intoorigin/main, which remains the Thoroughbred baseline at4d68b42.
Scope and decision rules
This report covers every unticked Harness and Greyhound source that was listed in SITE_LINKS.md on 2026-08-08. Investigation used the public site in the in-app browser. FormCrawler code captures raw source responses only. It does not parse racing values. Supplementary resources are linked for operator review but are not acquired.
The investigation was bounded: blocked/authenticated/licensed sources were not bypassed; the approved Racing and Sports proxy was used only for HVT after direct public GETs produced a redirect challenge; implementation repair stopped at three bounded cycles.
Status meanings:
- Implemented: adapter, unit tests, index test, and at least one raw target capture passed.
- Partial: useful verified routes exist, but an important phase, archive, queue edge, access condition, or stable programmatic route remains unresolved.
- Documented: routes were verified, but no adapter was added in this pass.
- Blocked/abort: access, licensing, catalogue mismatch, or the bounded search prevented a safe implementation.
Harness summary
| # | Jurisdiction/source | Status | Pre-race and history | Post-race and history | Method / implementation |
|---|---|---|---|---|---|
| 1 | Australia — Harness Racing Australia | Implemented, partial archive and result coverage | Current fields; example lifecycle meeting. The same URL is overwritten after completion, so old cards are not preserved. The uncapped test captured 25 of 26 published/listed cards; future DU090826 remained not-ready after a bounded recheck. |
Monthly results index; verified result Mildura 31-Jul-2026. Two indexed dates did not yield a fully ready national day: 31-Jul was 2/7 and 16-Jul was 1/3. | Server HTML. au_harness_racing; results date-range by monthly list, current pre list fallback. Stored artifacts passed integrity checks, but national full-day result coverage remains partial because several index links did not publish the required final-results markers within three bounded repair cycles. |
| 2 | New Zealand — HRNZ | Implemented | Fields list; example. | Results list; example; month archive. | Static HTML/PDF. nz_hrnz; list/month fallback because filenames omit year. Index found 8 targets and archived result capture passed. |
| 3 | France — LeTROT | Implemented | Dated calendar; pre-race programme. Historical calendars were verified through 2015. | Completed programme; richer race 1 result. | Public server-rendered HTML; no internal API or proxy required. fr_letrot uses one dated calendar per day and one whole-meeting programme per discovered meeting, classified by first-party INCOMING/DEFINITIVE status. |
| 4 | Denmark — Paris-Turf | Abort: catalogue mismatch | Programme by date; race starters. | Race result. | French general racing publication; bounded Denmark/Aalborg/Charlottenlund search found no reliable Denmark source. |
| 5 | Denmark — Swedish Horse Racing | Documented, partial | Calendar; Danish example Odense. | Same start-list route gains placings/results. | AngularJS/XHR; internal API still to identify. Historic calendar is usable. |
| 6 | Belgium — Belgium Horse Racing | Documented, strong candidate | Date-range index uses POST; future example. | Same deterministic route; completed example. | Server HTML; explicit POST date range and deterministic meeting GET. Recommended next adapter. |
| 7 | Finland — Heppa | Partial | Racing area; dated race pattern /mobiili/races/event/YYYY-MM-DD/{track}/{race}/. Browser application reverted to the current day during the historic check. |
Indexed historic example Jokimaa 16-Mar-2026. | Client application/API. Exact first-party index/API request was not established within the bounded inspection; no adapter. |
| 8 | Netherlands — NDR | Partial | Koersen shows upcoming days, programmes and calendars. | Same page has year/month selectors from 1995 onward, populated dynamically. | WordPress/server HTML plus an unresolved dynamic results selector. Programmes/results may also be documents. No safe deterministic target contract yet. |
| 9 | Norway — RaceBets | Abort: licensed commercial data | Dated calendar pattern. | Site advertises cards and results. | Betting application requires JavaScript and explicitly states its data/database may not be used without a licence. Not an appropriate crawler source. |
| 10 | Norway — Swedish Horse Racing | Documented, partial | Calendar; Norwegian Bjerke evidence includes official race-page PDF. | Same Angular race route carries results; historical PDFs are indexed. | AngularJS/XHR. Bjerke PDFs show detailed form, sire/dam, age and country suffix. Internal API still unresolved. |
| 11 | Spain — Federació Balear de Trot | Documented, strong candidate | Monthly GET calendar, e.g. August 2026; future meeting; race card. | Same meeting lifecycle; completed meeting and result race IDs use idTipo=3. |
Server-rendered PHP with stable numeric IDs. Excellent next adapter; monthly list fallback is immediately practical. |
| 12 | Hungary — Kincsem Park | Documented, strong candidate | Trotting year calendar; deterministic /racecards/trotting/YYYY-MM-DD. |
Verified deterministic result route. | Same server HTML/embedded-calendar-JSON design as implemented greyhound adapter. Recommended next adapter. |
| 13 | Sweden — Travsport | Blocked/partial | Sportapp presented bot verification. Indexed routes show /race/raceday/{id}/.... |
Example indexed result race day. | Access verification was not bypassed. Approved proxy check remains a future task. |
| 14 | Sweden — Swedish Horse Racing | Documented, partial | Calendar. | Same route after publication. | Same Angular/XHR source as Denmark/Norway; one shared future adapter should filter country flag/track. |
| 15 | USA — USTA Racing | Partial | Week at a Glance; card shell. | Same ASP.NET pages expose result status and races. | Stateful ASP.NET postbacks require session cookies and hidden form state. The current workflow cannot safely model dependent token/session navigation, so no adapter. |
| 16 | Canada — Standardbred Canada | Implemented | Entries; direct meeting documents under /racing/entries/data/e....dat. Historical cards are not retained; current list fallback. |
Dated GET index, e.g. 2-Aug-2026; completed example. | Server HTML. ca_standardbred_canada; 9 meetings discovered; cancelled and completed result artifacts both validated. |
| 17 | Germany — HVT | Implemented via approved proxy | Monthly index June 2026; starter pattern /{track}/starter/YYYYMMDD/. |
Result summary pattern /{track}/rennbericht/YYYYMMDD/; example. |
Server HTML. de_hvt_harness; direct GET redirect challenge, then approved proxy discovered and captured the pre/post pair. Regular tracks only; regional tracks remain documented partial. |
| 18 | Italy — SNAI Ippica | Implemented | Current/declarations list; signed meeting URLs are discovered fresh. Historical pre cards are unavailable. | Dated index, e.g. 6-Aug-2026; signed meeting pages contain all races. | Server HTML with signed links. it_snai_ippica_harness; 2 meetings discovered and 1 complete meeting captured in the bounded test. |
Greyhound summary
| # | Jurisdiction/source | Status | Pre/post/history | Method / implementation |
|---|---|---|---|---|
| 1 | Australia — The Dogs | Blocked | Racing returned HTTP 403 in the browser. | No bypass attempted. Approved proxy transport remains a future bounded check. |
| 2 | Australia — GRV | Partial; official API preferred | Watchdog calendar; card; result. | Angular SPA. GRV directs programmatic users to the authenticated/licensed Topaz API; no key was available, so no adapter. |
| 3 | New Zealand — GRNZ | Blocked | Fields stopped at Cloudflare verification. | No challenge/CAPTCHA bypass attempted. Approved proxy check remains future work. |
| 4 | United Kingdom — Racing Post Greyhounds | Documented, partial | Cards by date; results archive; result example. | Hash-route SPA. Stable IDs are visible, but the first-party fragment/API request contract was not confirmed. Historical pre-card depth is uncertain. |
| 5 | Ireland — Greyhound Racing Ireland | Implemented | Upcoming cards list fallback; dated results range example; result. | Server HTML. ie_gri; 9 meeting results discovered and 1 captured. |
| 6 | Hungary — Kincsem Park | Implemented; catalogue URL corrected | Correct greyhound year calendar; card; result. | Server HTML with embedded racing_days JSON. hu_kincsem_park_greyhound; pre/post pair discovered and both captured on the third bounded repair cycle. The discipline-qualified ID avoids collision with Hungary Thoroughbred. |
Breeding and profile availability
| Source | Sire | Dam | Origin | Foal year/date | Example profile or closest stable detail |
|---|---|---|---|---|---|
| HRA | Yes | Yes | Partial suffix | Exact date on profile | Horse 817467 |
| HRNZ | Yes | Yes | Not discrete | Year | Profile links are session/token dependent; field example |
| LeTROT | Yes | Yes | Not observed | Year | Komeo du Dome |
| Paris-Turf | Yes | Yes | Not discrete | Age | Ricinoa Boko |
| Swedish Horse Racing | No in modal | No in modal | Yes, suffix | No in modal | No standalone URL; use the meeting route. PDFs for Norway do include sire/dam and age. |
| Belgium Horse Racing | Yes | Yes | Yes | Exact date | Horse 87328 |
| Heppa | Not confirmed | Not confirmed | Not confirmed | Not confirmed | Horse statistics only; no stable example established. |
| NDR | Not confirmed | Not confirmed | Not confirmed | Not confirmed | No stable public profile found in bounded inspection. |
| RaceBets | Not assessed | Not assessed | Not assessed | Not assessed | Aborted for licensing. |
| Balearic Trot | Yes | Yes | Breed/country suffix in pedigree | Year; ancestors exact dates | LIORNA |
| Kincsem trotting | Expected on same platform, not reverified | Expected | Expected | Expected | No harness profile example recorded in this pass. |
| Travsport | Yes on indexed result | Yes | Country suffix | Age/year derivable | No stable profile example established before verification block. |
| USTA | Only for some young horses in cards | Only for some young horses | Not discrete | Age | Pathway search (separate service). |
| Standardbred Canada | Partial: 2YO entries/top result finishers | Partial | Suffix/breeder location only | Age | TrackIT (separate service). |
| HVT | Yes | Yes | Country suffix/breeder text | Age, year derivable | No standalone public horse link found. |
| SNAI | Yes | Yes | Yes | Age/year | Lillibet del Sile (signature may expire). |
| The Dogs | Unknown | Unknown | Unknown | Unknown | Blocked. |
| GRV Watchdog | Yes | Yes | Not discrete | Age | Miss Irene race context |
| GRNZ | Unknown | Unknown | Unknown | Unknown | Blocked. |
| Racing Post Greyhounds | Yes | Yes | Not explicit | Exact DOB | Yankee Molly |
| GRI | Yes | Yes | Not explicit | Exact whelp date | Ballymac Scheff |
| Kincsem greyhound | Yes | Yes | Yes | Exact DOB | Diabolical Inez |
Supplementary links (document only)
- HRA: trials, stewards, replays.
- HRNZ: trial fields, trial results, workout fields, workout results, programmes.
- LeTROT: qualifications, replays, publications.
- Belgium: race newspaper, horse rankings; qualification/test races are in meeting pages.
- NDR: downloads and official bulletins/programmes; results selector covers 1995 onward.
- Balearic Trot: history, bulletins and videos linked from calendar/meeting pages;
AvanceandProgramaPDFs are meeting documents. - Standardbred Canada: judges reports, race dates, feature races.
- HVT: monthly race reports; result pages link videos, finish photos and official PDFs.
- SNAI: meeting PDFs, race videos and qualification trials are linked from meeting/profile pages.
- GRV: FastTrack and Topaz.
- GRI: official trials, greyhound search, video help.
- Kincsem greyhound: participant statistics, sire statistics, training list, training calendar.
Validation evidence
- Unit suite: 131 passed after LeTROT and discipline-module integration.
- LeTROT full test: 7-Aug-2026 results 4/4 and 9-Aug-2026 pre-race 16/16, plus their dated calendars; zero retries/failures. All 26 accumulated LeTROT artifacts and handoffs passed the independent integrity audit.
- Canada full test: current entries 14/14 and 2-Aug-2026 results 9/9; 25 direct HTTP 200 artifacts, zero retries/failures, 15.164-23.666-second request gaps.
- HVT full test: complete 4-Jun-2026 starter and result day captured through the approved proxy; 2/2 artifacts, zero content failures.
- SNAI full test: current entries 11/11 and 7-Aug-2026 results 3/3; 16/16 including both indexes, zero retries/failures.
- GRI full test: all 29 published current cards and 7-Aug-2026 results 9/9 captured. Future DLK meeting
119081remained not-ready after one queue attempt and one bounded direct recheck; 40 stored artifacts passed. - Kincsem greyhound full test: calendar plus complete 25-Jul-2026 pre/post pages, 3/3.
- HRNZ full test: complete current fields 2/2 and results index 8/8. Two automatically paired future result targets remain retryable and do not reduce pre-race coverage.
- HRA full test: current fields 25/26 with future
DU090826not-ready. A complete national results day could not be validated: 31-Jul-2026 was 2/7, then the final fallback 16-Jul-2026 was 1/3. The bounded repair limit was reached and HRA remains partial.
Every stored full-test artifact was non-empty and passed recomputed SHA-256, byte-length, raw-response metadata, and FormParser inbox handoff validation. The 86 Harness artifacts are visible under C:\Users\Robert\project-data\FormCrawler\h-artifacts; the 43 Greyhound artifacts use the required sibling g-artifacts tree. Canonical metadata and handoff URIs were regenerated and independently revalidated. No runtime racing data was written into the repository.