FT API endpoint
Returns one Financial Times contributor's public byline profile (name, job title, email, social accounts) plus one page of their recent articles. FT author pages carry no bio paragraph, only this byline metadata.
/ft/authorQuery parameters:
slug (optional): an author URL slug, e.g. martin-wolf.url (optional): a canonical https://www.ft.com/<slug> author URL, as an alternative to slug.page (optional): 1-based page number of the author's article list. Defaults to 1.Exactly one of slug/url is required.
FT author pages live at the site root (the same URL shape as a section front, e.g. https://www.ft.com/martin-wolf) and carry no bio paragraph -- only byline metadata (job_title, email, social_accounts) from the page's own structured data, plus the same article-teaser cards a section front or search result uses. has_more reports whether a further page exists; articles uses the same shape as ft-headlines/ft-search results.
Example response (truncated):
{"code":200,"data":{"name":"Martin Wolf","slug":"martin-wolf","url":"https://www.ft.com/martin-wolf","job_title":"Chief Economics Commentator","email":"[email protected]","social_accounts":[{"platform":"twitter","url":"https://www.twitter.com/@martinwolf_"}],"page":1,"has_more":true,"articles":[{"title":"With AI, 'I told you so' will be too late","url":"https://www.ft.com/content/9dd894cd-dddd-4388-ac00-dbd14d40dc52","summary":"Reducing the speed of innovation is going to be hard, both practically and politically","section":"Artificial intelligence"}]}}
| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| title | 25 | |
| url | 25 | ft.com |
| summary | 25 | |
| section | 25 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | No | Author URL slug, e.g. martin-wolf | martin-wolf | |
| url | string | No | Canonical www.ft.com/<slug> author URL; alternative to slug | https://www.ft.com/martin-wolf | |
| page | integer | No | 1-based page number of the author's article list | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/ft/author?page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"name": "Martin Wolf",
"slug": "martin-wolf",
"url": "https://www.ft.com/martin-wolf",
"job_title": "Chief Economics Commentator",
"email": "[email protected]",
"social_accounts": [
{
"platform": "twitter",
"url": "https://www.twitter.com/@martinwolf_"
}
],
"page": 1,
"has_more": true,
"articles": [
{
"title": "With AI, 'I told you so' will be too late",
"url": "https://www.ft.com/content/9dd894cd-dddd-4388-ac00-dbd14d40dc52",
"summary": "Reducing the speed of innovation is going to be hard, both practically and politically",
"section": "Artificial intelligence"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/ft.authorResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | ft.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[].summary | string | No | ||||
| data.articles[].title | string | No | ||||
| data.articles[].url | string | No | ||||
| data.email | string | No | ||||
| data.has_more | boolean | No | ||||
| data.image_url | string | No | ||||
| data.job_title | string | No | ||||
| data.name | string | No | ||||
| data.page | integer | No | ||||
| data.slug | string | No | ||||
| data.social_accounts | array | No | ||||
| data.social_accounts[].platform | string | No | ||||
| data.social_accounts[].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/ft/author?page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"