Sports news API
Recent league or team headlines with description, publish time, images and tagged teams and athletes. An archive endpoint returns older articles. 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.
- The live feed is a rolling window of recent articles; our archive begins 2026-09-02.
Paths and parameters
GET/api/v1/sports/{sport}/leagues/{league}/news
Get latest news. Rolling window of recent articles from the source. For older articles use /news/history.
sport(path, required): Sport slug: football, basketball, baseball, hockey, soccer.league(path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.limit(query): Maximum articles to return (default 10, max 50).page(query): Page number (1-based).team(query): Filter to one team id.athlete(query): Only articles tagged with this athlete id.since(query): Alias of `from`.from(query): Only items on or after this ISO-8601 timestamp.to(query): Only items on or before this ISO-8601 timestamp.
GET/api/v1/sports/{sport}/leagues/{league}/news/history
Get archived news. Our archive of league news, newest first. The archive begins 2026-09-02.
sport(path, required): Sport slug: football, basketball, baseball, hockey, soccer.league(path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.from(query): Only items on or after this ISO-8601 timestamp.to(query): Only items on or before this ISO-8601 timestamp.team(query): Filter to one team id.athlete(query): Only articles tagged with this athlete id.limit(query): Maximum articles to return (default 25, max 100).page(query): Page number (1-based).
Live example
Request
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/news?limit=1"Response captured from live data at 2026-10-05 02:10 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key.
Response
{
"success": true,
"data": [
{
"id": 50106575,
"headline": "Kyle Juszczyk (knee), two more 49ers injured in win over Broncos",
"description": "For the fourth straight week, the 49ers clawed out a victory but were unable to come out of the game against the Broncos without injury concerns.",
"type": "HeadlineNews",
"published": "2026-10-05T01:54:24Z",
"lastModified": "2026-10-05T01:54:24Z",
"premium": false,
"images": [
{
"url": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHUcMXhFXTQcEUwAfQ0NRD18HU1tbVRxfVmVAAQpBUgNTbQRJA0tSElI",
"width": 600,
"height": 400
}
],
"link": "https://www.realtimesportsapi.com/api/go?id=GgcVSgNPTUMeFFpHAUkGXxRaCV5MXFEIHhZMDUdNTmkfGxdOD0BEUlpcVBhGD0MaVBdTE0AZUU0dWkhTDFBRTEJHHV4MVQIQT1hQBl8aSVMYW09LA1dORV4KHAdKDVtXDkU",
"categories": [
"NFL",
"San Francisco 49ers",
"news",
"... 4 more"
],
"athletes": [
{
"id": "16002",
"name": "Kyle Juszczyk"
},
{
"id": "4693337",
"name": "Marques Sigle"
},
{
"id": "4565200",
"name": "Upton Stout"
}
],
"teams": [
{
"id": "25",
"name": "San Francisco 49ers"
}
]
}
],
"meta": {
"count": 1,
"note": "The provider feed is a rolling window of recent articles; use /news/history for older ones.",
"rateLimit": {
"limit": 125,
"remaining": 124,
"reset": 1793491200000
}
}
}Fields
| Field | Type | Notes |
|---|---|---|
| id | integer | |
| headline | string | |
| description | string | |
| type | string | |
| published | string | |
| lastModified | string | |
| premium | boolean | |
| images | object[] | |
| link | string | |
| categories | string[] | |
| athletes | object[] | |
| teams | object[] |
League support
Checked against live data on 2026-10-04: 29 available, 0 limited, 0 seasonal or not verified, 0 not available.
Code samples
curl
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/news?limit=1"JavaScript (fetch)
const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/news?limit=1", {
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/football/leagues/nfl/news?limit=1",
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_news with sport "football" and league "nfl" and summarize the latest headlines for NFL.Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.
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 |
| 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
- What does the news endpoint return?
- Recent league or team headlines with description, publish time, images and tagged teams and athletes. An archive endpoint returns older articles.
- Which leagues support news?
- All 29 monitored leagues returned data when we checked on 2026-10-04.
- Is it free to try?
- Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. Every successful call counts as one call.
- How fresh is the data?
- 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.
- Can I get updates pushed instead of polling?
- Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview.