{"generated_at_utc":"2026-10-31T07:00:13.139401+00:00","source":"watch_probes table, written by scripts/watch_probe.py","methodology":{"summary":"Reachability of public endpoints measured from our production server in Falkenstein, Germany, every 5 minutes. This is not an official status page for any provider listed, ours included. A 401 from a keyed endpoint counts as reachable: the vendor's edge answered, we just did not present an API key. Our own API is measured the same way and shown the same way.","vantage_point":"ParlayAPI production server, Falkenstein, Germany","interval_minutes":5,"timeout_seconds":10,"requests_per_run_per_endpoint":1,"up_definition":"any HTTP response with status under 500 within the timeout; 401/403 from keyed endpoints count as reachable","down_definition":"no HTTP response within the timeout (timeout, DNS, connect, TLS failure) or a 5xx response","state_rule":"last 3 probes: all up = up, none up = down, mixed = degraded","uptime_window_hours":24,"probe_list_provenance":"endpoints chosen the same way the odds-api-benchmarks repo chose its probe targets: https://github.com/JacobiusMakes/odds-api-benchmarks","caveat":"one vantage point measuring public-endpoint reachability; not a provider's true global availability and not a statement about data quality or odds update speed","latency_caveat":"latency is measured from our own production network, and the ParlayAPI endpoints run on the same server that sends the probes, so our latency numbers have a home advantage; latency is not comparable across providers on this page","run_by":"ParlayAPI, which is one of the providers measured on this page; this is not third-party monitoring"},"providers":[{"provider":"parlayapi_healthz","name":"ParlayAPI","ours":true,"site":"https://parlay-api.com","endpoint":"https://parlay-api.com/healthz","endpoint_label":"GET /healthz","keyed_endpoint":false,"note":"Our own health check endpoint. Returns 200 when the API is serving.","state":"no data","uptime_24h_percent":null,"probes_24h":0,"last_checked_utc":null,"last_status_code":null,"last_latency_ms":null,"latency_points":[]},{"provider":"parlayapi_v1_sports","name":"ParlayAPI","ours":true,"site":"https://parlay-api.com","endpoint":"https://parlay-api.com/v1/sports","endpoint_label":"GET /v1/sports","keyed_endpoint":false,"note":"Our own API edge, the sports list endpoint.","state":"no data","uptime_24h_percent":null,"probes_24h":0,"last_checked_utc":null,"last_status_code":null,"last_latency_ms":null,"latency_points":[]},{"provider":"the_odds_api","name":"The Odds API","ours":false,"site":"https://the-odds-api.com","endpoint":"https://api.the-odds-api.com/v4/sports","endpoint_label":"GET /v4/sports","keyed_endpoint":true,"note":"API edge. Answers 401 without a key; a 401 counts as reachable.","state":"no data","uptime_24h_percent":null,"probes_24h":0,"last_checked_utc":null,"last_status_code":null,"last_latency_ms":null,"latency_points":[]},{"provider":"therundown","name":"TheRundown","ours":false,"site":"https://therundown.io","endpoint":"https://therundown.io/api/v2/sports","endpoint_label":"GET /api/v2/sports","keyed_endpoint":false,"note":"Keyless reference-data endpoint from their public docs.","state":"no data","uptime_24h_percent":null,"probes_24h":0,"last_checked_utc":null,"last_status_code":null,"last_latency_ms":null,"latency_points":[]},{"provider":"oddspapi","name":"OddsPapi","ours":false,"site":"https://oddspapi.io","endpoint":"https://api.oddspapi.io/v4/sports","endpoint_label":"GET /v4/sports","keyed_endpoint":true,"note":"API edge. Answers 401 without a key; a 401 counts as reachable.","state":"no data","uptime_24h_percent":null,"probes_24h":0,"last_checked_utc":null,"last_status_code":null,"last_latency_ms":null,"latency_points":[]},{"provider":"sportsgameodds","name":"SportsGameOdds","ours":false,"site":"https://sportsgameodds.com","endpoint":"https://api.sportsgameodds.com/v2/sports","endpoint_label":"GET /v2/sports","keyed_endpoint":true,"note":"API edge. Answers 401 without a key; a 401 counts as reachable.","state":"no data","uptime_24h_percent":null,"probes_24h":0,"last_checked_utc":null,"last_status_code":null,"last_latency_ms":null,"latency_points":[]}]}