[{"data":1,"prerenderedAt":1498},["ShallowReactive",2],{"navigation_docs":3,"-guide-search":96,"-guide-search-surround":1493},[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":95},"Providers","\u002Fproviders","2.providers\u002F0.index",[49,51,55,59,63,67,71,75,79,83,87,91],{"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","i-lucide-library",{"id":97,"title":12,"body":98,"description":1486,"extension":1487,"links":1488,"meta":1489,"navigation":250,"path":13,"seo":1491,"stem":14,"__hash__":1492},"docs\u002F1.guide\u002F2.search.md",{"type":99,"value":100,"toc":1478},"minimark",[101,106,189,201,352,355,532,550,553,761,767,771,777,963,981,984,987,1114,1263,1278,1282,1339,1354,1358,1468,1474],[102,103,105],"h2",{"id":104},"the-contract","The contract",[107,108,113],"pre",{"className":109,"code":110,"language":111,"meta":112,"style":112},"language-ts shiki shiki-themes github-light github-light poimandres","interface SearchProvider {\n  search(query: string, options?: SearchRequestOptions): Promise\u003CSearchResult[]>;\n}\n","ts","",[114,115,116,133,183],"code",{"__ignoreMap":112},[117,118,121,125,129],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"s1TYA","interface",[117,126,128],{"class":127},"sCrqT"," SearchProvider",[117,130,132],{"class":131},"sKlNE"," {\n",[117,134,136,140,143,147,150,154,157,160,163,166,169,171,174,177,180],{"class":119,"line":135},2,[117,137,139],{"class":138},"scZRh","  search",[117,141,142],{"class":131},"(",[117,144,146],{"class":145},"s1jWp","query",[117,148,149],{"class":123},":",[117,151,153],{"class":152},"s8yaW"," string",[117,155,156],{"class":131},", ",[117,158,159],{"class":145},"options",[117,161,162],{"class":123},"?:",[117,164,165],{"class":127}," SearchRequestOptions",[117,167,168],{"class":131},")",[117,170,149],{"class":123},[117,172,173],{"class":127}," Promise",[117,175,176],{"class":131},"\u003C",[117,178,179],{"class":127},"SearchResult",[117,181,182],{"class":131},"[]>;\n",[117,184,186],{"class":119,"line":185},3,[117,187,188],{"class":131},"}\n",[190,191,192,193,196,197,200],"p",{},"Every search adapter has this one method. ",[114,194,195],{},"create(name)"," gives you the provider, ",[114,198,199],{},"isSearchProvider(provider)"," is the type guard when you hold something you did not create yourself.",[107,202,204],{"className":109,"code":203,"language":111,"meta":112,"style":112},"import { create, isSearchProvider } from \"@agntn\u002Fweb\";\n\nconst provider = create(\"brave\");\nif (isSearchProvider(provider)) {\n  const results = await provider.search(\"typescript runtimes\", { maxResults: 5 });\n}\n",[114,205,206,246,252,279,300,347],{"__ignoreMap":112},[117,207,208,212,215,219,222,225,228,232,236,240,243],{"class":119,"line":120},[117,209,211],{"class":210},"sP0CR","import",[117,213,214],{"class":131}," {",[117,216,218],{"class":217},"snHMy"," create",[117,220,221],{"class":131},",",[117,223,224],{"class":217}," isSearchProvider",[117,226,227],{"class":131}," }",[117,229,231],{"class":230},"stCPd"," from",[117,233,235],{"class":234},"scVjq"," \"",[117,237,239],{"class":238},"sQ7BG","@agntn\u002Fweb",[117,241,242],{"class":234},"\"",[117,244,245],{"class":131},";\n",[117,247,248],{"class":119,"line":135},[117,249,251],{"emptyLinePlaceholder":250},true,"\n",[117,253,254,257,261,264,267,269,271,274,276],{"class":119,"line":185},[117,255,256],{"class":123},"const",[117,258,260],{"class":259},"saoiD"," provider",[117,262,263],{"class":123}," =",[117,265,218],{"class":266},"sULi6",[117,268,142],{"class":131},[117,270,242],{"class":234},[117,272,273],{"class":238},"brave",[117,275,242],{"class":234},[117,277,278],{"class":131},");\n",[117,280,282,285,288,291,293,297],{"class":119,"line":281},4,[117,283,284],{"class":230},"if",[117,286,287],{"class":131}," (",[117,289,290],{"class":266},"isSearchProvider",[117,292,142],{"class":131},[117,294,296],{"class":295},"spVlQ","provider",[117,298,299],{"class":131},")) {\n",[117,301,303,306,309,311,315,317,320,323,325,327,330,332,335,338,340,344],{"class":119,"line":302},5,[117,304,305],{"class":123},"  const",[117,307,308],{"class":259}," results",[117,310,263],{"class":123},[117,312,314],{"class":313},"sZW6a"," await",[117,316,260],{"class":295},[117,318,319],{"class":131},".",[117,321,322],{"class":266},"search",[117,324,142],{"class":131},[117,326,242],{"class":234},[117,328,329],{"class":238},"typescript runtimes",[117,331,242],{"class":234},[117,333,334],{"class":131},", {",[117,336,337],{"class":217}," maxResults",[117,339,149],{"class":131},[117,341,343],{"class":342},"siHFe"," 5",[117,345,346],{"class":131}," });\n",[117,348,350],{"class":119,"line":349},6,[117,351,188],{"class":131},[102,353,354],{"id":159},"Options",[107,356,358],{"className":109,"code":357,"language":111,"meta":112,"style":112},"interface SearchRequestOptions extends ExecutionOptions {\n  maxResults?: number; \u002F\u002F default 10\n  highlights?: boolean; \u002F\u002F default true\n  summary?: boolean; \u002F\u002F default false\n  fullText?: boolean; \u002F\u002F default false\n  includeDomains?: readonly string[];\n  excludeDomains?: readonly string[];\n  sources?: readonly string[];\n  categories?: readonly string[];\n  startPublishedDate?: string;\n  endPublishedDate?: string;\n  category?: string;\n}\n",[114,359,360,374,392,407,421,434,449,463,477,491,503,515,527],{"__ignoreMap":112},[117,361,362,364,366,369,372],{"class":119,"line":120},[117,363,124],{"class":123},[117,365,165],{"class":127},[117,367,368],{"class":210}," extends",[117,370,371],{"class":138}," ExecutionOptions",[117,373,132],{"class":131},[117,375,376,380,382,385,388],{"class":119,"line":135},[117,377,379],{"class":378},"s0VbO","  maxResults",[117,381,162],{"class":123},[117,383,384],{"class":152}," number",[117,386,387],{"class":131},"; ",[117,389,391],{"class":390},"sjhu3","\u002F\u002F default 10\n",[117,393,394,397,399,402,404],{"class":119,"line":185},[117,395,396],{"class":378},"  highlights",[117,398,162],{"class":123},[117,400,401],{"class":152}," boolean",[117,403,387],{"class":131},[117,405,406],{"class":390},"\u002F\u002F default true\n",[117,408,409,412,414,416,418],{"class":119,"line":281},[117,410,411],{"class":378},"  summary",[117,413,162],{"class":123},[117,415,401],{"class":152},[117,417,387],{"class":131},[117,419,420],{"class":390},"\u002F\u002F default false\n",[117,422,423,426,428,430,432],{"class":119,"line":302},[117,424,425],{"class":378},"  fullText",[117,427,162],{"class":123},[117,429,401],{"class":152},[117,431,387],{"class":131},[117,433,420],{"class":390},[117,435,436,439,441,444,446],{"class":119,"line":349},[117,437,438],{"class":378},"  includeDomains",[117,440,162],{"class":123},[117,442,443],{"class":210}," readonly",[117,445,153],{"class":152},[117,447,448],{"class":131},"[];\n",[117,450,452,455,457,459,461],{"class":119,"line":451},7,[117,453,454],{"class":378},"  excludeDomains",[117,456,162],{"class":123},[117,458,443],{"class":210},[117,460,153],{"class":152},[117,462,448],{"class":131},[117,464,466,469,471,473,475],{"class":119,"line":465},8,[117,467,468],{"class":378},"  sources",[117,470,162],{"class":123},[117,472,443],{"class":210},[117,474,153],{"class":152},[117,476,448],{"class":131},[117,478,480,483,485,487,489],{"class":119,"line":479},9,[117,481,482],{"class":378},"  categories",[117,484,162],{"class":123},[117,486,443],{"class":210},[117,488,153],{"class":152},[117,490,448],{"class":131},[117,492,494,497,499,501],{"class":119,"line":493},10,[117,495,496],{"class":378},"  startPublishedDate",[117,498,162],{"class":123},[117,500,153],{"class":152},[117,502,245],{"class":131},[117,504,506,509,511,513],{"class":119,"line":505},11,[117,507,508],{"class":378},"  endPublishedDate",[117,510,162],{"class":123},[117,512,153],{"class":152},[117,514,245],{"class":131},[117,516,518,521,523,525],{"class":119,"line":517},12,[117,519,520],{"class":378},"  category",[117,522,162],{"class":123},[117,524,153],{"class":152},[117,526,245],{"class":131},[117,528,530],{"class":119,"line":529},13,[117,531,188],{"class":131},[190,533,534,537,538,541,542,545,546,549],{},[114,535,536],{},"maxResults"," goes to the provider as the requested count and is applied again to what comes back, so an engine that pages by ten still gives you five. ",[114,539,540],{},"highlights"," asks for passages relevant to the query where the engine has them (Exa, Firecrawl). ",[114,543,544],{},"summary"," asks Exa for a summary of each result or Tavily for an answer to the query. ",[114,547,548],{},"fullText"," asks for the whole page text, which is a lot of tokens, so think before you turn it on.",[190,551,552],{},"The filters are per provider. A provider that cannot do one does not fail, it just tells you through the detailed helpers:",[554,555,556,578],"table",{},[557,558,559],"thead",{},[560,561,562,566,569,572,575],"tr",{},[563,564,565],"th",{},"Provider",[563,567,568],{},"Domain filters",[563,570,571],{},"Source values",[563,573,574],{},"Category values",[563,576,577],{},"Date bounds",[579,580,581,595,608,622,652,671,683,695,707,732,744],"tbody",{},[560,582,583,586,589,591,593],{},[584,585,52],"td",{},[584,587,588],{},"none",[584,590,588],{},[584,592,588],{},[584,594,588],{},[560,596,597,599,602,604,606],{},[584,598,56],{},[584,600,601],{},"include, exclude",[584,603,588],{},[584,605,588],{},[584,607,588],{},[560,609,610,612,614,616,619],{},[584,611,60],{},[584,613,601],{},[584,615,588],{},[584,617,618],{},"forwarded as given",[584,620,621],{},"start, end",[560,623,624,626,628,639,650],{},[584,625,64],{},[584,627,601],{},[584,629,630,156,633,156,636],{},[114,631,632],{},"web",[114,634,635],{},"news",[114,637,638],{},"images",[584,640,641,156,644,156,647],{},[114,642,643],{},"research",[114,645,646],{},"pdf",[114,648,649],{},"developer",[584,651,588],{},[560,653,654,656,659,661,669],{},[584,655,68],{},[584,657,658],{},"include",[584,660,588],{},[584,662,663,156,665,156,667],{},[114,664,632],{},[114,666,638],{},[114,668,635],{},[584,670,588],{},[560,672,673,675,677,679,681],{},[584,674,72],{},[584,676,601],{},[584,678,588],{},[584,680,588],{},[584,682,621],{},[560,684,685,687,689,691,693],{},[584,686,76],{},[584,688,588],{},[584,690,588],{},[584,692,618],{},[584,694,588],{},[560,696,697,699,701,703,705],{},[584,698,80],{},[584,700,588],{},[584,702,588],{},[584,704,588],{},[584,706,588],{},[560,708,709,711,713,715,730],{},[584,710,84],{},[584,712,588],{},[584,714,588],{},[584,716,717,156,720,156,722,156,724,156,727],{},[114,718,719],{},"image",[114,721,638],{},[114,723,635],{},[114,725,726],{},"video",[114,728,729],{},"videos",[584,731,588],{},[560,733,734,736,738,740,742],{},[584,735,88],{},[584,737,601],{},[584,739,588],{},[584,741,588],{},[584,743,588],{},[560,745,746,748,750,752,759],{},[584,747,92],{},[584,749,601],{},[584,751,588],{},[584,753,754,156,756],{},[114,755,635],{},[114,757,758],{},"research_paper",[584,760,621],{},[190,762,763,766],{},[114,764,765],{},"getSearchFilterCapabilities(name)"," gives you the same table for one provider at runtime.",[102,768,770],{"id":769},"diagnostics","Diagnostics",[190,772,773,776],{},[114,774,775],{},"search()"," is a list API. When you want to know what the provider actually did with your options, ask for the detailed answer:",[107,778,780],{"className":109,"code":779,"language":111,"meta":112,"style":112},"import { searchProviderDetailed } from \"@agntn\u002Fweb\";\n\nconst answer = await searchProviderDetailed(\"brave\", \"typescript runtimes\", {\n  maxResults: 10,\n  includeDomains: [\"github.com\"],\n});\n\nanswer.provider; \u002F\u002F \"brave\"\nanswer.results; \u002F\u002F SearchResult[]\nanswer.ignoredFilters; \u002F\u002F [\"includeDomains\"], Brave has no domain filter\nanswer.undeclaredFilters; \u002F\u002F [] on built-ins, custom providers without capability metadata land here\nanswer.pagination; \u002F\u002F { status: \"next\", continuation: \"…\" }\nanswer.metadata; \u002F\u002F metadata for the whole response when the provider has it\n",[114,781,782,803,807,839,851,870,875,879,893,907,921,935,949],{"__ignoreMap":112},[117,783,784,786,788,791,793,795,797,799,801],{"class":119,"line":120},[117,785,211],{"class":210},[117,787,214],{"class":131},[117,789,790],{"class":217}," searchProviderDetailed",[117,792,227],{"class":131},[117,794,231],{"class":230},[117,796,235],{"class":234},[117,798,239],{"class":238},[117,800,242],{"class":234},[117,802,245],{"class":131},[117,804,805],{"class":119,"line":135},[117,806,251],{"emptyLinePlaceholder":250},[117,808,809,811,814,816,818,820,822,824,826,828,830,832,834,836],{"class":119,"line":185},[117,810,256],{"class":123},[117,812,813],{"class":259}," answer",[117,815,263],{"class":123},[117,817,314],{"class":313},[117,819,790],{"class":266},[117,821,142],{"class":131},[117,823,242],{"class":234},[117,825,273],{"class":238},[117,827,242],{"class":234},[117,829,156],{"class":131},[117,831,242],{"class":234},[117,833,329],{"class":238},[117,835,242],{"class":234},[117,837,838],{"class":131},", {\n",[117,840,841,843,845,848],{"class":119,"line":281},[117,842,379],{"class":217},[117,844,149],{"class":131},[117,846,847],{"class":342}," 10",[117,849,850],{"class":131},",\n",[117,852,853,855,857,860,862,865,867],{"class":119,"line":302},[117,854,438],{"class":217},[117,856,149],{"class":131},[117,858,859],{"class":131}," [",[117,861,242],{"class":234},[117,863,864],{"class":238},"github.com",[117,866,242],{"class":234},[117,868,869],{"class":131},"],\n",[117,871,872],{"class":119,"line":349},[117,873,874],{"class":131},"});\n",[117,876,877],{"class":119,"line":451},[117,878,251],{"emptyLinePlaceholder":250},[117,880,881,884,886,888,890],{"class":119,"line":465},[117,882,883],{"class":295},"answer",[117,885,319],{"class":131},[117,887,296],{"class":295},[117,889,387],{"class":131},[117,891,892],{"class":390},"\u002F\u002F \"brave\"\n",[117,894,895,897,899,902,904],{"class":119,"line":479},[117,896,883],{"class":295},[117,898,319],{"class":131},[117,900,901],{"class":295},"results",[117,903,387],{"class":131},[117,905,906],{"class":390},"\u002F\u002F SearchResult[]\n",[117,908,909,911,913,916,918],{"class":119,"line":493},[117,910,883],{"class":295},[117,912,319],{"class":131},[117,914,915],{"class":295},"ignoredFilters",[117,917,387],{"class":131},[117,919,920],{"class":390},"\u002F\u002F [\"includeDomains\"], Brave has no domain filter\n",[117,922,923,925,927,930,932],{"class":119,"line":505},[117,924,883],{"class":295},[117,926,319],{"class":131},[117,928,929],{"class":295},"undeclaredFilters",[117,931,387],{"class":131},[117,933,934],{"class":390},"\u002F\u002F [] on built-ins, custom providers without capability metadata land here\n",[117,936,937,939,941,944,946],{"class":119,"line":517},[117,938,883],{"class":295},[117,940,319],{"class":131},[117,942,943],{"class":295},"pagination",[117,945,387],{"class":131},[117,947,948],{"class":390},"\u002F\u002F { status: \"next\", continuation: \"…\" }\n",[117,950,951,953,955,958,960],{"class":119,"line":529},[117,952,883],{"class":295},[117,954,319],{"class":131},[117,956,957],{"class":295},"metadata",[117,959,387],{"class":131},[117,961,962],{"class":390},"\u002F\u002F metadata for the whole response when the provider has it\n",[190,964,965,966,968,969,972,973,976,977,980],{},"Silently dropping a filter is the worst thing a wrapper can do, you end up trusting results that were never filtered. So the ignored ones are always listed. Firecrawl puts its request id, warnings and credits used in ",[114,967,957],{},", Tavily puts the generated answer in ",[114,970,971],{},"metadata.answer",". ",[114,974,975],{},"isDetailedSearchProvider(provider)"," tells you whether a provider exposes ",[114,978,979],{},"searchDetailed()"," directly.",[102,982,983],{"id":943},"Pagination",[190,985,986],{},"Brave, Mojeek, SearXNG, SerpAPI, SerpBase and TinyFish have deeper pages. The detailed helpers normalize the state:",[107,988,990],{"className":109,"code":989,"language":111,"meta":112,"style":112},"type SearchPagination =\n  | { status: \"next\"; continuation: string } \u002F\u002F the provider said there is more\n  | { status: \"unknown\"; continuation: string } \u002F\u002F another page must be probed\n  | { status: \"end\" } \u002F\u002F no further page\n  | { status: \"unsupported\" }; \u002F\u002F the provider does not page\n",[114,991,992,1004,1039,1069,1091],{"__ignoreMap":112},[117,993,994,997,1001],{"class":119,"line":120},[117,995,996],{"class":123},"type",[117,998,1000],{"class":999},"s3-Zl"," SearchPagination",[117,1002,1003],{"class":123}," =\n",[117,1005,1006,1009,1011,1015,1017,1019,1022,1024,1027,1030,1032,1034,1036],{"class":119,"line":135},[117,1007,1008],{"class":123},"  |",[117,1010,214],{"class":131},[117,1012,1014],{"class":1013},"stSEH"," status",[117,1016,149],{"class":123},[117,1018,235],{"class":234},[117,1020,1021],{"class":238},"next",[117,1023,242],{"class":234},[117,1025,1026],{"class":131},";",[117,1028,1029],{"class":1013}," continuation",[117,1031,149],{"class":123},[117,1033,153],{"class":152},[117,1035,227],{"class":131},[117,1037,1038],{"class":390}," \u002F\u002F the provider said there is more\n",[117,1040,1041,1043,1045,1047,1049,1051,1054,1056,1058,1060,1062,1064,1066],{"class":119,"line":185},[117,1042,1008],{"class":123},[117,1044,214],{"class":131},[117,1046,1014],{"class":1013},[117,1048,149],{"class":123},[117,1050,235],{"class":234},[117,1052,1053],{"class":238},"unknown",[117,1055,242],{"class":234},[117,1057,1026],{"class":131},[117,1059,1029],{"class":1013},[117,1061,149],{"class":123},[117,1063,153],{"class":152},[117,1065,227],{"class":131},[117,1067,1068],{"class":390}," \u002F\u002F another page must be probed\n",[117,1070,1071,1073,1075,1077,1079,1081,1084,1086,1088],{"class":119,"line":281},[117,1072,1008],{"class":123},[117,1074,214],{"class":131},[117,1076,1014],{"class":1013},[117,1078,149],{"class":123},[117,1080,235],{"class":234},[117,1082,1083],{"class":238},"end",[117,1085,242],{"class":234},[117,1087,227],{"class":131},[117,1089,1090],{"class":390}," \u002F\u002F no further page\n",[117,1092,1093,1095,1097,1099,1101,1103,1106,1108,1111],{"class":119,"line":302},[117,1094,1008],{"class":123},[117,1096,214],{"class":131},[117,1098,1014],{"class":1013},[117,1100,149],{"class":123},[117,1102,235],{"class":234},[117,1104,1105],{"class":238},"unsupported",[117,1107,242],{"class":234},[117,1109,1110],{"class":131}," }; ",[117,1112,1113],{"class":390},"\u002F\u002F the provider does not page\n",[107,1115,1117],{"className":109,"code":1116,"language":111,"meta":112,"style":112},"const first = await searchProviderDetailed(\"brave\", \"typescript runtimes\", { maxResults: 10 });\n\nif (first.pagination.status === \"next\") {\n  const second = await searchProviderDetailed(\"brave\", \"typescript runtimes\", {\n    maxResults: 10,\n    continuation: first.pagination.continuation,\n  });\n}\n",[114,1118,1119,1158,1162,1192,1223,1234,1254,1259],{"__ignoreMap":112},[117,1120,1121,1123,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156],{"class":119,"line":120},[117,1122,256],{"class":123},[117,1124,1125],{"class":259}," first",[117,1127,263],{"class":123},[117,1129,314],{"class":313},[117,1131,790],{"class":266},[117,1133,142],{"class":131},[117,1135,242],{"class":234},[117,1137,273],{"class":238},[117,1139,242],{"class":234},[117,1141,156],{"class":131},[117,1143,242],{"class":234},[117,1145,329],{"class":238},[117,1147,242],{"class":234},[117,1149,334],{"class":131},[117,1151,337],{"class":217},[117,1153,149],{"class":131},[117,1155,847],{"class":342},[117,1157,346],{"class":131},[117,1159,1160],{"class":119,"line":135},[117,1161,251],{"emptyLinePlaceholder":250},[117,1163,1164,1166,1168,1171,1173,1175,1177,1180,1183,1185,1187,1189],{"class":119,"line":185},[117,1165,284],{"class":230},[117,1167,287],{"class":131},[117,1169,1170],{"class":295},"first",[117,1172,319],{"class":131},[117,1174,943],{"class":295},[117,1176,319],{"class":131},[117,1178,1179],{"class":295},"status",[117,1181,1182],{"class":123}," ===",[117,1184,235],{"class":234},[117,1186,1021],{"class":238},[117,1188,242],{"class":234},[117,1190,1191],{"class":131},") {\n",[117,1193,1194,1196,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221],{"class":119,"line":281},[117,1195,305],{"class":123},[117,1197,1198],{"class":259}," second",[117,1200,263],{"class":123},[117,1202,314],{"class":313},[117,1204,790],{"class":266},[117,1206,142],{"class":131},[117,1208,242],{"class":234},[117,1210,273],{"class":238},[117,1212,242],{"class":234},[117,1214,156],{"class":131},[117,1216,242],{"class":234},[117,1218,329],{"class":238},[117,1220,242],{"class":234},[117,1222,838],{"class":131},[117,1224,1225,1228,1230,1232],{"class":119,"line":302},[117,1226,1227],{"class":217},"    maxResults",[117,1229,149],{"class":131},[117,1231,847],{"class":342},[117,1233,850],{"class":131},[117,1235,1236,1239,1241,1243,1245,1247,1249,1252],{"class":119,"line":349},[117,1237,1238],{"class":217},"    continuation",[117,1240,149],{"class":131},[117,1242,1125],{"class":295},[117,1244,319],{"class":131},[117,1246,943],{"class":295},[117,1248,319],{"class":131},[117,1250,1251],{"class":295},"continuation",[117,1253,850],{"class":131},[117,1255,1256],{"class":119,"line":451},[117,1257,1258],{"class":131},"  });\n",[117,1260,1261],{"class":119,"line":465},[117,1262,188],{"class":131},[190,1264,1265,1266,1269,1270,1273,1274,1277],{},"The token is opaque and bound to the provider, the query and every option that changes the page. Change any of them and you get ",[114,1267,1268],{},"InvalidSearchContinuationError"," before another request leaves. But opaque does not mean signed. A token you did not produce yourself is untrusted input, treat it like one. Tokens are at most ",[114,1271,1272],{},"MAX_SEARCH_CONTINUATION_LENGTH"," (4 096) characters, the provider's own state inside at most ",[114,1275,1276],{},"MAX_PROVIDER_SEARCH_CONTINUATION_LENGTH"," (2 048).",[102,1279,1281],{"id":1280},"execution-controls","Execution controls",[107,1283,1285],{"className":109,"code":1284,"language":111,"meta":112,"style":112},"interface ExecutionOptions {\n  signal?: AbortSignal;\n  deadline?: number; \u002F\u002F absolute Unix timestamp in milliseconds\n  concurrency?: number; \u002F\u002F batch and fan-out only; default 3, maximum 10\n}\n",[114,1286,1287,1295,1307,1321,1335],{"__ignoreMap":112},[117,1288,1289,1291,1293],{"class":119,"line":120},[117,1290,124],{"class":123},[117,1292,371],{"class":127},[117,1294,132],{"class":131},[117,1296,1297,1300,1302,1305],{"class":119,"line":135},[117,1298,1299],{"class":378},"  signal",[117,1301,162],{"class":123},[117,1303,1304],{"class":127}," AbortSignal",[117,1306,245],{"class":131},[117,1308,1309,1312,1314,1316,1318],{"class":119,"line":185},[117,1310,1311],{"class":378},"  deadline",[117,1313,162],{"class":123},[117,1315,384],{"class":152},[117,1317,387],{"class":131},[117,1319,1320],{"class":390},"\u002F\u002F absolute Unix timestamp in milliseconds\n",[117,1322,1323,1326,1328,1330,1332],{"class":119,"line":281},[117,1324,1325],{"class":378},"  concurrency",[117,1327,162],{"class":123},[117,1329,384],{"class":152},[117,1331,387],{"class":131},[117,1333,1334],{"class":390},"\u002F\u002F batch and fan-out only; default 3, maximum 10\n",[117,1336,1337],{"class":119,"line":302},[117,1338,188],{"class":131},[190,1340,1341,1342,1345,1346,1349,1350,1353],{},"Every network call takes them. ",[114,1343,1344],{},"signal"," cancels the request in flight. ",[114,1347,1348],{},"deadline"," is one budget for the whole operation, fallback and fan-out included, so waiting on a slow first provider does not reset the clock for the second. ",[114,1351,1352],{},"concurrency"," bounds how many requests the batch and fan-out helpers start at once. None of them change a continuation token.",[102,1355,1357],{"id":1356},"errors","Errors",[554,1359,1360,1370],{},[557,1361,1362],{},[560,1363,1364,1367],{},[563,1365,1366],{},"Error",[563,1368,1369],{},"When",[579,1371,1372,1382,1392,1404,1414,1423,1433,1447],{},[560,1373,1374,1379],{},[584,1375,1376],{},[114,1377,1378],{},"EmptyQueryError",[584,1380,1381],{},"the query is blank",[560,1383,1384,1389],{},[584,1385,1386],{},[114,1387,1388],{},"UnknownProviderError",[584,1390,1391],{},"the name is not registered",[560,1393,1394,1399],{},[584,1395,1396],{},[114,1397,1398],{},"SearchNotSupportedError",[584,1400,1401,1402],{},"the provider has no ",[114,1403,775],{},[560,1405,1406,1411],{},[584,1407,1408],{},[114,1409,1410],{},"InvalidDateFilterError",[584,1412,1413],{},"a date bound is not an ISO date, or the end is before the start",[560,1415,1416,1420],{},[584,1417,1418],{},[114,1419,1268],{},[584,1421,1422],{},"the token does not belong to this provider, query and options",[560,1424,1425,1430],{},[584,1426,1427],{},[114,1428,1429],{},"AuthError",[584,1431,1432],{},"the provider answered 401, or the key is missing",[560,1434,1435,1440],{},[584,1436,1437],{},[114,1438,1439],{},"RateLimitError",[584,1441,1442,1443,1446],{},"the provider answered 429, ",[114,1444,1445],{},"retryAfter"," in seconds",[560,1448,1449,1454],{},[584,1450,1451],{},[114,1452,1453],{},"HTTPError",[584,1455,1456,1457,1460,1461,1464,1465],{},"any other non-2xx, with ",[114,1458,1459],{},"statusCode",", redacted ",[114,1462,1463],{},"url"," and ",[114,1466,1467],{},"body",[190,1469,1470,1473],{},[114,1471,1472],{},"normalizeError(error, provider)"," is what the adapters use to map a raw HTTP failure onto this list. It is exported, custom providers should use it too.",[1475,1476,1477],"style",{},"html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .scZRh, html code.shiki .scZRh{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#ADD7FF}html pre.shiki code .s1jWp, html code.shiki .s1jWp{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#E4F0FB}html pre.shiki code .s8yaW, html code.shiki .s8yaW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#A6ACCDC0}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);}html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}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 .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--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 .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}html pre.shiki code .s0VbO, html code.shiki .s0VbO{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#A6ACCD}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 .s3-Zl, html code.shiki .s3-Zl{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCD}html pre.shiki code .stSEH, html code.shiki .stSEH{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#ADD7FF}",{"title":112,"searchDepth":135,"depth":135,"links":1479},[1480,1481,1482,1483,1484,1485],{"id":104,"depth":135,"text":105},{"id":159,"depth":135,"text":354},{"id":769,"depth":135,"text":770},{"id":943,"depth":135,"text":983},{"id":1280,"depth":135,"text":1281},{"id":1356,"depth":135,"text":1357},"One provider, one query, the options every adapter takes, the filters each one honours, and the diagnostics that come back.","md",null,{"icon":1490},"i-lucide-search",{"title":12,"description":1486},"XneeLyp8qmxVmKvacTx8KN5dZ1z0NDBD4odUr3DIxSA",[1494,1496],{"title":10,"path":6,"stem":7,"description":1495,"children":-1},"Install the package, run one search, and get the same result shape from eleven providers.",{"title":16,"path":17,"stem":18,"description":1497,"children":-1},"Every configured provider at once with deduplicated results and evidence, automatic fallback for one query, and batches of queries.",1788509441443]