National Post API endpoint
Returns public National Post article metadata and body paragraphs from a canonical article URL. paywalled is true when the publisher marks the story subscriber-only or registration-gated; National Post gates these stories in the reader's browser but still serves the complete text to an anonymous request, so paragraphs is the whole body and nothing is bypassed. Category, tag, author and Sponsored URLs are rejected with a 400.
/nationalpost/articleQuery parameter: url is a canonical HTTPS National Post article URL on nationalpost.com or www.nationalpost.com, e.g. https://nationalpost.com/news/politics/carney-will-miss-target-balancing-operating-budget-pbo-says. Category, tag, author and Sponsored pages, the home page, other hosts and any non-article path return an invalid-params error; a story that does not exist returns a not-found error.
The endpoint returns public metadata (title, description, published_at, updated_at, section, authors, image_url) and the body paragraphs. section is the story's main category label (for example Canadian Politics or NP Comment). The newsletter sign-up widget, related-story cards, comment prompts, the "National Post" sign-off and the site's house ads are not included in paragraphs.
Paywall: National Post marks some stories subscriber-only (paywalled is true) and others as free after registration (also paywalled: true); every other story omits the field. This differs from sites that truncate: National Post applies its gate in the reader's browser, and the page it serves to an anonymous request still carries the complete text, so paragraphs is the whole story even when paywalled is true. The field reports the publisher's own gate. The endpoint requests the page once, without a login or session, and never works around a gate.
Example response (truncated), for a subscriber-marked story:
{"code":200,"data":{"url":"https://nationalpost.com/opinion/courts-deciding-stabbing-doesnt-carry-intent-to-kill","title":"FIRST READING: Courts keep deciding that stabbing people doesn't carry 'intent to kill'","description":"Manslaughter is routinely being applied to homicides where an offender shot or stabbed their victim.","published_at":"2026-09-14T13:22:48Z","updated_at":"2026-09-24T19:35:41Z","section":"NP Comment","authors":["Tristin Hopper"],"image_url":"https://smartcdn.gprod.postmedia.digital/nationalpost/wp-content/uploads/2026/09/GettyImages-2240107156.jpg","paywalled":true,"paragraphs":["First Reading is a Canadian politics newsletter curated by the National Post’s own Tristin Hopper. To get an early version sent directly to your inbox, sign up here ."]}}
| Field | In the sample | Value in the sample |
|---|---|---|
| url | Has a value | nationalpost.com |
| title | Has a value | 87 characters |
| description | Has a value | 100 characters |
| published_at | Has a value | 2026-09-14 |
| updated_at | Has a value | 2026-09-24 |
| section | Has a value | “NP Comment” |
| authors | Has a value | 1 entry |
| image_url | Has a value | smartcdn.gprod.postmedia.digital |
| paywalled | Has a value | true |
| paragraphs | Has a value | 31 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical National Post article URL | https://nationalpost.com/news/politics/carney-will-miss-target-balancing-operating-budget-pbo-says | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/nationalpost/article?url=https%3A%2F%2Fnationalpost.com%2Fnews%2Fpolitics%2Fcarney-will-miss-target-balancing-operating-budget-pbo-says" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"url": "https://nationalpost.com/opinion/courts-deciding-stabbing-doesnt-carry-intent-to-kill",
"title": "FIRST READING: Courts keep deciding that stabbing people doesn't carry 'intent to kill'",
"description": "Manslaughter is routinely being applied to homicides where an offender shot or stabbed their victim.",
"published_at": "2026-09-14T13:22:48Z",
"updated_at": "2026-09-24T19:35:41Z",
"section": "NP Comment",
"authors": [
"Tristin Hopper"
],
"image_url": "https://smartcdn.gprod.postmedia.digital/nationalpost/wp-content/uploads/2026/09/GettyImages-2240107156.jpg",
"paywalled": true,
"paragraphs": [
"First Reading is a Canadian politics newsletter curated by the National Post’s own Tristin Hopper. To get an early version sent directly to your inbox, sign up here ."
]
}
}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/nationalpost/article?url=https%3A%2F%2Fnationalpost.com%2Fnews%2Fpolitics%2Fcarney-will-miss-target-balancing-operating-budget-pbo-says" \
-H "x-api-key: $CRAWLORA_API_KEY"