USA Today API endpoint
Returns one USA Today staff writer's public profile: name, bio, social accounts, and their recent articles, from a canonical staff page URL.
/usatoday/authorQuery parameter: required url, a canonical usatoday.com/staff/<id>/<slug>/ staff profile URL.
Returns the staff writer's public profile — name, bio, social_accounts — plus their recent articles from the page's own "My Recent Work" list: title, url, description, published_label (USA Today's own human-readable byline timestamp, e.g. "2:05 a.m. ET Sept. 23" — no machine-parseable date is published for these cards), and image_url.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| title | 40 | |
| url | 40 | usatoday.com |
| description | 40 | median 131 characters |
| published_label | 16 | |
| image_url | 4 | usatoday.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical USA Today staff URL | https://www.usatoday.com/staff/87951836007/andres-soto/ | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/usatoday/author?url=https%3A%2F%2Fwww.usatoday.com%2Fstaff%2F87951836007%2Fandres-soto%2F" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"name": "Example Author",
"profile_id": "87951836007",
"url": "https://www.usatoday.com/staff/87951836007/example-author/",
"bio": "Example is based out of Los Angeles and covers pro and college sports.",
"social_accounts": [
{
"platform": "twitter",
"url": "https://www.twitter.com/exampleauthor"
}
],
"articles": [
{
"title": "Example headline",
"url": "https://www.usatoday.com/story/sports/mlb/dodgers/2026/09/23/example/91899080007/",
"description": "Example summary.",
"published_label": "2:05 a.m. ET Sept. 23",
"image_url": "https://www.usatoday.com/gcdn/authoring/authoring-images/2026/09/23/USAT/example.JPG"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/usatoday.authorResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | usatoday.AuthorResponse | No | ||||
| data.articles | array | No | ||||
| data.articles[].description | string | No | ||||
| data.articles[].image_url | string | No | ||||
| data.articles[].published_label | string | No | ||||
| data.articles[].title | string | No | ||||
| data.articles[].url | string | No | ||||
| data.bio | string | No | ||||
| data.name | string | No | ||||
| data.profile_id | 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/usatoday/author?url=https%3A%2F%2Fwww.usatoday.com%2Fstaff%2F87951836007%2Fandres-soto%2F" \
-H "x-api-key: $CRAWLORA_API_KEY"