[{"data":1,"prerenderedAt":375},["ShallowReactive",2],{"navigation_docs":3,"-providers-serpbase":104,"-providers-serpbase-surround":370},[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":84,"body":106,"description":363,"extension":364,"links":365,"meta":366,"navigation":156,"path":85,"seo":368,"stem":86,"__hash__":369},"docs\u002F2.providers\u002F09.serpbase.md",{"type":107,"value":108,"toc":356},"minimark",[109,113,118,222,234,238,287,291,314,318,343,347,352],[110,111],"provider-facts",{"provider":112},"serpbase",[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 web web web","import { create } from \"@agntn\u002Fweb\";\n\nconst serpbase = await create(\"serpbase\"); \u002F\u002F SERPBASE_API_KEY\nconst results = await serpbase.search(\"query\", { category: \"news\", maxResults: 10 });\n","ts","",[126,127,128,151,158,190],"code",{"__ignoreMap":124},[129,130,133,137,141,144,148],"span",{"class":131,"line":132},"line",1,[129,134,136],{"class":135},"skH_V","import",[129,138,140],{"class":139},"s38Sx"," { create } ",[129,142,143],{"class":135},"from",[129,145,147],{"class":146},"shU9J"," \"@agntn\u002Fweb\"",[129,149,150],{"class":139},";\n",[129,152,154],{"class":131,"line":153},2,[129,155,157],{"emptyLinePlaceholder":156},true,"\n",[129,159,161,164,167,170,173,177,180,183,186],{"class":131,"line":160},3,[129,162,163],{"class":135},"const",[129,165,166],{"class":139}," serpbase ",[129,168,169],{"class":135},"=",[129,171,172],{"class":135}," await",[129,174,176],{"class":175},"sK71F"," create",[129,178,179],{"class":139},"(",[129,181,182],{"class":146},"\"serpbase\"",[129,184,185],{"class":139},"); ",[129,187,189],{"class":188},"scIB-","\u002F\u002F SERPBASE_API_KEY\n",[129,191,193,195,198,200,202,205,208,210,213,216,219],{"class":131,"line":192},4,[129,194,163],{"class":135},[129,196,197],{"class":139}," results ",[129,199,169],{"class":135},[129,201,172],{"class":135},[129,203,204],{"class":139}," serpbase.",[129,206,207],{"class":175},"search",[129,209,179],{"class":139},[129,211,212],{"class":146},"\"query\"",[129,214,215],{"class":139},", { category: ",[129,217,218],{"class":146},"\"news\"",[129,220,221],{"class":139},", maxResults: 10 });\n",[223,224,225,226,229,230,233],"p",{},"The key goes in the ",[126,227,228],{},"X-API-Key"," header against ",[126,231,232],{},"api.serpbase.dev",".",[114,235,237],{"id":236},"what-it-reads","What it reads",[239,240,241,254],"table",{},[242,243,244],"thead",{},[245,246,247,251],"tr",{},[248,249,250],"th",{},"Call",[248,252,253],{},"Endpoint",[255,256,257],"tbody",{},[245,258,259,264],{},[260,261,262],"td",{},[126,263,207],{},[260,265,266,269,270,273,274,277,278,277,281,273,284],{},[126,267,268],{},"POST"," to the endpoint the category picks: web by default, ",[126,271,272],{},"images","\u002F",[126,275,276],{},"image",", ",[126,279,280],{},"news",[126,282,283],{},"videos",[126,285,286],{},"video",[114,288,290],{"id":289},"what-comes-back","What comes back",[223,292,293,277,296,277,298,301,302,305,306,309,310,313],{},[126,294,295],{},"publishedDate",[126,297,276],{},[126,299,300],{},"favicon"," and ",[126,303,304],{},"metadata.{position, rank, searchType, requestId, elapsedMs, creditsCharged}",". Only ",[126,307,308],{},"category"," is honoured. Paging works, but the next token stays ",[126,311,312],{},"unknown"," until a page comes back empty, SerpBase does not say when it is done.",[114,315,317],{"id":316},"gotchas","Gotchas",[319,320,321,328],"ul",{},[322,323,324,327],"li",{},[126,325,326],{},"maxResults"," is applied on our side to the returned page, the endpoint decides the page size.",[322,329,330,331,334,335,338,339,342],{},"Credits are charged per request and reported in ",[126,332,333],{},"metadata.creditsCharged",". An empty balance answers HTTP 200 with ",[126,336,337],{},"status: 1020",". That is ",[126,340,341],{},"PaymentError"," here, so automatic search tries the next configured provider instead of stopping.",[114,344,346],{"id":345},"where-it-lives","Where it lives",[223,348,349,233],{},[126,350,351],{},"src\u002Fproviders\u002Fserpbase.ts",[353,354,355],"style",{},"html pre.shiki code .skH_V, html code.shiki .skH_V{--shiki-light:var(--shiki-token-keyword);--shiki-default:var(--shiki-token-keyword);--shiki-dark:var(--shiki-token-keyword)}html pre.shiki code .s38Sx, html code.shiki .s38Sx{--shiki-light:var(--ui-text-highlighted);--shiki-default:var(--ui-text-highlighted);--shiki-dark:var(--ui-text-highlighted)}html pre.shiki code .shU9J, html code.shiki .shU9J{--shiki-light:var(--shiki-token-string);--shiki-default:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)}html pre.shiki code .sK71F, html code.shiki .sK71F{--shiki-light:var(--shiki-token-function);--shiki-default:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)}html pre.shiki code .scIB-, html code.shiki .scIB-{--shiki-light:var(--shiki-token-comment);--shiki-default:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)}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":153,"depth":153,"links":357},[358,359,360,361,362],{"id":116,"depth":153,"text":117},{"id":236,"depth":153,"text":237},{"id":289,"depth":153,"text":290},{"id":316,"depth":153,"text":317},{"id":345,"depth":153,"text":346},"SerpBase's Google SERP endpoints, with a category that picks the web, images, news or videos endpoint.","md",null,{"icon":367},"i-lucide-layers",{"title":84,"description":363},"Ow3EbeTh62EeiO1aQUr-SbaKFillXOSGkJw72agveGk",[371,373],{"title":80,"path":81,"stem":82,"description":372,"children":-1},"SerpAPI's Google endpoints for classic SERP results and Google Lens for reverse image search.",{"title":88,"path":89,"stem":90,"description":374,"children":-1},"The Tavily search API, with an optional generated answer in response metadata, and Tavily Extract for reading pages.",1790790788263]