All scrapers

Search

Brave Images Scraper

search.brave.com

100% Success rate
2.8s Avg response
Bot detection + rate limiting Protection
1,040 calls Measured over

Brave's image search shows only part of its results in the grid, and none of the source pages, so scraping what the page displays gets you thumbnails without the pages they come from. The page does ship the whole result set, about 200 images, in its data, and a dedicated plugin endpoint takes a keyword and reads every result from there: the original image URL on the publisher's site (not a Brave thumbnail), the source domain and page, a title and site name, a thumbnail and the pixel dimensions - in one call billed as one request, with no Brave API key. Brave picks the result region from the searcher's location, so the page is rendered in a real browser through an exit in the country you pick, and the results are the ones a searcher there sees. The response mirrors our Google Images plugin, so one pipeline handles every engine.

What you can extract

  • The original image URL on the publisher's site, for every result
  • The source domain and the source page URL that displays the image, which the Brave grid does not show
  • The result title, plus the site name
  • A fast Brave-hosted thumbnail URL
  • Image width and height in pixels
  • The whole result set, about 200 images, in one call billed as one request
  • Region-specific results: proxy_country sets Brave's region through the exit IP

Dedicated endpoints

/images/brave-search

Brave Images search

Image results for a keyword. Returns the original image URL and source domain for every result, plus the source page, title, site name, thumbnail and dimensions, read from the full result set the page ships; the whole set of about 200 results comes back in one page, billed as one request and capped with max_results. Brave picks the region from the searcher's location, so proxy_country sets it through the exit.

How to scrape it

curl -X POST \
  -H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
  "https://api.scrapeunblocker.com/images/brave-search?q=eiffel%20tower&proxy_country=US"
import requests

resp = requests.post(
    "https://api.scrapeunblocker.com/images/brave-search",
    headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
    params={"q": "eiffel tower", "proxy_country": "US"},
)
print(resp.text)
import { ScrapeUnblockerClient } from 'scrapeunblocker';

const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });

const results = await su.braveImages('eiffel tower', {
  proxyCountry: 'US',
});
console.log(results);

Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.

Example response

{
  "engine": "brave",
  "query": "eiffel tower",
  "gl": "us",
  "proxyCountry": "US",
  "resultsCollected": 200,
  "pagesFetched": 1,
  "hasMore": false,
  "results": [
    {
      "position": 1,
      "imageUrl": "https://cms.tootbus.com/sites/default/files/styles/ratp_xs_webp/public/2021-02/shutterstock_183894290_jpg.jpg.webp?itok=MzNNRyGW",
      "sourceDomain": "tootbus.com",
      "sourcePageUrl": "https://www.tootbus.com/en/paris/inspiration/10-fascinating-facts-about-eiffel-tower-you-should-know",
      "title": "10 Fascinating Facts about the Eiffel Tower you should know",
      "sourceName": "tootbus.com",
      "thumbnailUrl": "https://imgs.search.brave.com/HNsoICjicELfOImcnq05q6XwB3w28exDdTTwO5vxIsg/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9jbXMu...",
      "width": 348,
      "height": 205,
      "fileSize": null
    },
    {
      "position": 2,
      "imageUrl": "https://thephotoargus.com/wp-content/uploads/2019/04/eiffeltower05.jpg",
      "sourceDomain": "thephotoargus.com",
      "sourcePageUrl": "https://thephotoargus.com/eiffel-tower-pictures/",
      "title": "Tony Gravé - eiffel tower silhouette",
      "sourceName": "thephotoargus.com",
      "thumbnailUrl": "https://imgs.search.brave.com/XBlQ6_wPRlBfPsCZPnDBjrVcvjR0rkc5Z4alqbmcvgc/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly90aGVw...",
      "width": 683,
      "height": 1024,
      "fileSize": null
    }
  ]
}

Read the API docs

Frequently asked questions

Is it legal to scrape Brave Images?

Collecting publicly available image results - URLs, source domains and titles - is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. The images themselves remain the property of their owners, so you stay responsible for how you use them. ScrapeUnblocker returns the public results; what you collect and how you use it is your decision.

How do I scrape Brave Images without getting blocked?

Brave Search uses bot detection and answers traffic it does not trust with a captcha page. The /images/brave-search plugin renders the results page in a real browser through an exit in the country you pick, renders it again on a fresh exit when it comes back blocked, and returns the image results already parsed. In ScrapeUnblocker's benchmark it returned real results on 100% of 1,040 calls with different keywords, about 2.8s per call.

What data do I get back for each image?

For every result: the position, the original image URL on the publisher's site (not a Brave thumbnail), the source domain and source page URL, the title and site name, a Brave-hosted thumbnail URL, and the image's width and height in pixels. Brave's grid shows only part of the results and no source pages, but the page carries the full result set in its data and the plugin reads it from there, so every result comes with its source page and dimensions. fileSize is there to match the Google Images plugin and is usually null. The one field the Google, Bing and Yahoo image plugins return that this one does not is the engine's viewer link.

Do I need a Brave Search API key?

No. Brave sells its own Search API with separate keys and plans, and the plugin needs neither: send q with your ScrapeUnblocker key and get back the image results a searcher sees on search.brave.com, as parsed JSON. Because every result has the same fields as in /images/google-search, code written for Google Images reads Brave Images results by changing the path only.

Can I scrape Brave Images from a specific country?

Yes. Pass proxy_country with a two-letter country code (default US). Brave picks the result region from the searcher's location, so the plugin renders the page through an exit in that country, and you get the image results a searcher there sees.

How much does it cost to scrape Brave Images?

Brave returns its whole result set, about 200 images, in one page, so every call is billed as one request, whatever max_results you set, and pagesFetched shows it. 1 request = 1 credit, EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks and timeouts are not billed, and the free trial includes 500 requests with no card.

Related scrapers

Start scraping this site today

Free tier included. No credit card required to test it.