[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"navigation_docs":3,"-providers-brave":104,"-providers-brave-surround":550},[4,44],{"title":5,"path":6,"stem":7,"children":8,"icon":43},"Guide","\u002Fguide","1.guide\u002F1.index",[9,11,15,19,23,27,31,35,39],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Searching","\u002Fguide\u002Fsearch","1.guide\u002F2.search",{"title":16,"path":17,"stem":18},"Fan-out","\u002Fguide\u002Ffanout","1.guide\u002F3.fanout",{"title":20,"path":21,"stem":22},"Reading","\u002Fguide\u002Fread","1.guide\u002F4.read",{"title":24,"path":25,"stem":26},"Reverse Image Search","\u002Fguide\u002Fimage","1.guide\u002F5.image",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F6.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F7.agents",{"title":36,"path":37,"stem":38},"Custom Providers","\u002Fguide\u002Fcustom","1.guide\u002F8.custom",{"title":40,"path":41,"stem":42},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F9.explorer","i-lucide-book-open",{"title":45,"path":46,"stem":47,"children":48,"icon":103},"Providers","\u002Fproviders","2.providers\u002F0.index",[49,51,55,59,63,67,71,75,79,83,87,91,95,99],{"title":50,"path":46,"stem":47},"Overview",{"title":52,"path":53,"stem":54},"Brave","\u002Fproviders\u002Fbrave","2.providers\u002F01.brave",{"title":56,"path":57,"stem":58},"Context.dev","\u002Fproviders\u002Fcontext","2.providers\u002F02.context",{"title":60,"path":61,"stem":62},"Exa","\u002Fproviders\u002Fexa","2.providers\u002F03.exa",{"title":64,"path":65,"stem":66},"Firecrawl","\u002Fproviders\u002Ffirecrawl","2.providers\u002F04.firecrawl",{"title":68,"path":69,"stem":70},"Jina","\u002Fproviders\u002Fjina","2.providers\u002F05.jina",{"title":72,"path":73,"stem":74},"Mojeek","\u002Fproviders\u002Fmojeek","2.providers\u002F06.mojeek",{"title":76,"path":77,"stem":78},"SearXNG","\u002Fproviders\u002Fsearxng","2.providers\u002F07.searxng",{"title":80,"path":81,"stem":82},"SerpAPI","\u002Fproviders\u002Fserpapi","2.providers\u002F08.serpapi",{"title":84,"path":85,"stem":86},"SerpBase","\u002Fproviders\u002Fserpbase","2.providers\u002F09.serpbase",{"title":88,"path":89,"stem":90},"Tavily","\u002Fproviders\u002Ftavily","2.providers\u002F10.tavily",{"title":92,"path":93,"stem":94},"TinyFish","\u002Fproviders\u002Ftinyfish","2.providers\u002F11.tinyfish",{"title":96,"path":97,"stem":98},"OpenAI Codex","\u002Fproviders\u002Fopenai-codex","2.providers\u002F12.openai-codex",{"title":100,"path":101,"stem":102},"Marginalia","\u002Fproviders\u002Fmarginalia","2.providers\u002F13.marginalia","i-lucide-library",{"id":105,"title":52,"body":106,"description":543,"extension":544,"links":545,"meta":546,"navigation":171,"path":53,"seo":548,"stem":54,"__hash__":549},"docs\u002F2.providers\u002F01.brave.md",{"type":107,"value":108,"toc":536},"minimark",[109,113,118,298,314,318,354,380,384,436,440,522,526,532],[110,111],"provider-facts",{"provider":112},"brave",[114,115,117],"h2",{"id":116},"address-it","Address it",[119,120,125],"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-ts shiki shiki-themes github-light github-light poimandres","import { create } from \"@agntn\u002Fweb\";\n\nconst brave = await create(\"brave\"); \u002F\u002F BRAVE_API_KEY\nconst results = await brave.search(\"typescript runtimes\", { maxResults: 10 });\nconst recent = await brave.search(\"typescript runtimes\", { startPublishedDate: \"2026-06-01\" });\n","ts","",[126,127,128,166,173,210,256],"code",{"__ignoreMap":124},[129,130,133,137,141,145,148,152,156,160,163],"span",{"class":131,"line":132},"line",1,[129,134,136],{"class":135},"sP0CR","import",[129,138,140],{"class":139},"sKlNE"," {",[129,142,144],{"class":143},"snHMy"," create",[129,146,147],{"class":139}," }",[129,149,151],{"class":150},"stCPd"," from",[129,153,155],{"class":154},"scVjq"," \"",[129,157,159],{"class":158},"sQ7BG","@agntn\u002Fweb",[129,161,162],{"class":154},"\"",[129,164,165],{"class":139},";\n",[129,167,169],{"class":131,"line":168},2,[129,170,172],{"emptyLinePlaceholder":171},true,"\n",[129,174,176,180,184,187,191,194,197,199,201,203,206],{"class":131,"line":175},3,[129,177,179],{"class":178},"s1TYA","const",[129,181,183],{"class":182},"saoiD"," brave",[129,185,186],{"class":178}," =",[129,188,190],{"class":189},"sZW6a"," await",[129,192,144],{"class":193},"sULi6",[129,195,196],{"class":139},"(",[129,198,162],{"class":154},[129,200,112],{"class":158},[129,202,162],{"class":154},[129,204,205],{"class":139},"); ",[129,207,209],{"class":208},"sjhu3","\u002F\u002F BRAVE_API_KEY\n",[129,211,213,215,218,220,222,225,228,231,233,235,238,240,243,246,249,253],{"class":131,"line":212},4,[129,214,179],{"class":178},[129,216,217],{"class":182}," results",[129,219,186],{"class":178},[129,221,190],{"class":189},[129,223,183],{"class":224},"spVlQ",[129,226,227],{"class":139},".",[129,229,230],{"class":193},"search",[129,232,196],{"class":139},[129,234,162],{"class":154},[129,236,237],{"class":158},"typescript runtimes",[129,239,162],{"class":154},[129,241,242],{"class":139},", {",[129,244,245],{"class":143}," maxResults",[129,247,248],{"class":139},":",[129,250,252],{"class":251},"siHFe"," 10",[129,254,255],{"class":139}," });\n",[129,257,259,261,264,266,268,270,272,274,276,278,280,282,284,287,289,291,294,296],{"class":131,"line":258},5,[129,260,179],{"class":178},[129,262,263],{"class":182}," recent",[129,265,186],{"class":178},[129,267,190],{"class":189},[129,269,183],{"class":224},[129,271,227],{"class":139},[129,273,230],{"class":193},[129,275,196],{"class":139},[129,277,162],{"class":154},[129,279,237],{"class":158},[129,281,162],{"class":154},[129,283,242],{"class":139},[129,285,286],{"class":143}," startPublishedDate",[129,288,248],{"class":139},[129,290,155],{"class":154},[129,292,293],{"class":158},"2026-06-01",[129,295,162],{"class":154},[129,297,255],{"class":139},[299,300,301,302,305,306,309,310,313],"p",{},"The key goes in the ",[126,303,304],{},"X-Subscription-Token"," header. Pass ",[126,307,308],{},"apiKey"," to ",[126,311,312],{},"create()"," if you do not want env involved.",[114,315,317],{"id":316},"what-it-reads","What it reads",[319,320,321,334],"table",{},[322,323,324],"thead",{},[325,326,327,331],"tr",{},[328,329,330],"th",{},"Call",[328,332,333],{},"Endpoint",[335,336,337],"tbody",{},[325,338,339,344],{},[340,341,342],"td",{},[126,343,230],{},[340,345,346,349,350,353],{},[126,347,348],{},"GET \u002Fres\u002Fv1\u002Fweb\u002Fsearch?q=…&count=…&offset=…&extra_snippets=true&text_decorations=false"," on api.search.brave.com, plus ",[126,351,352],{},"freshness=YYYY-MM-DDtoYYYY-MM-DD"," when a date bound is set",[299,355,356,359,360,363,364,367,368,371,372,375,376,379],{},[126,357,358],{},"count"," is ",[126,361,362],{},"maxResults",", 20 at most. ",[126,365,366],{},"offset"," comes from the continuation and steps through pages of that size. ",[126,369,370],{},"query.more_results_available"," in the response decides whether the next token is ",[126,373,374],{},"next"," or ",[126,377,378],{},"end",", so Brave is one of the few engines that actually tells you.",[114,381,383],{"id":382},"what-comes-back","What comes back",[299,385,386,389,390,393,394,397,398,401,402,389,405,408,409,412,413,416,417,420,421,424,425,428,429,432,433,227],{},[126,387,388],{},"snippet"," is the ",[126,391,392],{},"description"," with Brave's HTML escapes decoded. ",[126,395,396],{},"favicon"," comes from ",[126,399,400],{},"meta_url.favicon",", and ",[126,403,404],{},"text",[126,406,407],{},"extra_snippets"," joined with newlines when Brave sends them. ",[126,410,411],{},"publishedDate"," is Brave's ",[126,414,415],{},"page_age",", the page's published or last modified date as Brave read it, so it can be missing. ",[126,418,419],{},"startPublishedDate"," and ",[126,422,423],{},"endPublishedDate"," go out as ",[126,426,427],{},"freshness",", the only filter Brave has here. No score, and ",[126,430,431],{},"includeDomains"," and friends come back in ",[126,434,435],{},"ignoredFilters",[114,437,439],{"id":438},"gotchas","Gotchas",[441,442,443,447,481,492,512],"ul",{},[444,445,446],"li",{},"A page is 20 results max. Ask for more and you get 20 plus a continuation.",[444,448,449,450,453,454,457,458,460,461,464,465,464,468,471,472,474,475,420,478,480],{},"Brave bolds query terms with ",[126,451,452],{},"\u003Cstrong>"," unless you send ",[126,455,456],{},"text_decorations=false",", and it escapes ",[126,459,392],{}," like HTML (",[126,462,463],{},"&#x27;",", ",[126,466,467],{},"&amp;",[126,469,470],{},"&quot;","). The adapter turns the bolding off and decodes the escapes, so ",[126,473,388],{}," is plain text. ",[126,476,477],{},"title",[126,479,407],{}," come as text already.",[444,482,483,484,487,488,491],{},"The free plan is a couple of thousand queries a month and a burst gets you a 429 with ",[126,485,486],{},"Retry-After",", which is ",[126,489,490],{},"RateLimitError"," here.",[444,493,494,496,497,500,501,504,505,420,508,511],{},[126,495,427],{}," wants ",[126,498,499],{},"YYYY-MM-DDtoYYYY-MM-DD",", both days inside the window, the same day twice gives that day's pages. Anything else, a time on the date included, Brave drops without a word and answers unfiltered, so a datetime bound becomes its UTC day here, a missing start becomes ",[126,502,503],{},"1970-01-01"," and a missing end becomes today's UTC date. The open forms ",[126,506,507],{},"2026-06-01to",[126,509,510],{},"to2026-06-01"," answered correctly when probed, but Brave does not document them, and a filter that fails silently is not the place to lean on that.",[444,513,514,515,518,519,521],{},"Brave only fills extra snippets on a Search plan. A free key still takes ",[126,516,517],{},"extra_snippets=true"," and leaves ",[126,520,404],{}," empty.",[114,523,525],{"id":524},"where-it-lives","Where it lives",[299,527,528,531],{},[126,529,530],{},"src\u002Fproviders\u002Fbrave.ts",". Smallest search adapter with pagination, copy it when you write a new one.",[533,534,535],"style",{},"html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .stCPd, html code.shiki .stCPd{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCD}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sZW6a, html code.shiki .sZW6a{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7C0}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":124,"searchDepth":168,"depth":168,"links":537},[538,539,540,541,542],{"id":116,"depth":168,"text":117},{"id":316,"depth":168,"text":317},{"id":382,"depth":168,"text":383},{"id":438,"depth":168,"text":439},{"id":524,"depth":168,"text":525},"The Brave Search API, one GET per page, with extra snippets joined into text and a continuation that carries the offset.","md",null,{"icon":547},"i-simple-icons-brave",{"title":52,"description":543},"SO8DBst0c0pVQxRbVplRN9OTHDXnHIsFmyjBj3Xq8BA",[551,553],{"title":50,"path":46,"stem":47,"description":552,"children":-1},"Thirteen providers, one class shape. Pick one to see its endpoints, the filters it honours, the fields it fills and the traps.",{"title":56,"path":57,"stem":58,"description":554,"children":-1},"The Context.dev API for search with Markdown ranked by relevance and for scraping pages into Markdown or HTML.",1790458674841]