Brave API endpoint
Returns Brave news search results for a query string. Locale defaults to country=us and lang=en-us. Returns 503 when Brave serves a challenge page or unusable results.
/brave/newsQuery parameters:
q: required. Search query. Example: openai.offset: optional. Zero-based Brave result page. Defaults to 0.count: optional. Results to return. Defaults to 10, clamped to 1..50.country: optional. Brave result country. Defaults to us. Allowed values: all, ar, at, au, be, br, ca, ch, cl, cn, de, dk, es, fi, fr, gb, gr, hk, id, in, it, jp, kr, mx, my, nl, no, nz, ph, pl, pt, ru, sa, se, sg, tr, tw, us, za.lang: optional. Brave UI language. Defaults to en-us. Allowed values: de-de, en-ca, en-gb, en-in, en-us, fi-fi, fr-ca, fr-fr, ja-jp, pt-br, sq-al, sw-ke, zh-tw.time_range: optional. Preset time filter. Allowed values: any, day, week, month, year, custom.date_from: optional. Custom start date in YYYY-MM-DD; requires date_to.date_to: optional. Custom end date in YYYY-MM-DD; requires date_from.Notable response behavior:
503.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| position | 40 | 1 to 40, median 20 |
| title | 40 | median 75 characters |
| url | 40 | “https://www.fool.com/investing/2026/10/13/broadcom-is-backi…” and 39 other values |
| description | 40 | median 139 characters |
| source | 40 | “The Motley Fool” and 32 other values |
| hostname | 40 | “www.fool.com” and 33 other values |
| path | 40 | “› investing › 2026 › 10 › 13 › broadcom-is-backing-anthropi…” and 39 other values |
| favicon | 40 | median 264 characters |
| thumbnail | 37 | imgs.search.brave.com |
| age | 40 | “1 hour ago” and 12 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search query | openai | |
| offset | integer | No | 0 | Zero-based Brave result page; defaults to 0 Minimum: 0. | 0 |
| count | integer | No | 10 | Results to return; defaults to 10, clamped to 1..50 Minimum: 1. Maximum: 50. | 10 |
| country | string | No | us | Brave result country; defaults to us Allowed values: all, ar, at, au, be, br, ca, ch, cl, cn, de, dk, es, fi, fr, gb, gr, hk, id, in, it, jp, kr, mx, my, nl, no, nz, ph, pl, pt, ru, sa, se, sg, tr, tw, us, za. | us |
| lang | string | No | en-us | Brave UI language; defaults to en-us Allowed values: de-de, en-ca, en-gb, en-in, en-us, fi-fi, fr-ca, fr-fr, ja-jp, pt-br, sq-al, sw-ke, zh-tw. | en-us |
| time_range | string | No | Preset time filter: any, day, week, month, year, or custom Allowed values: any, day, week, month, year, custom. | ||
| date_from | string | No | Custom start date in YYYY-MM-DD; requires date_to | 2026-03-01 | |
| date_to | string | No | Custom end date in YYYY-MM-DD; requires date_from | 2026-03-30 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/brave/news?q=openai&count=10&country=us&lang=en&time_range=any" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"results": [
{
"position": 1,
"title": "OpenAI announces update",
"url": "https://example.com/openai-news",
"description": "OpenAI announced an update.",
"source": "Example News",
"hostname": "example.com",
"thumbnail": "https://imgs.search.brave.com/example-thumb.jpg",
"age": "2 hours ago"
}
],
"pagination": {
"offset": 0,
"next_offset": 1
}
}
}Request schema
No body schema
Response schema
#/definitions/brave.newsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | brave.NewsResponse | No | ||||
| data.pagination | object | No | Paging information for this response. | |||
| data.pagination.next_offset | integer | No | 1 | Offset to request the next page. Omitted when there is no next page. | ||
| data.pagination.offset | integer | No | 0 | Zero-based page offset of this response. | ||
| data.pagination.previous_offset | integer | No | 0 | Offset to request the previous page. Omitted on the first page. | ||
| data.results | array | No | News results in Brave's order. | |||
| data.results[].age | string | No | 2 hours ago | How long ago the article was published, as Brave shows it. | ||
| data.results[].description | string | No | OpenAI announced an update. | Article snippet as shown on the Brave results page. | ||
| data.results[].favicon | string | No | https://imgs.search.brave.com/example.ico | URL of the publisher's favicon as Brave serves it. | ||
| data.results[].hostname | string | No | www.example.com | Host name of the article URL. | ||
| data.results[].path | string | No | technology > ai | Breadcrumb-style path of the article URL as Brave shows it. | ||
| data.results[].position | integer | No | 1 | Rank of the article across all result pages, starting at 1. | ||
| data.results[].source | string | No | Reuters | Name of the publication, for example `Reuters`. | ||
| data.results[].thumbnail | string | No | https://imgs.search.brave.com/example-thumb.jpg | URL of the article thumbnail. | ||
| data.results[].title | string | No | OpenAI announces update | Article headline as shown on the Brave results page. | ||
| data.results[].url | string | No | https://example.com/openai-news | URL of the news article. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid query | #/definitions/app.Response |
| 404 | No results found | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
| 503 | Brave upstream request failed | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/brave/news?q=openai&count=10&country=us&lang=en&time_range=any" \
-H "x-api-key: $CRAWLORA_API_KEY"