SCMP API endpoint
Returns one South China Morning Post author/reporter's public profile -- name, role, biography, areas of expertise, languages, location, headshot, and contact/social links -- plus their recent articles, from a canonical author URL.
/scmp/authorQuery parameter: required url, a canonical scmp.com/author/<slug> URL (e.g. https://www.scmp.com/author/matthew-cheng).
Returns one SCMP author/reporter's public profile — name, role, bio, expertise, languages, location, headshot_url, social_links — plus their recent articles.
| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| title | 30 | |
| url | 30 | scmp.com |
| summary | 30 | median 138 characters |
| published_at | 30 | 2026-09-15 to 2026-10-13 |
| image_url | 30 | cdn.i-scmp.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical scmp.com/author/<slug> URL | https://www.scmp.com/author/matthew-cheng | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/scmp/author?url=https%3A%2F%2Fwww.scmp.com%2Fauthor%2Fmatthew-cheng" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"url": "https://www.scmp.com/author/jane-example",
"name": "Jane Example",
"role": "Reporter, City",
"bio": "Jane joined SCMP in 2025 and covers Hong Kong politics.",
"expertise": [
"Hong Kong politics, Hong Kong general news"
],
"languages": [
"Cantonese",
"English",
"Mandarin"
],
"headshot_url": "https://cdn.i-scmp.com/sites/default/files/example-headshot.jpg",
"social_links": [
{
"type": "email",
"url": "mailto:[email protected]"
}
],
"articles": [
{
"title": "An Article By This Author",
"url": "https://www.scmp.com/news/hong-kong/politics/article/3368170/an-article-by-this-author",
"summary": "An example teaser sentence.",
"published_at": "2026-09-20T05:24:33Z",
"image_url": "https://cdn.i-scmp.com/sites/default/files/example-article.jpg"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/scmp.authorResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | scmp.AuthorResponse | No | ||||
| data.articles | array | No | ||||
| data.articles[].author | string | No | ||||
| data.articles[].image_url | string | No | ||||
| data.articles[].published_at | string | No | ||||
| data.articles[].summary | string | No | ||||
| data.articles[].title | string | No | ||||
| data.articles[].url | string | No | ||||
| data.bio | string | No | ||||
| data.expertise | array | No | ||||
| data.headshot_url | string | No | ||||
| data.languages | array | No | ||||
| data.location | string | No | ||||
| data.name | string | No | ||||
| data.role | string | No | ||||
| data.social_links | array | No | ||||
| data.social_links[].type | string | No | ||||
| data.social_links[].url | string | No | ||||
| data.url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/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/scmp/author?url=https%3A%2F%2Fwww.scmp.com%2Fauthor%2Fmatthew-cheng" \
-H "x-api-key: $CRAWLORA_API_KEY"