This page is the Brave Search parameter reference. What the data is used for, a real sample and pricing are on Brave Search API: what you get →
Search & SEO

Brave Search API & Scraper: parameters and responses

This is the reference for the 5 Brave Search endpoints under /brave/v1 (search, news, images, videos and suggest) and their 6 parameters. Each endpoint lists its parameters, required or optional, with allowed values and defaults, and comes with a cURL, Python and JavaScript call; every response uses the same { ok, data, meta, error } envelope.

The Brave Search API returns search.brave.com results as JSON.

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search gives ranked web results with title, URL, snippet, date, site name, favicon, sitelinks and rich data (article, product, rating, recipe, movie, Q&A), plus the discussions, FAQ, infobox, local places, top news, videos, ads and related searches on the page. news, images, videos and suggest cover Brave News, image search, video search and autocomplete. Results come from 36 markets, with page, freshness, safe search and Brave Goggles. It is built for rank tracking, comparing search engines, AI and RAG pipelines that want an independent web index, and market research. One ReefAPI key, no Brave account and no Brave API plan.

Reference

What each action returns

Measured on 2026-11-06 with live calls. Every action returns the standard envelope; rows below are inside data.

ActionRowsFilters and paging
searchorganic_results[], news_results[], video_results[], discussions[], faq[], infobox, locations[], recipes[], rich_answers[], ads[], related_searches[]country, page 1-10 (about 20 per page), freshness, safesearch, goggles
newsnews_results[] with url, source, snippet, age, date, thumbnailcountry, page, freshness, safesearch
imagesimages[] with image_url, width, height, thumbnail, page_url, source, titlecountry, safesearch (one page of up to about 200)
videosvideo_results[] with duration, views where published, creator, publisher, channel, date, thumbnailcountry, page, freshness, safesearch
suggestsuggestions[], including entity suggestions with a description and imagecountry

