Guardian API endpoint
Returns one Guardian contributor's public profile: name, bio, Twitter handle, byline image, and one page of their recent articles. Provide either the contributor's profile slug or the full profile page URL.
/guardian/authorQuery parameters:
slug (optional): a Guardian contributor profile slug, e.g. hannah-devlin.url (optional): a canonical https://www.theguardian.com/profile/<slug> page URL, as an alternative to slug.page (optional): 1-based page of the contributor's article history, 1 to 100. Defaults to 1.Exactly one of slug/url is required.
This reuses the same public page-model JSON Guardian's own front end fetches for /guardian/topic, so total_pages/total_results behave the same way -- requesting a page past total_pages returns 404. bio, twitter_handle, and image_url reflect whatever the contributor's own profile page shows; not every contributor lists all three. Article published_at is an RFC 3339 timestamp derived from the page model's publication time.
Example response (truncated):
{"code":200,"data":{"name":"Hannah Devlin","slug":"hannah-devlin","url":"https://www.theguardian.com/profile/hannah-devlin","bio":"Hannah Devlin is the Guardian's science correspondent. She has a PhD in biomedical imaging from the University of Oxford.","twitter_handle":"hannahdev","image_url":"https://uploads.guim.co.uk/2018/04/12/Hannah-Devlin.jpg","page":1,"total_pages":69,"total_results":1365,"articles":[{"title":"Women using HRT at lower risk of dementia, study suggests","url":"https://www.theguardian.com/society/2026/aug/26/women-hrt-lower-risk-dementia-study","section":"society","published_at":"2026-08-26T09:16:30Z"}]}}
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| title | 20 | |
| url | 20 | theguardian.com |
| section | 20 | |
| published_at | 20 | 2026-05-13 to 2026-08-26 |
| image_url | 20 | i.guim.co.uk |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | No | Guardian contributor profile slug, e.g. hannah-devlin | hannah-devlin | |
| url | string | No | Canonical https://www.theguardian.com/profile/<slug> page URL, as an alternative to slug | https://www.theguardian.com/profile/hannah-devlin | |
| page | integer | No | 1 | 1-based article-history page, 1 to 100, defaults to 1 Minimum: 1. Maximum: 100. | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/guardian/author?page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"name": "Hannah Devlin",
"slug": "hannah-devlin",
"url": "https://www.theguardian.com/profile/hannah-devlin",
"bio": "Hannah Devlin is the Guardian's science correspondent. She has a PhD in biomedical imaging from the University of Oxford.",
"twitter_handle": "hannahdev",
"image_url": "https://uploads.guim.co.uk/2018/04/12/Hannah-Devlin.jpg",
"page": 1,
"total_pages": 69,
"total_results": 1365,
"articles": [
{
"title": "Women using HRT at lower risk of dementia, study suggests",
"url": "https://www.theguardian.com/society/2026/aug/26/women-hrt-lower-risk-dementia-study",
"section": "society",
"published_at": "2026-08-26T09:16:30Z"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/guardian.authorResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | guardian.AuthorResponse | No | ||||
| data.articles | array | No | ||||
| data.articles[].image_url | string | No | ||||
| data.articles[].published_at | string | No | ||||
| data.articles[].section | string | No | ||||
| data.articles[].title | string | No | ||||
| data.articles[].url | string | No | ||||
| data.bio | string | No | ||||
| data.image_url | string | No | ||||
| data.name | string | No | ||||
| data.page | integer | No | ||||
| data.slug | string | No | ||||
| data.total_pages | integer | No | ||||
| data.total_results | integer | No | ||||
| data.twitter_handle | 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/guardian/author?page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"