Brave Images Scraper avatar

Brave Images Scraper

Pricing

from $9.99 / 1,000 results

Go to Apify Store
Brave Images Scraper

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

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

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

FieldTypeDefaultDescription
querystringrequiredImage search query, up to 200 characters.
maxItemsinteger100Maximum results, from 1 to 200.
countrystringusTwo-letter country code.
languagestringenLanguage or locale code.
safeSearchstringmoderatestrict, moderate, or off.
sizestringanyOptional size filter.
colorstringanyOptional color filter.
typestringanyOptional photo, clipart, GIF, transparent, or line filter.
layoutstringanyOptional square, tall, or wide filter.
licensestringanyOptional Creative Commons or commercial category.
proxyConfigurationobject{}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.