Brave API endpoint
Returns Brave image 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/imagesQuery 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.Notable response behavior:
503.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| position | 40 | 1 to 40, median 20 |
| title | 40 | “r/OpenAI - PewDiePie is trying to distill GPT-Sol” and 25 other values |
| url | 40 | reddit.com and 7 other hosts |
| source | 40 | reddit.com (32), developers.openai.com (2), realpython.com (1) and 5 more |
| image_url | 40 | “https://i.redd.it/l8i9oi7124th1.jpeg” and 39 other values |
| thumbnail | 40 | imgs.search.brave.com |
| width | 40 | |
| height | 40 | |
| age | 40 | 2025-04-07 to 2026-10-13 |
| 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 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/brave/images?q=openai&count=10&country=us&lang=en" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"results": [
{
"position": 1,
"title": "OpenAI colors mobile 08",
"url": "https://area17.com/clients/openai",
"source": "area17.com",
"image_url": "https://media-cdn-prod.area17.com/openai.jpg",
"thumbnail": "https://imgs.search.brave.com/example",
"width": 1000,
"height": 1184
}
],
"pagination": {
"offset": 0,
"next_offset": 1
}
}
}Request schema
No body schema
Response schema
#/definitions/brave.imagesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | brave.ImagesResponse | 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 | Image results in Brave's order. | |||
| data.results[].age | string | No | 2026-05-16T12:01:29Z | Date or time associated with the image page, as Brave shows it. | ||
| data.results[].height | integer | No | 1184 | Image height as Brave reports it. | ||
| data.results[].image_url | string | No | https://example.com/openai.jpg | URL of the full-size image. | ||
| data.results[].position | integer | No | 1 | Rank of the image across all result pages, starting at 1. | ||
| data.results[].source | string | No | area17.com | Site the image comes from, for example `area17.com`. | ||
| data.results[].thumbnail | string | No | https://imgs.search.brave.com/example | URL of the image thumbnail served by Brave. | ||
| data.results[].title | string | No | OpenAI colors mobile 08 | Image title as shown on the Brave results page. | ||
| data.results[].url | string | No | https://area17.com/clients/openai | URL of the page the image appears on. | ||
| data.results[].width | integer | No | 1000 | Image width as Brave reports it. | ||
| 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/images?q=openai&count=10&country=us&lang=en" \
-H "x-api-key: $CRAWLORA_API_KEY"