Harness and Greyhound Source Research - August 2026
Version 2 · Updated the report from branch-local status to unified main and the 200-test gate.
Historical versionHarness and Greyhound Source Investigation
Version: 1.1.0 Last updated: 2026-08-08
Git baseline note: the eight adapters in this report, including LeTROT and the independent discipline registries, were developed through
490b0c9and merged with the Thoroughbred line from4d68b42inmainmerge commitab0441e. The unified registry contains all three disciplines.
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 before merge: 131 passed after LeTROT and discipline-module integration. Unified
main: 200 passed with 25 T, six H and two G adapters. - 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.