CBC News API endpoint
Returns public CBC News or CBC Sports story metadata and body paragraphs from a canonical story URL. Live-updates pages are not supported.
/cbc/articleQuery parameter: url is a canonical HTTPS CBC News or CBC Sports story URL on www.cbc.ca (or cbc.ca): a /news/... or /sports/... path ending in CBC's story id, for example https://www.cbc.ca/news/politics/does-calling-an-early-election-work-9.7355667. Tracking query strings such as ?cmp=rss are removed. Live-updates pages (/livestory/), video player pages, and CBC Radio, Music, Books, and Gem pages are rejected with a 400.
Returns the headline, description, publish and update times, section, bylines, lead image, and body paragraphs. Inline video embeds and related-story cards are left out of paragraphs. Wire and staff stories without a named reporter list CBC as the author. CBC News is free to read, so the full story body is returned.
A story id that does not exist returns 404.
| Field | In the sample | Value in the sample |
|---|---|---|
| url | Has a value | cbc.ca |
| title | Has a value | 90 characters |
| description | Has a value | 211 characters |
| published_at | Has a value | 2026-09-24 |
| updated_at | Has a value | 2026-09-24 |
| section | Has a value | “Politics” |
| authors | Has a value | 1 entry |
| image_url | Has a value | i.cbc.ca |
| paragraphs | Has a value | 34 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical CBC News or CBC Sports story URL | https://www.cbc.ca/news/politics/does-calling-an-early-election-work-9.7355667 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/cbc/article?url=https%3A%2F%2Fwww.cbc.ca%2Fnews%2Fpolitics%2Fdoes-calling-an-early-election-work-9.7355667" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"url": "https://www.cbc.ca/news/politics/does-calling-an-early-election-work-9.7355667",
"title": "Will Eby's early election gamble pay off or backfire in B.C.? Here's what history tells us",
"description": "On the whole, premiers and prime ministers have benefited from similar gambles in the past.",
"published_at": "2026-09-24T08:00:00Z",
"updated_at": "2026-09-24T08:00:00Z",
"section": "Politics",
"authors": [
"Darren Major"
],
"image_url": "https://i.cbc.ca/ais/db976d60-ea3f-4441-b489-cc374df1010e,1790194950671/full/max/0/default.jpg",
"paragraphs": [
"With the B.C. Conservatives in disarray, David Eby decided to roll the dice and call an election two years ahead of schedule in the hopes of extending his mandate."
]
}
}Request schema
No body schema
Response schema
#/definitions/publicnews.articleResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | newsplatform.ArticleResponse | No | ||||
| data.authors | array | No | ||||
| data.description | string | No | ||||
| data.image_url | string | No | ||||
| data.paragraphs | array | No | ||||
| data.paywalled | boolean | No | Paywalled is true when the publisher serves only a teaser of this article to anonymous readers, so Paragraphs is a partial body rather than the full text. It is omitted when the full public body was returned. | |||
| data.published_at | string | No | ||||
| data.section | string | No | ||||
| data.title | string | No | ||||
| data.updated_at | string | No | ||||
| data.url | string | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/cbc/article?url=https%3A%2F%2Fwww.cbc.ca%2Fnews%2Fpolitics%2Fdoes-calling-an-early-election-work-9.7355667" \
-H "x-api-key: $CRAWLORA_API_KEY"