A query Brave marks as having no results returns NOT_FOUND. A page past the last one returns zero rows with has_more false. A change in Brave's layout returns SCHEMA_DRIFT, never an empty success.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/brave/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "q": "python asyncio tutorial"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "brave",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 993.7,
    "record_count": 20,
    "bytes": 79487,
    "cache_hit": false,
    "pagination": {
      "page": 1,
      "has_more": true
    },
    "upstream_requests": 1,
    "charged_credits": 2,
    "version": "0.1.0",
    "request_id": "b32bf02fb1724f8e",
    "fetched_at": "2026-11-06T16:39:36.662Z"
  },
  "data": {
    "search_information": {
      "query": "python asyncio tutorial",
      "corrected_query": null,
      "query_was_corrected": false,
      "more_results_available": true,
      "no_results": false,
      "page": 1,
      "results_on_page": 20,
      "search_operators": null,
      "country": "us",
      "safesearch": "moderate",
      "freshness": null,
      "goggles": null
    },
    "organic_results": [
      {
        "position": 1,
        "title": "A conceptual overview of asyncio — Python 3.15.2 documentation",
        "url": "https://docs.python.org/3/howto/a-conceptual-overview-of-asyncio.html",
        "displayed_url": "docs.python.org › 3 › howto › a-conceptual-overview-of-asyncio.html",
        "domain": "docs.python.org",
        "site_name": "Python documentation",
        "favicon": "https://imgs.search.brave.com/TlYesPBh-Uw2IGKqnRKzWEoKLx3rLOTNmBHkVjoB1ro/rs:fit:32:32:1:0/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMTUzOTFjOGVi/YTcyOTVmODA3ODIy/YjE2NzFjY2ViMjhl/NzRlY2JhYTc5YjNm/ZjhmODAyZWI2OGUw/ZjU4NDVlNy9kb2Nz/LnB5dGhvbi5vcmcv",
        "snippet": "How does asyncio differentiate between a task which doesn’t need CPU time (such as a network request or file read) as opposed to a task that does (such as computing n-factorial)? How to write an asynchronous variant of an operation, such as an async sleep or database request. ... The guide that inspired this HOWTO article, by Alexander Nordin. This in-depth YouTube tutorial series on asyncio created by Python core team member, Łukasz Langa.",
        "age": null,
        "date": null,
        "date_is_estimate": null,
        "language": "en",
        "type": "generic",
        "is_live": false,
        "thumbnail": "https://docs.python.org/3.15/_images/social_previews/summary_howto_a-conceptual-overview-of-asyncio_5c3b9a00.png",
        "sitelinks": [],
        "extra_snippets": []
      },
      {
        "position": 2,
        "title": "Python's asyncio: A Hands-On Walkthrough – Real Python",
        "url": "https://realpython.com/async-io-python/",
        "displayed_url": "realpython.com › async-io-python",
        "domain": "realpython.com",
        "site_name": "Real Python",
        "favicon": "https://imgs.search.brave.com/JQ43CVi7H9f72QglOvL-EsjUDRpEhkWaC1oTBUBouxE/rs:fit:32:32:1:0/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNWNjZGM4YTE0/ZTJkY2FhMGNlOWNi/OTEyYjFlM2JmNmRk/NGY3MDk4ZmY2MzFj/ZjUyMTAwN2ZjODk2/MGIxYzAxZC9yZWFs/cHl0aG9uLmNvbS8",
        "snippet": "Python’s asyncio library enables you to write concurrent code using the async and await keywords. The core building blocks of async I/O in Python are awaitable objects—most often coroutines—that an event loop schedules and executes ...",
        "age": "5 days ago",
        "date": "2026-11-01T05:01:11",
        "date_is_estimate": false,
        "language": "en",
        "type": "article",
        "is_live": false,
        "thumbnail": "https://files.realpython.com/media/A-Complete-Walkthrough-of-Pythons-Asyncio_Watermarked.5b6b9a01fdc9.jpg",
        "sitelinks": [],
        "extra_snippets": [],
        "article": {
          "author": [
            "[trimmed-depth]"
          ],
          "date": "Oct 24, 2026",
          "publisher": {
            "type": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "url": "[trimmed-depth]",
            "thumbnail": "[trimmed-depth]"
          }
        }
      },
      {
        "position": 3,
        "title": "Python Asyncio Part 1 – Basic Concepts and Patterns | cloudfit-public-docs",
        "url": "https://bbc.github.io/cloudfit-public-docs/asyncio/asyncio-part-1.html",
        "displayed_url": "bbc.github.io › cloudfit-public-docs › asyncio › asyncio-part-1.html",
        "domain": "bbc.github.io",
        "site_name": "BBC",
        "favicon": "https://imgs.search.brave.com/uMJtrOJo9wu2vYLME63bKeDmdN7oqeW-sm5VmYsH3f4/rs:fit:32:32:1:0/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMDU5NTcyZWMy/NzlhZGM5ODUwYmE3/Mzg2OGNhNjM1YWVi/NWEyMGI2N2I0Y2Vh/YTU1YmEwZTJmM2Jl/NGI1MWU2Ni9iYmMu/Z2l0aHViLmlvLw",
        "snippet": "In particular whilst there were a number of very elementary tutorials which introduced some of the basic syntax there were none I could find which were aimed at experienced Python programmers and filled the gap between the simple tutorials and the full library documentation. This series of posts is intended to fill that gap. This post is going to go over the basic concepts behind asyncio without going into implementation details.",
        "age": null,
        "date": null,
        "date_is_estimate": null,
        "language": "en",
        "type": "generic",
        "is_live": false,
        "thumbnail": null,
        "sitelinks": [],
        "extra_snippets": []
      }
    ],
    "news_results": [],
    "video_results": [
      {
        "position": 1,
        "title": "Python Asynchronous Programming Tutorial: Asyncio, async & await ...",
        "url": "https://www.youtube.com/watch?v=ngXbyui-weA",
        "domain": "www.youtube.com",
        "snippet": "👉 Join my Full Python Course ~ https://www.zerotoknowing.com/join-now***Get a 3-day Free Trial on me!Want to understand asynchronous programming in Python? ...",
        "duration": "19:13",
        "duration_seconds": 1153,
        "views": null,
        "creator": "Code with Josh",
        "publisher": "YouTube",
        "channel": null,
        "tags": [],
        "requires_subscription": null,
        "age": "September 25, 2025",
        "date": "2025-09-25T14:01:21",
        "date_is_estimate": false,
        "thumbnail": "https://i.ytimg.com/vi/ngXbyui-weA/maxresdefault.jpg"
      },
      {
        "position": 2,
        "title": "Python AsyncIO Explained in 9 Minutes - YouTube",
        "url": "https://www.youtube.com/watch?v=q_yk3oV14hE",
        "domain": "www.youtube.com",
        "snippet": "In this video, we learn about asynchronous programming in Python with AsyncIO as quickly as possible (9 minutes)◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾◾📚 Programming Books & Merch...",
        "duration": "09:44",
        "duration_seconds": 584,
        "views": null,
        "creator": "NeuralNine",
        "publisher": "YouTube",
        "channel": null,
        "tags": [],
        "requires_subscription": null,
        "age": "August 1, 2025",
        "date": "2025-08-01T16:01:37",
        "date_is_estimate": false,
        "thumbnail": "https://i.ytimg.com/vi/q_yk3oV14hE/maxresdefault.jpg"
      },
      {
        "position": 3,
        "title": "Asyncio Finally Explained: What the Event Loop Really Does - YouTube",
        "url": "https://www.youtube.com/watch?v=RIVcqT2OGPA",
        "domain": "www.youtube.com",
        "snippet": "💡 Learn how to design great software in 7 steps: https://arjan.codes/designguide.Over the years, I’ve produced several videos about AsyncIO. Today, however,...",
        "duration": "13:34",
        "duration_seconds": 814,
        "views": null,
        "creator": "ArjanCodes",
        "publisher": "YouTube",
        "channel": null,
        "tags": [],
        "requires_subscription": null,
        "age": "May 3, 2024",
        "date": "2024-05-03T15:00:22",
        "date_is_estimate": false,
        "thumbnail": "https://i.ytimg.com/vi/RIVcqT2OGPA/maxresdefault.jpg"
      }
    ],
    "discussions": [
      {
        "title": "Python Asyncio: The Complete Guide",
        "url": "https://www.reddit.com/r/Python/comments/yqrr94/python_asyncio_the_complete_guide/",
        "domain": "www.reddit.com",
        "forum": "r/Python",
        "votes": 98,
        "answers": 19,
        "top_comment": "Hey, I’ve learned a lot from your site! Thanks for the resources!",
        "question": null,
        "snippet": "Hey, I’ve learned a lot from your site! Thanks for the resources!",
        "age": "November 9, 2022",
        "date": "2022-11-09",
        "date_is_estimate": false
      },
      {
        "title": "Explain it to me like I'm five: asyncio",
        "url": "https://www.reddit.com/r/Python/comments/21163n/explain_it_to_me_like_im_five_asyncio/",
        "domain": "www.reddit.com",
        "forum": "r/Python",
        "votes": 25,
        "answers": 17,
        "top_comment": "A friend of mine has recently blogged about how he used asyncio to write a webcrawler. http://compiletoi.net/fast-scraping-in-python-with-asyncio.html",
        "question": "Python 3.4 introduced the long-awaited asyncio module, and I, like many others, am keen to use it.\nThe problem is, I cannot really understand how the whole thing works. There are no tutorials yet, and the examples are somewhat confusing.\nI'd love to see some typical asyncio usecase workflows visualized and explained. I can't be the only one!\nPlease, Python community, you're my only hope.",
        "snippet": "A friend of mine has recently blogged about how he used asyncio to write a webcrawler. http://compiletoi.net/fast-scraping-in-python-with-asyncio.html",
        "age": "March 21, 2014",
        "date": "2014-03-21",
        "date_is_estimate": false
      },
      {
        "title": "Learning asyncio is the most frustrating experience in my Python journey. What should I do?",
        "url": "https://www.reddit.com/r/learnpython/comments/hyle08/learning_asyncio_is_the_most_frustrating/",
        "domain": "www.reddit.com",
        "forum": "r/learnpython",
        "votes": 33,
        "answers": 15,
        "top_comment": "So I know you weren’t asking for an explanation, but I’ve posted this previously on an asyncio eli5 thread and hopefully it helps make a little more sense “ async def means the function is actually a coroutine. All this means essentially is that the function can be “paused” and resume the rest of its execution at a later time. You tell the coroutine where it can be paused by using the await keyword, where the await keyword is followed by an awaitable object. With await you’re essentially saying pause until the awaitable object is done. So it quite literally means await the completion of the ob",
        "question": "I've been learning asyncio for a month now, and I still can't make any sense of it. There are so many complicated concepts that are totally new to me. You have event loops, coroutines, futures, tasks, transports, protocals, streams and what not. Every time I thought I've understood a small part of asyncio and tried to use that part in my code, I got suprised by unexpected behaviours and subtle bugs that I don't even know where to look at.\nI would consider myself an intermediate Pythonist that has just graduated from the beginner level. Before learning asyncio, I've already learnt generators, d",
        "snippet": "So I know you weren’t asking for an explanation, but I’ve posted this previously on an asyncio eli5 thread and hopefully it helps make a little more sense “ async def means the function is actually a coroutine. All this means essentially is that the function can be “paused” and resume the rest of its execution at a later time. You tell the coroutine where it can be paused by using the await keyword, where the await keyword is followed by an awaitable object. With await you’re essentially saying pause until the awaitable object is done. So it quite literally means await the completion of the ob",
        "age": "July 27, 2020",
        "date": "2020-07-27",
        "date_is_estimate": false
      }
    ],
    "faq": [
      {
        "question": "Can I use the requests library with asyncio?",
        "answer": "No, the requests library is synchronous and blocks the event loop, defeating the purpose of async. Use aiohttp instead—it's an async HTTP client designed for concurrent requests. Remember to reuse a single ClientSession for connection pooling.",
        "title": "Python Async Programming: The Complete Guide | DataCamp",
        "url": "https://www.datacamp.com/tutorial/python-async-programming",
        "domain": "www.datacamp.com"
      },
      {
        "question": "When should I use async programming instead of regular Python?",
        "answer": "Use async for I/O-bound tasks where your code waits on external systems: HTTP requests, database queries, file operations, or network sockets. Async won't help with CPU-bound work like data processing or calculations—for those, use multiprocessing or concurrent.futures instead.",
        "title": "Python Async Programming: The Complete Guide | DataCamp",
        "url": "https://www.datacamp.com/tutorial/python-async-programming",
        "domain": "www.datacamp.com"
      },
      {
        "question": "What is the difference between async and sync programming in Python?",
        "answer": "In synchronous programming, code executes one line at a time and waits for each operation to complete. Async programming lets your code start an operation and move on to other work while waiting, then resume when the result is ready. This is managed by an event loop that switches between tasks.",
        "title": "Python Async Programming: The Complete Guide | DataCamp",
        "url": "https://www.datacamp.com/tutorial/python-async-programming",
        "domain": "www.datacamp.com"
      }
    ],
    "infobox": null,
    "locations": [],
    "recipes": [],
    "rich_answers": [],
    "ads": [],
    "related_searches": [
      "python async/await",
      "python asyncio create_task",
      "asyncio gather"
    ],
    "has_more": true
  }
}
Actions

