CNA API endpoint
Returns a CNA correspondent's or contributor's profile, identified by `slug` (such as `aqil-haziq-mahmud`) or a `channelnewsasia.com/author/<slug>` `url`; exactly one is required. The response has name, job title, bio, email, image and the latest page of bylined articles, each with title, URL and label. External Commentary contributors usually have only a name and articles.
/cna/authorQuery parameters (exactly one is required):
slug: an author slug, e.g. aqil-haziq-mahmud.url: a canonical https://www.channelnewsasia.com/author/<slug> URL, as an alternative to slug.job_title, bio, email, and image_url reflect whatever the author's own page shows -- external Commentary contributors typically have only a name and their bylined articles, with no job title, bio, or contact email. articles returns the single, most recent page of bylined stories; older articles behind pagination are not included.
Example response (truncated):
{"code":200,"data":{"name":"Aqil Haziq Mahmud","slug":"aqil-haziq-mahmud","url":"https://www.channelnewsasia.com/author/aqil-haziq-mahmud","job_title":"Correspondent at CNA Digital","bio":"Haziq reports on Malaysian politics, regional geopolitics, defence and security.","email":"[email protected]","articles":[{"title":"As Negeri Sembilan votes, all eyes on whether Anwar's PH can retain state","url":"https://www.channelnewsasia.com/asia/negeri-sembilan-election-polling-day-anwar-ph-bn-pn-6290231","label":"Asia","label_url":"/asia-0"}]}}
| Field | Filled in, of 15 checked | Values in the sample |
|---|---|---|
| title | 15 | median 94 characters |
| url | 15 | channelnewsasia.com |
| label | 15 | |
| label_url | 15 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | No | Author slug, e.g. aqil-haziq-mahmud | aqil-haziq-mahmud | |
| url | string | No | Canonical channelnewsasia.com/author/<slug> URL; alternative to slug | https://www.channelnewsasia.com/author/aqil-haziq-mahmud | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/cna/author" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"name": "Aqil Haziq Mahmud",
"slug": "aqil-haziq-mahmud",
"url": "https://www.channelnewsasia.com/author/aqil-haziq-mahmud",
"job_title": "Correspondent at CNA Digital",
"bio": "Haziq reports on Malaysian politics, regional geopolitics, defence and security.",
"email": "[email protected]",
"articles": [
{
"title": "As Negeri Sembilan votes, all eyes on whether Anwar's PH can retain state",
"url": "https://www.channelnewsasia.com/asia/negeri-sembilan-election-polling-day-anwar-ph-bn-pn-6290231",
"label": "Asia",
"label_url": "/asia-0"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/publicnews.cnaAuthorResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | cna.AuthorResponse | No | ||||
| data.articles | array | No | ||||
| data.articles[].label | string | No | ||||
| data.articles[].label_url | string | No | ||||
| data.articles[].title | string | No | ||||
| data.articles[].url | string | No | ||||
| data.bio | string | No | ||||
| data.email | string | No | ||||
| data.image_url | string | No | ||||
| data.job_title | string | No | ||||
| data.name | string | No | ||||
| data.slug | 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/cna/author" \
-H "x-api-key: $CRAWLORA_API_KEY"