{"components":{"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}}},"info":{"contact":{"email":"info@sportsedgepro.co.uk"},"description":"UK, Irish, Australian and US horse racing data: Betfair starting prices back to 2012, forward racecards with live prices, and per-horse career profiles.\n\n**Authentication** \u2014 send your key as `Authorization: Bearer sep_live_...`.\n\n**Date windows** \u2014 historical endpoints require a bounded range and default to the last 7 days. A single request may span at most 366 days; page with `date_from`/`date_to` for more.\n\n**Paging** \u2014 responses carry `meta.has_more`. A total row count is deliberately omitted, since counting a filtered slice of 10M+ rows costs more than returning the page.\n\n### Tiers\n\n| Tier | Rate | Quota | Max page | History | Racecards |\n|---|---|---|---|---|---|\n| Free | 30/min | 1,000/day | 100 | 365 days | no |\n| Starter | 120/min | 25,000/day | 500 | 1095 days | yes |\n| Pro | 600/min | 250,000/day | 1000 | full archive | yes |\n| Enterprise | 3000/min | unlimited/day | 5000 | full archive | yes |","title":"SportsEdgePro Horse Racing Data API","version":"1.0.0"},"openapi":"3.0.3","paths":{"/api/v1/horses/{horse_name}":{"get":{"description":"Career summary (runs, wins, ROI) and recent form.","parameters":[{"in":"path","name":"horse_name","required":true,"schema":{"type":"string"}},{"description":"Form lines to return, 1-200. Default 20.","in":"query","name":"runs","schema":{"type":"integer"}},{"description":"Market. Default win.","in":"query","name":"market_type","schema":{"enum":["win","place"],"type":"string"}},{"description":"Restrict to one country.","in":"query","name":"country","schema":{"enum":["UK","IRE","AUS","USA"],"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Horse profile","tags":["Prices"]}},"/api/v1/prices":{"get":{"description":"One row per runner per race, including Betfair SP, pre-play and in-play highs/lows, traded volumes, and form context (win streak, last-time-out, course/distance winner flags).","parameters":[{"description":"Country code. Default UK.","in":"query","name":"country","schema":{"enum":["UK","IRE","AUS","USA"],"type":"string"}},{"description":"Betfair market. Default win.","in":"query","name":"market_type","schema":{"enum":["win","place"],"type":"string"}},{"description":"Start date, YYYY-MM-DD. Default 7 days before date_to.","in":"query","name":"date_from","schema":{"format":"date","type":"string"}},{"description":"End date, YYYY-MM-DD. Default today.","in":"query","name":"date_to","schema":{"format":"date","type":"string"}},{"description":"Comma-separated track names.","in":"query","name":"track","schema":{"type":"string"}},{"description":"Exact horse name.","in":"query","name":"horse","schema":{"type":"string"}},{"description":"Page size, capped by tier.","in":"query","name":"limit","schema":{"minimum":1,"type":"integer"}},{"description":"Rows to skip.","in":"query","name":"offset","schema":{"minimum":0,"type":"integer"}},{"description":"Sort field.","in":"query","name":"sort","schema":{"type":"string"}},{"description":"Sort direction.","in":"query","name":"order","schema":{"enum":["asc","desc"],"type":"string"}},{"description":"Minimum Betfair SP.","in":"query","name":"bsp_min","schema":{"type":"number"}},{"description":"Maximum Betfair SP.","in":"query","name":"bsp_max","schema":{"type":"number"}},{"description":"Favouritism rank (1 = favourite).","in":"query","name":"bsp_rank","schema":{"type":"integer"}},{"description":"Exact field size.","in":"query","name":"runners","schema":{"type":"integer"}},{"description":"Stall/draw number.","in":"query","name":"draw","schema":{"type":"integer"}},{"description":"Minimum race distance in furlongs.","in":"query","name":"distance_min","schema":{"type":"number"}},{"description":"Maximum race distance in furlongs.","in":"query","name":"distance_max","schema":{"type":"number"}},{"description":"Comma-separated race types (e.g. Hcap, Mdn).","in":"query","name":"race_type","schema":{"type":"string"}},{"description":"Jockey name, case-insensitive. Populated for UK/IRE from 2020-08, AUS/USA from 2026-04.","in":"query","name":"jockey","schema":{"type":"string"}},{"description":"Trainer name, case-insensitive. Same coverage as jockey.","in":"query","name":"trainer","schema":{"type":"string"}},{"description":"Filter to winners or losers.","in":"query","name":"result","schema":{"enum":["win","lose"],"type":"string"}},{"description":"Exclude BSP=1000 sentinel rows. Default 1.","in":"query","name":"exclude_nsp","schema":{"enum":[0,1],"type":"integer"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Historical BSP prices","tags":["Prices"]}},"/api/v1/prices/race/{event_id}":{"get":{"description":"All runners in a single Betfair market.","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string"}},{"description":"Market. Default win.","in":"query","name":"market_type","schema":{"enum":["win","place"],"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Prices for one race","tags":["Prices"]}},"/api/v1/racecards":{"get":{"description":"Scheduled races, optionally with declared runners and live prices. Starter tier and above.","parameters":[{"description":"Race date, YYYY-MM-DD. Default today.","in":"query","name":"date","schema":{"format":"date","type":"string"}},{"description":"Country code. Default UK.","in":"query","name":"country","schema":{"enum":["UK","IRE","AUS","USA"],"type":"string"}},{"description":"Embed declared runners.","in":"query","name":"include_runners","schema":{"type":"boolean"}},{"description":"Page size.","in":"query","name":"limit","schema":{"type":"integer"}},{"description":"Rows to skip.","in":"query","name":"offset","schema":{"type":"integer"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Racecards for a date","tags":["Racecards"]}},"/api/v1/racecards/{market_id}":{"get":{"description":"Race detail with declared runners and live prices. Starter tier and above.","parameters":[{"in":"path","name":"market_id","required":true,"schema":{"type":"string"}},{"description":"Race date, YYYY-MM-DD. Default today.","in":"query","name":"date","schema":{"format":"date","type":"string"}},{"description":"Country code. Default UK.","in":"query","name":"country","schema":{"enum":["UK","IRE","AUS","USA"],"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"One racecard","tags":["Racecards"]}},"/api/v1/reference":{"get":{"description":"Valid enumerations, archive coverage and sortable fields.","parameters":[],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Reference data","tags":["Reference"]}},"/api/v1/tracks":{"get":{"description":"Tracks in the archive with race counts and date coverage.","parameters":[{"description":"Country code. Default UK.","in":"query","name":"country","schema":{"enum":["UK","IRE","AUS","USA"],"type":"string"}},{"description":"Market. Default win.","in":"query","name":"market_type","schema":{"enum":["win","place"],"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Tracks and coverage","tags":["Reference"]}},"/api/v1/usage":{"get":{"description":"Current tier limits, today's consumption and 30 days of history.","parameters":[],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameter"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Key revoked, expired, wrong product, or tier does not permit this"},"404":{"description":"Not found"},"429":{"description":"Rate limit or daily quota exceeded"}},"summary":"Your usage","tags":["Reference"]}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://horses.sportsedgepro.co.uk"}],"tags":[{"description":"Betfair starting prices and traded volumes","name":"Prices"},{"description":"Forward-looking declarations","name":"Racecards"},{"description":"Enumerations, coverage and usage","name":"Reference"}]}
