BBC API endpoint
Returns a bounded page of public BBC search-result metadata: title, URL, standfirst summary, display date, and a type of article, video, audio, live, topic, or page. Topic items are BBC topic hub pages rather than articles and carry no published_at. Media entries link only to their BBC landing pages; streams, downloads, and transcripts are not returned.
/bbc/searchQuery parameters: required q (up to 120 characters), and optional page from 1 to 10 (defaults to 1).
Notable response behavior:
title, url, summary (the result's standfirst), and published_at (BBC's display date such as 7 August or 3 days ago, not an ISO timestamp).type classifies the landing page and is always one of article, video, audio, live, topic, page.topic items are BBC topic hub pages (evergreen index pages such as /news/topics/...), not articles. They carry no published_at; filter on type to keep only dated stories.site is the BBC product that hosts the result (for example News, Sounds, iPlayer) and section is BBC's section label when the card shows one (for example Topics); both are omitted when absent.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| title | 10 | “Climate” and 8 other values |
| url | 10 | bbc.co.uk |
| summary | 10 | “All the latest content about the Climate from the BBC.” and 8 other values |
| type | 10 | audio (4), article (4), topic (1) and 1 more |
| site | 10 | News (5), Sounds (4), iPlayer (1) |
| section | 10 | “Topic” and 7 other values |
| published_at | 6 | “2 days ago” and 3 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search query, up to 120 characters | climate | |
| page | integer | No | 1 | Results page, defaults to 1 Minimum: 1. Maximum: 10. | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bbc/search?q=climate&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "artificial intelligence",
"page": 1,
"items": [
{
"title": "Artificial Intelligence",
"url": "https://www.bbc.co.uk/news/topics/ce1qrvleleqt",
"summary": "All the latest content about Artificial intelligence from the BBC.",
"type": "topic",
"site": "News",
"section": "Topics"
},
{
"title": "Artificial intelligence: Why firms are struggling to set prices",
"url": "https://www.bbc.co.uk/news/articles/c872r52x7jgo",
"summary": "Buyers of AI services are struggling to control costs and sellers are not sure how much to charge.",
"published_at": "12 August",
"type": "article",
"site": "News"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/bbc.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bbc.SearchResponse | No | ||||
| data.items | array | No | ||||
| data.items[].published_at | string | No | PublishedAt is BBC's display date for the result ("7 August", "3 days ago"). It is empty for undated results such as topic hubs. | |||
| data.items[].section | string | No | Section is BBC's section label when the card shows one (e.g. Topics). | |||
| data.items[].site | string | No | Site is the BBC product that hosts the result (News, Sport, Sounds, ...). | |||
| data.items[].summary | string | No | ||||
| data.items[].title | string | No | ||||
| data.items[].type | string | No | article, video, audio, live, topic, page | Type classifies the landing page: article, video, audio, live, topic (an evergreen topic hub index page, not an article), or page. | ||
| data.items[].url | string | No | ||||
| data.page | integer | No | ||||
| data.query | 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/bbc/search?q=climate&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"