What the Brave Search API does

ActionDescriptionConcrete use caseKey params
searchBrave web search results for a query, as a searcher in the chosen country sees them. Each organic result: position, title, URL, display path, domain, site name, favicon, snippet, age and ISO date, language, thumbnail, sitelinks and Brave's rich data for that result (article author/publisher, product with offers, rating, movie, recipe, Q&A, FAQ, video, book, software, review). Plus every block on the page: top news, videos, discussions (forum / Reddit threads with votes and answers), FAQ, infobox (knowledge panel with attributes, images and profiles), local places (address, phone, rating, hours, coordinates), recipes, rich answers (e.g. stock quotes), ads and related searches. About 20 results per page, up to 10 pages. Operators ("phrase", -word, site:, filetype:) work.SEO teams call search to get brave web search results for a query, as a searcher in the chosen country sees them.q, country, page, safesearch, freshness, ...
newsBrave News results for a query: title, URL, source, domain, snippet, age and date, thumbnail, live/breaking flags. The first page carries up to 50 articles, later pages about 20.Content strategists call news to get brave News results for a query.q, country, page, safesearch, freshness
imagesBrave image search: up to about 200 images per call with the full-size image URL, its width and height, a thumbnail, the page it appears on, the source site and a title. `safesearch` filters adult images (default moderate).Rank trackers call images to get brave image search.q, country, safesearch
videosBrave video search: title, URL, duration (and in seconds), views where published, creator, publisher (YouTube, Vimeo,...), channel name and URL, tags, date and thumbnail. Up to about 50 videos on the first page.AI answer-monitoring tools call videos to get brave video search.q, country, page, safesearch, freshness
suggestBrave's autocomplete for a partial query: up to about 8 suggestions in the market of the chosen country, including entity suggestions (a person, company or place with a short description and image).SEO teams call suggest to get brave's autocomplete for a partial query.q, country
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/brave/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"q":"python asyncio tutorial"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.brave.search with {"q":"python asyncio tutorial"}.
Use cases

