BBB API endpoint
Returns published BBB article metadata, author names, body text, and useful links from a canonical public article URL on www.bbb.org or bbb.org. Returns 404 when BBB no longer has the article, including a story BBB has moved to one of its evergreen pages under /all/; the error then names the new address, and the answer is permanent.
/bbb/articleQuery parameters:
url (required): URL-encoded canonical HTTPS https://www.bbb.org/article/... or https://bbb.org/article/... URL. Article links returned by bbb_news are accepted, including their BBB backurl query.The response includes the published article's title, summary, author names, dates, topic labels, main image, stripped article body text, and useful HTTP(S) links from the body. Page navigation, ads, and other site chrome are not included. The endpoint accepts public article pages only; unsupported or blocked pages return a typed upstream error.
Errors:
404 when BBB no longer has the article. This includes a story BBB has moved to one of its evergreen pages under https://www.bbb.org/all/... (holiday, home improvement and tax hubs, scam studies): BBB's newsroom lists still link the old article URL, which now redirects there. The data field of the error then reads BBB has moved this article to <new URL>, which is not a newsroom article page. That answer is permanent, so do not retry it; the new page is not an article and this endpoint cannot read it.503 when BBB blocked every attempt. Retry after 10 to 30 seconds.| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| text | 3 | median 21 characters |
| url | 3 | bbb.org and 1 other host |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical BBB article URL on www.bbb.org or bbb.org | https://www.bbb.org/article/news-releases/34935-bbb-scam-alert-dont-be-fooled-by-free-gas-and-grocery-card-postcards | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bbb/article?url=https%3A%2F%2Fwww.bbb.org%2Farticle%2Fnews-releases%2F34935-bbb-scam-alert-dont-be-fooled-by-free-gas-and-grocery-card-postcards" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://www.bbb.org/article/news-releases/34935-bbb-scam-alert-dont-be-fooled-by-free-gas-and-grocery-card-postcards",
"id": "34935",
"type": "Article",
"title": "BBB Scam Alert: Don't be fooled by \"free\" gas and grocery card postcards",
"published_at": "2026-07-30T14:55:16.418174Z",
"modified_at": "2026-07-30T14:55:09.523089Z",
"authors": [
{
"name": "Better Business Bureau",
"url": "https://www.bbb.org"
}
],
"topics": [
"News Releases"
],
"body": "We received multiple reports through our BBB Scam Tracker page.",
"links": [
{
"text": "BBB Scam Tracker page",
"url": "https://www.bbb.org/scamtracker"
}
]
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | bbbnews.ArticleResponse | No | ||||
| data.authors | array | No | ||||
| data.authors[].name | string | No | ||||
| data.authors[].url | string | No | ||||
| data.body | string | No | ||||
| data.id | string | No | ||||
| data.image | bbbnews.Image | No | Image record, 4 fields: alt_text, caption, credit, url. Described under Get a BBB evergreen page API. | |||
| data.links | array | No | ||||
| data.links[].text | string | No | ||||
| data.links[].url | string | No | ||||
| data.modified_at | string | No | ||||
| data.published_at | string | No | ||||
| data.source_url | string | No | ||||
| data.summary | string | No | ||||
| data.title | string | No | ||||
| data.topics | array | No | ||||
| data.type | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| 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/bbb/article?url=https%3A%2F%2Fwww.bbb.org%2Farticle%2Fnews-releases%2F34935-bbb-scam-alert-dont-be-fooled-by-free-gas-and-grocery-card-postcards" \
-H "x-api-key: $CRAWLORA_API_KEY"