Documentation / Breeding

Sire statistics

GET/v1/sires/{sire_id}/stats

Available on Live Plus only

A Live key reaches the other 42 endpoints and receives 403 upgrade_required here. Compare plans

How a sire's offspring run: strike rate, wins against the market, early pace and debut wins, whole and split by region, distance, trap, age and track.

Authenticate with your key in the X-API-Key header, or ?key= if your tool cannot set one — see Authentication. Works with sandbox keys inside the sandbox data window.

Parameters

NameInTypeRequiredDescription
sire_id path integer yes The sire identifier. It is the sire_id on every row of Sires, and it stays the same from one weekly rebuild to the next.

Request

curl "https://api.greyhoundapi.com/v1/sires/2503556926/stats" \
  -H "X-API-Key: $GAPI_KEY"
<?php
$ch = curl_init('https://api.greyhoundapi.com/v1/sires/2503556926/stats');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['X-API-Key: ' . getenv('GAPI_KEY')],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

print_r($response['data']);
const res = await fetch('https://api.greyhoundapi.com/v1/sires/2503556926/stats', {
  headers: { 'X-API-Key': process.env.GAPI_KEY }
});
if (!res.ok) throw new Error(`GreyhoundAPI ${res.status}`);
const { meta, data } = await res.json();
console.log(meta.data_as_of, data);
import { useEffect, useState } from 'react';

export default function Example() {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://api.greyhoundapi.com/v1/sires/2503556926/stats', {
      headers: { 'X-API-Key': import.meta.env.VITE_GAPI_KEY }
    })
      .then((r) => r.json())
      .then((body) => setData(body.data));
  }, []);

  if (!data) return <p>Loading…</p>;
  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

Browser code exposes whatever key it ships with — use a sandbox key for prototypes and proxy live keys through your own server in production.

import os
import requests

r = requests.get(
    "https://api.greyhoundapi.com/v1/sires/2503556926/stats",
    headers={"X-API-Key": os.environ["GAPI_KEY"]},
    timeout=10,
)
r.raise_for_status()
body = r.json()
print(body["meta"]["data_as_of"], body["data"])

Response