Who uses this API and why

  • SEO teams track where a site ranks on Brave for a keyword in each market, up to ten pages deep.
  • AI and RAG pipelines use search and news as a second, independent web index next to Google or Bing results.
  • Researchers read the Reddit and forum discussions Brave surfaces for a query, with vote and answer counts.
  • Keyword tools pull Brave autocomplete and related searches per country to collect real query phrasing.
FAQ

Questions developers ask before integrating

Is this Brave's official Search API?

No. Brave sells its own Search API with an API key and plans. ReefAPI is an independent service that returns what the public search.brave.com pages show, as JSON, with one ReefAPI key.

Which countries are supported?

36 markets: all, us, gb, ca, au, nz, in, de, at, ch, fr, be, nl, es, pt, it, dk, fi, no, se, pl, tr, ru, jp, kr, tw, hk, id, my, ph, sa, za, br, mx, ar and cl. Each call is answered as a searcher in that country would see it.

How deep can I paginate?

Web search has up to 10 pages of about 20 results. News and videos page too; images return one page of up to about 200. When Brave has no further page, the next one returns zero rows with has_more false.

What are Brave Goggles?

Goggles are Brave's re-ranking rules — for example a goggle that favours tech blogs and Hacker News. Pass the URL of a public .goggle file in goggles and the same query comes back re-ranked.

