Brave Images Scraper
Pricing
from $9.99 / 1,000 results
Brave Images Scraper
Scrapes image search results from Brave Search (search.Brave.com/images). Extracts image URL, thumbnail, source, title, dimensions, and more.
Pricing
from $9.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Extract public image-search results from Brave Images, including image and thumbnail URLs, source metadata, dimensions when exposed, ranking, locale filters, and scrape time.
The Actor uses a bounded Playwright Chromium session because Brave renders image results dynamically and direct HTTP requests may be rate-limited. It does not solve CAPTCHAs or bypass access controls. Challenge pages are detected, rejected, and never written to the dataset.
Input
| Field | Type | Default | Description |
|---|---|---|---|
query | string | required | Image search query, up to 200 characters. |
maxItems | integer | 100 | Maximum results, from 1 to 200. |
country | string | us | Two-letter country code. |
language | string | en | Language or locale code. |
safeSearch | string | moderate | strict, moderate, or off. |
size | string | any | Optional size filter. |
color | string | any | Optional color filter. |
type | string | any | Optional photo, clipart, GIF, transparent, or line filter. |
layout | string | any | Optional square, tall, or wide filter. |
license | string | any | Optional Creative Commons or commercial category. |
proxyConfiguration | object | {} | Standard Apify proxy configuration. Start without a proxy, then ordinary Apify Proxy; use residential only when justified. |
{"query": "red panda wildlife","maxItems": 10,"country": "us","language": "en","safeSearch": "moderate"}
Invalid types, unsupported filter values, invalid locale codes, and unsafe limits fail before browser startup.
Output
Every dataset item represents a real Brave image result. Required fields are position, imageUrl, thumbnailUrl, imageHost, searchQuery, country, language, and scrapedAt. Optional metadata is omitted when Brave does not expose it.
{"position": 1,"title": "Red panda in a tree","imageUrl": "https://example.org/images/red-panda.jpg","thumbnailUrl": "https://imgs.search.brave.com/example/rs:fit:320:180/plain/https://example.org/images/red-panda.jpg","sourceUrl": "https://example.org/red-pandas","sourceDomain": "example.org","width": 1920,"height": 1280,"imageHost": "example.org","searchQuery": "red panda wildlife","country": "us","language": "en","scrapedAt": "2026-08-31T00:00:00.000Z"}
The extractor prefers Brave's public in-page JSON response, maps original image and source-page URLs separately, and falls back to verified image-result DOM cards. Results are deduplicated by normalized image URL, invalid/data URLs are rejected, empty optional fields are omitted, and scrolling stops after the result limit, no-growth detection, or eight iterations.
Blocking and responsible operation
- Direct HTTP can return rate limits, and browser requests can receive a Brave CAPTCHA depending on network reputation.
- The Actor tests ordinary proxy routing before any residential fallback. Residential proxy traffic may incur extra cost and still does not guarantee access.
- CAPTCHA pages are not solved or parsed as results. Persistent blocking causes a nonzero run with an empty dataset.
- Keep queries and limits small during validation, and comply with source-site terms and applicable image licensing.
Run locally with apify run --purge --input-file qa-inputs/local-validation.json. After a cloud run, inspect the actual default dataset; a successful status alone is not a data-quality pass.