200 OKapplication/json
{
    "meta": {
        "request_id": "req_8f2ac1",
        "data_as_of": "2026-07-08T13:05:12Z",
        "coverage": {
            "counted": [
                {
                    "region": "GB",
                    "years": [
                        2018,
                        2019,
                        2020,
                        2021,
                        2022,
                        2023,
                        2024,
                        2025,
                        2026
                    ]
                },
                {
                    "region": "IE",
                    "years": [
                        2026
                    ]
                }
            ],
            "not_counted": [
                {
                    "region": "AU",
                    "years": [
                        2022,
                        2023,
                        2024,
                        2025,
                        2026
                    ],
                    "known_pct": {
                        "2022": 0,
                        "2023": 0,
                        "2024": 0,
                        "2025": 0,
                        "2026": 0
                    },
                    "reason": "No sire or dam is held for these dogs."
                },
                {
                    "region": "IE",
                    "years": [
                        2019,
                        2020,
                        2021,
                        2022,
                        2023,
                        2024,
                        2025
                    ],
                    "known_pct": {
                        "2019": 0,
                        "2020": 0,
                        "2021": 0.2,
                        "2022": 1.6,
                        "2023": 7.1,
                        "2024": 22.6,
                        "2025": 60.3
                    },
                    "reason": "Breeding is on record for only part of these fields."
                }
            ],
            "rule": "A region's year is counted once breeding is on record for 95% of its runs. It is measured again at every build, so a year joins by itself.",
            "built_at": "2026-09-22T08:56:36+00:00",
            "rebuilt": "weekly"
        }
    },
    "data": {
        "sire_id": 2503556926,
        "name": "Droopys Sydney",
        "kind": "sire",
        "offspring": 2917,
        "active_offspring": 427,
        "first_run": "2018-02-17",
        "last_run": "2026-09-21",
        "overall": {
            "runs": 120813,
            "wins": 23459,
            "win_pct": 19.42,
            "places": 67051,
            "place_pct": 55.5,
            "priced_runs": 120657,
            "priced_wins": 23430,
            "expected_wins": 22970.6,
            "actual_vs_expected": 1.02,
            "timed_runs": 96291,
            "early_pace_pct": 19.8,
            "debut_runs": 2182,
            "debut_wins": 488,
            "debut_win_pct": 22.36
        },
        "by_region": [
            {
                "region": "GB",
                "runs": 118834,
                "wins": 23125,
                "win_pct": 19.46,
                "places": 65990,
                "place_pct": 55.53,
                "priced_runs": 118690,
                "priced_wins": 23097,
                "expected_wins": 22644.1,
                "actual_vs_expected": 1.02,
                "timed_runs": 94640,
                "early_pace_pct": 19.9,
                "debut_runs": 2141,
                "debut_wins": 481,
                "debut_win_pct": 22.47
            },
            {
                "region": "IE",
                "runs": 1979,
                "wins": 334,
                "win_pct": 16.88,
                "places": 1061,
                "place_pct": 53.61,
                "priced_runs": 1967,
                "priced_wins": 333,
                "expected_wins": 336.4,
                "actual_vs_expected": 0.99,
                "timed_runs": 1651,
                "early_pace_pct": 16.1,
                "debut_runs": 41,
                "debut_wins": 7,
                "debut_win_pct": 17.07
            }
        ],
        "by_distance": [
            {
                "band": "standard",
                "metres": "350 to 574",
                "runs": 95043,
                "wins": 18628,
                "win_pct": 19.6,
                "places": 53240,
                "place_pct": 56.02,
                "priced_runs": 94920,
                "priced_wins": 18604,
                "expected_wins": 18062.1,
                "actual_vs_expected": 1.03,
                "timed_runs": 76310,
                "early_pace_pct": 20.2,
                "debut_runs": 1731,
                "debut_wins": 392,
                "debut_win_pct": 22.65
            },
            {
                "band": "staying",
                "metres": "575 to 749",
                "runs": 5909,
                "wins": 1223,
                "win_pct": 20.7,
                "places": 3354,
                "place_pct": 56.76,
                "priced_runs": 5901,
                "priced_wins": 1221,
                "expected_wins": 1174,
                "actual_vs_expected": 1.04,
                "timed_runs": 4702,
                "early_pace_pct": 17.9,
                "debut_runs": 22,
                "debut_wins": 5,
                "debut_win_pct": 22.73
            }
        ],
        "by_trap": [
            {
                "traps": "1-2",
                "runs": 44790,
                "wins": 9003,
                "win_pct": 20.1,
                "places": 25401,
                "place_pct": 56.71,
                "priced_runs": 44731,
                "priced_wins": 8991,
                "expected_wins": 8902,
                "actual_vs_expected": 1.01,
                "timed_runs": 35690,
                "early_pace_pct": 24.6,
                "debut_runs": 812,
                "debut_wins": 196,
                "debut_win_pct": 24.14
            }
        ],
        "by_age": [
            {
                "age": "under-2",
                "label": "under 2 years",
                "runs": 16960,
                "wins": 3901,
                "win_pct": 23,
                "places": 9955,
                "place_pct": 58.7,
                "priced_runs": 16934,
                "priced_wins": 3896,
                "expected_wins": 3607.4,
                "actual_vs_expected": 1.08,
                "timed_runs": 13480,
                "early_pace_pct": 21.3,
                "debut_runs": 2019,
                "debut_wins": 461,
                "debut_win_pct": 22.83
            }
        ],
        "by_track": [
            {
                "track": "Monmore",
                "runs": 11276,
                "wins": 2142,
                "win_pct": 19,
                "places": 6212,
                "place_pct": 55.09,
                "priced_runs": 11262,
                "priced_wins": 2139,
                "expected_wins": 2076.7,
                "actual_vs_expected": 1.03,
                "timed_runs": 8860,
                "early_pace_pct": 19.5,
                "debut_runs": 197,
                "debut_wins": 44,
                "debut_win_pct": 22.34
            }
        ],
        "top_offspring": [
            {
                "dog_id": 2893016637,
                "name": "Yahoo Megan",
                "runs": 92,
                "wins": 44,
                "win_pct": 47.83,
                "places": 71,
                "first_run": "2023-09-08",
                "last_run": "2026-09-16"
            },
            {
                "dog_id": 1655044329,
                "name": "Swift Alien",
                "runs": 131,
                "wins": 40,
                "win_pct": 30.53,
                "places": 84,
                "first_run": "2022-11-29",
                "last_run": "2025-10-06"
            }
        ]
    }
}

Run it live

A real request from your browser straight to api.greyhoundapi.com with your own key — nothing is proxied or logged by this page.

GET/v1/sires/{sire_id}/stats

Held in this tab only, sent only to the API host. No key yet? Create a free sandbox key — it runs every endpoint against the sandbox data window.

Common uses

First-time runners

A dog on debut has no form of its own. Its sire's debut_win_pct, with the number of debuts behind it, is the only history there is, and the dam's sits beside it.

Pedigree features for a model

Each split is a feature a model can use directly: the staying record for a dog stepping up in trip, the trap 1-2 record for a railer drawn inside. Every rate carries its counts, so thin evidence can be weighted down rather than trusted.

Breeding and sales research

actual_vs_expected separates offspring that win often from offspring that win more often than the market expects, which is the question behind a stud fee or a sale price. active_offspring and last_run show whether the record is current.

Notes

Rebuilt weekly from the archive; meta.coverage.built_at says when. Each split adds up to the overall figures, except that a run with no trap or no birth date on record is left out of by_trap or by_age. A sire not in the figures answers 404 not_found, with a message naming what is covered.