Do search operators work?

Yes: "exact phrase", -word, site:example.com and filetype:pdf work inside q, as they do on search.brave.com.

Does safesearch filter web results?

Brave applies it mostly to images and videos. On web results strict removes a few explicit sites; off and moderate return the same list.

What is the Brave Search API?

Brave Search API is a ReefAPI endpoint group for brave search It returns live JSON through POST requests under /brave/v1.

Is the Brave Search API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Brave Search calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Brave Search login or account?

No login to Brave Search is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Brave Search data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Brave Search API use?

Brave Search actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Brave Search from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call brave actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Brave Search API a Brave Search scraper?

It is the managed alternative to a DIY Brave Search scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same brave search back as clean JSON.

Why does my Brave Search scraper keep getting blocked?

Most Brave Search scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.

docs / brave

Brave Search

Brave Search

base /brave/v15 endpoints
post/brave/v1/news2 credits

Brave News results for a query: title, URL, source, domain, snippet, age and date, thumbnail, live/breaking flags. The first page carries up to 50 articles, later pages about 20.

ParameterAllowed / rangeDescription
qrequired—Search query, exactly as typed into Brave. Operators work: "exact phrase", -exclude, site:example.com, filetype:pdf, OR. 1-400 characters.
country = usoptionalall · us · gb · ca · au · nz · in · de · at · ch · fr · be · nl · es · pt · it · dk · fi · no · se · pl · tr · ru · jp · kr · tw · hk · id · my · ph · sa · za · br · mx · ar · clMarket to search from (ISO country code). Results are the ones a searcher in that country sees: the request is made from inside the country, because Brave ranks by the searcher's location and only honours its own country setting together with it. `all` = worldwide.
page = 1optional1–5Result page (1-5); the first page has up to 50 articles. A page past Brave's last page returns 0 results with `has_more: false`.
safesearch = moderateoptionaloff · moderate · strictAdult-content filter. Brave applies it mainly to images and videos; on web results `strict` removes a few explicit sites, `off` and `moderate` return the same web list.
freshnessoptionalday · week · month · yearOnly results published in this window: day, week, month, year — or a custom range `YYYY-MM-DDtoYYYY-MM-DD` (e.g. 2024-01-01to2024-01-31).
Try in playground →
post/brave/v1/images2 credits

