Townhall API endpoint
Returns a Townhall author profile by `slug` (such as `amy-curtis`) or by an author `url`; exactly one is required. The response has the name, photo, bio, X profile link and the first page of the author's archive, about 50 stories, each with its section label and a `vip` flag. Unknown authors return a not-found error.
/townhall/authorQuery parameters:
slug (optional): an author slug, e.g. amy-curtis, mattvespa or kurtschlichter, the last segment of the author link in a story's byline.url (optional): a canonical https://townhall.com/author/<slug> URL, as an alternative to slug.Exactly one of slug/url is required. The response covers the first page of the author's archive (about 50 stories, no further pagination); each story has title, url, section (Townhall's topic label), published_at, image_url, and vip (true when the story carries the members-only VIP badge). bio, image_url and x_url are omitted when the author has none. An unknown author returns a not-found error.
Example response (truncated):
{"code":200,"data":{"name":"Amy Curtis","slug":"amy-curtis","url":"https://townhall.com/author/amy-curtis","bio":"Purveyor of epic Twitter rants and awesome Townhall content by day, gamer, bookworm, and cinephile by night.","image_url":"https://media.townhall.com/cdn/hodl/authorimages/124338e5-f660-4d48-8d57-6705f22d3210-250x0.png","x_url":"https://x.com/RantyAmyCurtis","articles":[{"title":"The Beatification of Bishop Fulton J. Sheen Is Exactly What We Need Right Now","url":"https://townhall.com/news/amy-curtis/2026/09/24/beatification-of-bishop-fulton-j-sheen-n2683550","section":"Catholic Church","published_at":"2026-09-25T01:00:27Z","vip":true}]}}
| Field | Filled in, of 50 checked | Values in the sample |
|---|---|---|
| title | 50 | median 81 characters |
| url | 50 | townhall.com |
| section | 50 | |
| published_at | 50 | 2026-10-09 to 2026-10-13 |
| image_url | 50 | media.townhall.com |
| vip | 8 | true in 8 of 8 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | No | Author slug, e.g. amy-curtis | amy-curtis | |
| url | string | No | Canonical townhall.com/author/<slug> URL; alternative to slug | https://townhall.com/author/amy-curtis | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/townhall/author" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"name": "Amy Curtis",
"slug": "amy-curtis",
"url": "https://townhall.com/author/amy-curtis",
"bio": "Purveyor of epic Twitter rants and awesome Townhall content by day, gamer, bookworm, and cinephile by night.",
"image_url": "https://media.townhall.com/cdn/hodl/authorimages/124338e5-f660-4d48-8d57-6705f22d3210-250x0.png",
"x_url": "https://x.com/RantyAmyCurtis",
"articles": [
{
"title": "The Beatification of Bishop Fulton J. Sheen Is Exactly What We Need Right Now",
"url": "https://townhall.com/news/amy-curtis/2026/09/24/beatification-of-bishop-fulton-j-sheen-n2683550",
"section": "Catholic Church",
"published_at": "2026-09-25T01:00:27Z",
"vip": true
}
]
}
}Request schema
No body schema
Response schema
#/definitions/publicnews.townhallAuthorResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | townhall.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.articles[].vip | boolean | No | VIP is true when Townhall marks the story with its VIP badge, meaning only the lead paragraph is free (see Article's paywalled flag). | |||
| data.bio | string | No | ||||
| data.image_url | string | No | ||||
| data.name | string | No | ||||
| data.slug | string | No | ||||
| data.url | string | No | ||||
| data.x_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/townhall/author" \
-H "x-api-key: $CRAWLORA_API_KEY"