Brave Images Scraper avatar

Brave Images Scraper

Pricing

from $1.99 / 1,000 search results

Go to Apify Store
Brave Images Scraper

Brave Images Scraper

Scrapes image search results from Brave Search (search.brave.com/images). Extracts the full canonical image-vertical schema: title, alt text, full image URL, thumbnail, dimensions, aspect ratio, file format, dominant color, NSFW flag, source attribution, creator, license, and more.

Pricing

from $1.99 / 1,000 search results

Rating

0.0

(0)

Developer

Search API

Search API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract normalized image-search results from Brave Images. Version 3.1 reads the structured SvelteKit image response embedded in Brave's validated HTML document, which is faster and richer than clicking every image card. The current DOM and detail panel remain available as a fallback if Brave changes the structured document.

What it returns

Every record includes the source-backed fields Brave exposes for that result, with unavailable optional values omitted instead of stored as null, empty strings, or empty arrays. Common fields include:

  • stable SHA-256 id and global/query positions;
  • title, alt text, caption, original image, thumbnail, preview, and source-page URLs;
  • source name, domain, favicon, and source fetch timestamp;
  • Brave-reported width and height, derived aspect ratio/orientation/pixel count, file format, and MIME type when inferable;
  • family-safety status, context/source flags, ranking confidence, and similar-image availability;
  • query, country, language, market, website filters, provenance, retrieval method, and scrape time.

Opaque Brave debugging objects, tracking actions, similar-image request tokens, cookies, proxy credentials, and authorization state are never stored.

Modes

  • Single query: set query.
  • Multiple queries: set queries, optionally together with query. Duplicate queries are removed case-insensitively.
  • Single item: set maxItems to 1.
  • Fair batch: results from concurrent queries are interleaved until the total maxItems limit is reached.
  • Filtered search: use safeSearch, size, color, type, layout, and license exactly as on Brave Images.

Brave currently embeds up to about 200 candidates in the structured document for one query. A single-query run therefore returns at most the available structured results; multi-query mode can return more, up to the global limit of 1,000.

Example input

{
"queries": ["red fox photography", "modern architecture photography"],
"maxItems": 20,
"maxConcurrency": 2,
"country": "us",
"language": "en",
"safeSearch": "moderate",
"navigationTimeoutSecs": 60,
"maxRequestRetries": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Performance and reliability

The primary path parses the structured document without scrolling, downloading result images, or opening detail panels. Browser images, media, and fonts are blocked after verification that this does not affect the embedded results. Queries share one internally consistent Firefox session and are processed with bounded concurrency. Dataset writes are all-or-nothing: a failed query cannot leave a misleading partial batch.

Temporary network errors, HTTP 429, and HTTP 5xx responses use bounded progressive retry. Invalid input, selector/response drift, and challenge pages fail clearly. CAPTCHA or access-control pages are never solved, retried as ordinary data, or written to the dataset.

Direct access, Apify Residential proxies, and authorized custom proxies are supported. Google SERP Proxy is only for supported Google Search/Shopping HTTP requests and is not applicable to Brave.

Local validation

npm ci
npm test
node validate-datasets.js
apify validate-schema
apify run --purge --input-file INPUT_LOCAL.json
apify run --purge --input-file INPUT_BATCH.json
apify run --purge --input-file INPUT_FILTERED.json
apify run --purge --input-file INPUT_SINGLE_ITEM.json
apify run --purge --input-file INPUT_NO_RESULTS.json

The Docker image and local dependencies use the same Playwright Firefox version (1.62.1).