Brave image search: up to about 200 images per call with the full-size image URL, its width and height, a thumbnail, the page it appears on, the source site and a title. `safesearch` filters adult images (default moderate).

ParameterAllowed / rangeDescription
qrequired—Search query, exactly as typed into Brave. Operators work: "exact phrase", -exclude, site:example.com, filetype:pdf, OR. 1-400 characters.
country = usoptionalall · us · gb · ca · au · nz · in · de · at · ch · fr · be · nl · es · pt · it · dk · fi · no · se · pl · tr · ru · jp · kr · tw · hk · id · my · ph · sa · za · br · mx · ar · clMarket to search from (ISO country code). Results are the ones a searcher in that country sees: the request is made from inside the country, because Brave ranks by the searcher's location and only honours its own country setting together with it. `all` = worldwide.
safesearch = moderateoptionaloff · moderate · strictAdult-content filter. Brave applies it mainly to images and videos; on web results `strict` removes a few explicit sites, `off` and `moderate` return the same web list.
Try in playground →
post/brave/v1/videos2 credits

Brave video search: title, URL, duration (and in seconds), views where published, creator, publisher (YouTube, Vimeo,...), channel name and URL, tags, date and thumbnail. Up to about 50 videos on the first page.

ParameterAllowed / rangeDescription
qrequired—Search query, exactly as typed into Brave. Operators work: "exact phrase", -exclude, site:example.com, filetype:pdf, OR. 1-400 characters.
country = usoptionalall · us · gb · ca · au · nz · in · de · at · ch · fr · be · nl · es · pt · it · dk · fi · no · se · pl · tr · ru · jp · kr · tw · hk · id · my · ph · sa · za · br · mx · ar · clMarket to search from (ISO country code). Results are the ones a searcher in that country sees: the request is made from inside the country, because Brave ranks by the searcher's location and only honours its own country setting together with it. `all` = worldwide.
page = 1optional1–5Result page (1-5); the first page has up to about 50 videos. A page past Brave's last page returns 0 results with `has_more: false`.
safesearch = moderateoptionaloff · moderate · strictAdult-content filter. Brave applies it mainly to images and videos; on web results `strict` removes a few explicit sites, `off` and `moderate` return the same web list.
freshnessoptionalday · week · month · yearOnly results published in this window: day, week, month, year — or a custom range `YYYY-MM-DDtoYYYY-MM-DD` (e.g. 2024-01-01to2024-01-31).
Try in playground →
post/brave/v1/suggest1 credit

Brave's autocomplete for a partial query: up to about 8 suggestions in the market of the chosen country, including entity suggestions (a person, company or place with a short description and image).

ParameterAllowed / rangeDescription
qrequired—The partial query typed so far (1-200 characters).
country = usoptionalall · us · gb · ca · au · nz · in · de · at · ch · fr · be · nl · es · pt · it · dk · fi · no · se · pl · tr · ru · jp · kr · tw · hk · id · my · ph · sa · za · br · mx · ar · clMarket to search from (ISO country code). Results are the ones a searcher in that country sees: the request is made from inside the country, because Brave ranks by the searcher's location and only honours its own country setting together with it. `all` = worldwide.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.