NHL injury and player availability API
NHL injury reports grouped by team: each player's status, the injury, comments and report date, plus a normalized availability value per player. One key, JSON over REST.
Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.
Endpoint
- GET/api/v1/sports/hockey/leagues/nhl/injuries
- GET/api/v1/sports/hockey/leagues/nhl/player-availability
- Without team the league-wide feed is limited to the 25 most recent records per team; pass team for a complete team report.
Live NHL example
Request
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/injuries"Response captured from live data at 2026-11-07 13:58 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key. Trimmed to 1 team and 2 of 126 records.
Response
{
"success": true,
"data": {
"count": 126,
"groups": [
{
"team": {
"id": "25",
"displayName": "Anaheim Ducks"
},
"injuries": [
{
"athlete": {
"id": "3648015",
"displayName": "A.J. Greer",
"position": "LW"
},
"team": {
"id": "25",
"displayName": "Anaheim Ducks"
},
"status": "Injured Reserve",
"fantasyStatus": "IR",
"type": "Injured Reserve",
"bodyPart": "Upper Body",
"injuryId": "598256",
"returnDate": "2026-11-11",
"date": "2026-11-02T18:46Z",
"shortComment": "Greer (upper body) was placed on injured reserve Monday.",
"longComment": "Greer suffered an upper-body injury in Sunday's 6-3 win over Ottawa. He will miss at least the next four games, starting with Tuesday's matchup against Vancouver, but it's unclear when he will be ready to return. Greer has four goals, six p..."
},
{
"athlete": {
"id": "3942905",
"displayName": "Troy Terry",
"position": "RW"
},
"team": {
"id": "25",
"displayName": "Anaheim Ducks"
},
"status": "Injured Reserve",
"fantasyStatus": "IR-LT",
"type": "Injured Reserve",
"bodyPart": "Hip",
"detail": "Surgery",
"injuryId": "598009",
"returnDate": "2026-11-08",
"date": "2026-10-31T19:55Z",
"shortComment": "Although Terry's (hip) return doesn't appear to be imminent, he is getting close to playing, Derek Lee of The Hockey News reports Saturday.",
"longComment": "\"Troy is closer. When I say closer, hopefully, definitely, in the next, I'm gonna say, week or so,\" Quenneville told Lee. Terry hasn't played yet this campaign because of the injury. He had 19 goals and 57 points in 61 regular-season outing..."
}
]
}
],
"injuries": [
{
"athlete": {
"id": "3648015",
"displayName": "A.J. Greer",
"position": "LW"
},
"team": {
"id": "25",
"displayName": "Anaheim Ducks"
},
"status": "Injured Reserve",
"fantasyStatus": "IR",
"type": "Injured Reserve",
"bodyPart": "Upper Body",
"injuryId": "598256",
"returnDate": "2026-11-11",
"date": "2026-11-02T18:46Z",
"shortComment": "Greer (upper body) was placed on injured reserve Monday.",
"longComment": "Greer suffered an upper-body injury in Sunday's 6-3 win over Ottawa. He will miss at least the next four games, starting with Tuesday's matchup against Vancouver, but it's unclear when he will be ready to return. Greer has four goals, six p..."
},
{
"athlete": {
"id": "3942905",
"displayName": "Troy Terry",
"position": "RW"
},
"team": {
"id": "25",
"displayName": "Anaheim Ducks"
},
"status": "Injured Reserve",
"fantasyStatus": "IR-LT",
"type": "Injured Reserve",
"bodyPart": "Hip",
"detail": "Surgery",
"injuryId": "598009",
"returnDate": "2026-11-08",
"date": "2026-10-31T19:55Z",
"shortComment": "Although Terry's (hip) return doesn't appear to be imminent, he is getting close to playing, Derek Lee of The Hockey News reports Saturday.",
"longComment": "\"Troy is closer. When I say closer, hopefully, definitely, in the next, I'm gonna say, week or so,\" Quenneville told Lee. Terry hasn't played yet this campaign because of the injury. He had 19 goals and 57 points in 61 regular-season outing..."
}
]
},
"meta": {
"note": "League-wide feed is truncated by the provider to the 25 most recent records per team. Pass ?team={teamId} for a team's complete report.",
"rateLimit": {
"limit": 125,
"remaining": 124,
"reset": 1796083200000
}
}
}Code samples
curl
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/injuries"JavaScript (fetch)
const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/injuries", {
headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);Python (requests)
import os, requests
res = requests.get(
"https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/injuries",
headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
timeout=10,
)
body = res.json()
print(body["data"])MCP prompt (Claude, Cursor, ChatGPT)
Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_injuries with sport "hockey" and league "nhl" and summarize the current injury report by team for NHL.Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.
Each request above is 1 call. Free covers 125 calls a month after a 1,000-call first month, at 1 request/second. Starter is $29/month for 10,000 calls (about 333 a day) plus webhooks and WebSocket, so you stop polling for changes; 7-day free trial. Compare plans
Fields
| Field | Type | Notes |
|---|---|---|
| count | integer | |
| groups | object[] | |
| injuries | Injury[] |
Rate limits and pricing
| Plan | Price | Calls | Rate | WebSocket | Webhooks |
|---|---|---|---|---|---|
| Free | $0 | 125/mo (1,000 first 30 days) | 1/s | 500 msgs/mo | No |
| Starter | $29/mo ($290/yr) | 10,000/mo | 5/s | Shares monthly pool | Shares monthly pool |
| Growth | $49/mo ($490/yr) | 25,000/mo | 10/s | Shares monthly pool | Shares monthly pool |
| Pro | $99/mo ($990/yr) | 50,000/mo | 20/s | 100,000 msgs/mo | 25,000/mo |
| Business | $179/mo ($1,790/yr) | 150,000/mo | 40/s | 300,000 msgs/mo | 75,000/mo |
| Scale | $299/mo ($2,990/yr) | 500,000/mo | 100/s | 500,000 msgs/mo | 100,000/mo |
Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.
FAQ
- Is there a free NHL injury API?
- Yes. A free key (no card) includes every endpoint and league: 1,000 calls in the first 30 days, then 125 a month at 1 request per second. Paid plans start at $29/month for 10,000 calls and add webhooks and WebSocket.
- How do I get one team's NHL injury report?
- Call /injuries?team={teamId}. Team ids come from the /teams endpoint.
- How do I find out when a player's status changes?
- Poll /player-availability/history with since= set to your last check. It is a league-wide feed of availability changes, newest first; filter with team= or status=.
- How fresh is the injury data?
- Each request reads the current report. Data typically runs 20-30 seconds behind live play, so it suits apps, alerts, dashboards and bots, not in-play betting.