Greyhound form history for one dog, from our own results
Cost: 3 credits. Every run we hold for one greyhound, newest first, from our own collection.
SOURCE. Not a third-party form feed: every run comes off the official public results pages we read ourselves — Victorian tracks from FastTrack (source: fasttrack, runner_ref: grv:<id>) and every other state from the national results pages (source: grsa, runner_ref: grsa:<id>). origin says which half of the store a run is in: results = a race we also settled and serve on /v1/racing/results, history = a race our history collector read back off the same page for a date our settled store does not cover, whose result_id is a synthetic hist:… and joins to nothing. source.coverage_from is the oldest run actually held and source.results_from the date the settled half begins, so runs_total is the dog's record over a stated window and not its career. Since 2026-10-13 runs_total counts STARTS (status: ran), the same figure as /v1/racing/greyhounds/stats overall.starts, and held_rows_total counts every held row, scratchings and unused reserves included -- the rows runs is drawn from. Before then runs_total counted every row.
IDENTITY. Pass a name and the runs are grouped on its letters and digits ("Ando's Mac" and "ANDOS MAC" are one query; the whole name must match). Our two collectors number dogs in different registries, so a dog that races in Victoria and interstate has two refs; the name joins them and runner_refs lists every id seen. Pass a ref and you get that ref's runs — plus, when the registry map has proved the two refs are one dog (one grv id, one grsa id, trainers that agree or do not contradict), that dog's runs in BOTH registries. A name matching nothing is a 404 and costs nothing.
READING A RUN. position is the finishing place and is null when the dog did not run (status says scratched or reserve) or did not complete the course. time_s is the dog's own time and win_time_s the winner's in the same race. sp is the official starting price as published with the result; null means unknown, never zero. margin is the source's own text: lengths behind the winner, and on Victorian tracks the winner's row carries its winning margin. field_size is how many dogs ran.
THE MEASURED COLUMNS, AND WHY THEY ARE OFTEN NULL. first_split_s, second_split_s, weight_kg, pir and grade are printed by the source pages and have been carried through since 2026-09-21. Each is null wherever that page printed nothing, and the gaps are structural, not random: FastTrack publishes one split and no second; PIR comes from FastTrack's own column on Victorian tracks and, since 2026-09-29, from the national page's In Race Positions card, which only some tracks print (see pir); Western Australian meetings mostly print no weight; a rug 9/10 reserve that never started carries no weight, split or PIR at all. Sampled on 2026-09-21 over 46 freshly read race pages, a grade appeared on 46/46 races and 362/362 runner rows, a first split on 288/362 and a weight on 295/362. ⚠️ A STORED FIELD IS NEVER REWRITTEN, so a run settled before 2026-09-21 carries none of the five however well its page printed them — read them per run, never as a property of the dog.
Request
- Base URL: https://api.puntersedge.online
- URL: https://api.puntersedge.online/v1/racing/greyhounds/form
- Auth: API key in header X-API-Key
Query parameters
Dog name (matched on letters and digits, case-insensitive, whole name), or a runner_ref like grv:1055038365 / grsa:441535 to restrict to one registry id.
Most recent runs to return.
Headers
Response
Successful Response
Example response
{
"dog": "Tommy Blue",
"held_rows_total": 1,
"name_key": "tommyblue",
"runner_refs": [
"grsa:441535"
],
"runs": [
{
"box": 2,
"date": "2026-09-19",
"dead_heat": false,
"distance_m": 516,
"field_size": 5,
"first_split_s": 6.71,
"grade": "M",
"number": 2,
"origin": "results",
"position": 1,
"race_name": "Dubbo Maiden",
"race_number": 1,
"result_id": "res_9f1c…",
"runner_ref": "grsa:441535",
"second_split_s": 18.02,
"source": "grsa",
"sp": 1.33,
"start_time": "2026-09-19T07:02:00Z",
"status": "ran",
"time_s": 30.14,
"trainer": "Raymond Tyquin",
"venue": "Dubbo",
"weight_kg": 29.8,
"win_time_s": 30.14
}
],
"runs_total": 1,
"source": {
"collectors": [
"fasttrack",
"grsa"
],
"coverage_from": "2026-06-23",
"coverage_to": "2026-09-20",
"feed": "puntersedge",
"refreshed_hourly": true,
"region": "AU",
"results_from": "2026-09-13",
"sport": "greyhound"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.