Harvard Business Review API endpoint
Returns a public Harvard Business Review article's metadata and full body text from a canonical article URL. from_magazine flags articles originally published in the print magazine.
/hbr/articleQuery parameter: required url, a canonical https://hbr.org/YYYY/MM/slug article URL.
Returns a public Harvard Business Review article's metadata and full body text. from_magazine flags articles that originally appeared in the print magazine -- the full body is returned either way. body is a single plain-text field rather than a paragraph list.
| Field | In the sample | Value in the sample |
|---|---|---|
| url | Has a value | hbr.org |
| title | Has a value | 62 characters |
| description | Has a value | 132 characters |
| published_at | Has a value | 2026-09-10 |
| authors | Has a value | 1 entry |
| image_url | Has a value | hbr.org |
| body | Has a value | 9,025 characters |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical hbr.org article URL | https://hbr.org/2026/09/is-your-strategic-plan-too-ambitious-or-not-ambitious-enough | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/hbr/article?url=https%3A%2F%2Fhbr.org%2F2026%2F09%2Fis-your-strategic-plan-too-ambitious-or-not-ambitious-enough" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"url": "https://hbr.org/2026/09/example-fixture-open-strategy-article",
"title": "Example fixture open strategy article",
"description": "A fixture description of the open strategy article.",
"published_at": "2026-09-10T12:15:38.000+00:00",
"authors": [
"Jamie Fixture"
],
"image_url": "https://hbr.org/resources/images/article_assets/2026/09/fixture-hero.jpg",
"from_magazine": false,
"body": "This is the first fixture paragraph of the example article body. This is the second fixture paragraph continuing the example article body."
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/hbr.articleResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | hbr.ArticleResponse | No | ||||
| data.authors | array | No | ||||
| data.body | string | No | ||||
| data.description | string | No | ||||
| data.from_magazine | boolean | No | ||||
| data.image_url | string | No | ||||
| data.published_at | string | No | ||||
| data.title | 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/hbr/article?url=https%3A%2F%2Fhbr.org%2F2026%2F09%2Fis-your-strategic-plan-too-ambitious-or-not-ambitious-enough" \
-H "x-api-key: $CRAWLORA_API_KEY"