PageSourceSearch

https://www.tinyfish.ai/_next/static/chunks/3u_s6-5vgww3a.js

js tinyfish.ai collected 2026-10-03 19:46:51 UTC 29,443 bytes, 6 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,65235,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(7259),n=e.i(67096),r=e.i(91548),i=e.i(55271),o=e.i(1382),l=e.i(19467),c=e.i(7456),d=e.i(5402);let h=`
2@keyframes access-fill { from { transform: scaleX(0) } to { transform: scaleX(1) } }
3.access-fill { animation: access-fill linear both }
4@media (prefers-reduced-motion: reduce) {
5  .access-motion { transition: none !important }
6}`,u={search:r.SearchDemo,fetch:r.FetchDemo,browser:r.BrowserDemo,agent:r.AgentDemo};function m({id:e}){let a=u[e];return(0,t.jsxs)("div",{className:"h-[568px] overflow-hidden rounded-xl sm:h-[490px]",style:{background:"#FBFBFA","--demo-ask":"#EDEDEC"},children:[(0,t.jsx)("div",{"aria-hidden":"true",className:"flex h-8 items-center gap-1.5 px-4",style:{borderBottom:`1px solid ${(0,s.ink)(.06)}`},children:[0,1,2].map(e=>(0,t.jsx)("span",{className:"size-2 rounded-full",style:{background:(0,s.ink)(.12)}},e))}),(0,t.jsx)("div",{className:"px-4 py-5 sm:px-6",children:(0,t.jsx)(r.DemoMode,{value:"quick",children:(0,t.jsx)(a,{})})})]})}function p({item:e,tabIndex:a}){let r=n.ACCESS_COPY[e.id];return(0,t.jsxs)("div",{className:"flex flex-col gap-3 lg:gap-4",children:[(0,t.jsxs)("p",{className:"max-w-[420px] text-[16px] leading-6 lg:text-[18px] lg:leading-7",style:{fontFamily:s.inter,color:(0,s.ink)(.78)},children:[r.headline," ",r.body]}),r.supportLine&&(0,t.jsx)("p",{className:"text-[14px]",style:{fontFamily:s.inter,color:s.sage},children:r.supportLine}),(0,t.jsx)(c.ArrowLink,{href:e.href,tabIndex:a,className:"self-start",track:{event:"internal_link_clicked",properties:{cta_location:"home_access",destination:e.id}},children:"Try it"})]})}e.s(["HomeAccess",0,function(){let[e,r]=(0,a.useState)(0),[u,f]=(0,a.useState)(!0),g=(0,a.useRef)(null),x=n.ACCESS_APIS.length,[w,b]=(0,a.useState)(!1),v=u&&w;(0,a.useEffect)(()=>{let e=g.current;if(!e||(0,o.prefersReducedMotion)())return;let t=!1,a=()=>b(t&&!document.hidden),s=new IntersectionObserver(([e])=>{t=e.isIntersecting,a()});return s.observe(e),document.addEventListener("visibilitychange",a),()=>{s.disconnect(),document.removeEventListener("visibilitychange",a)}},[]),(0,a.useEffect)(()=>{if(!v)return;let e=window.setTimeout(()=>r(e=>(e+1)%x),6e3);return()=>window.clearTimeout(e)},[v,e,x]);let y=(e,t)=>{(0,l.trackEvent)("access_tab_switched",{tab:n.ACCESS_APIS[e].id,surface:t}),f(!1),r(e)},k=n.ACCESS_APIS[e],j=(0,t.jsx)(d.Reveal,{className:"pb-6",children:(0,t.jsx)("div",{className:"flex flex-col gap-4 px-6 lg:gap-5",children:(0,t.jsx)(c.Display,{size:64,lines:[n.ACCESS_HEADER.lines.join(" ")],start:80})})}),S=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("ul",{className:"relative flex flex-col py-2 max-lg:hidden lg:pl-6 lg:pr-10",children:n.ACCESS_APIS.map((a,n)=>{let r=n===e;return(0,t.jsxs)("li",{className:"relative",style:{borderTop:0===n?c.rule:void 0,borderBottom:c.rule},children:[r&&v&&(0,t.jsx)("span",{"aria-hidden":"true",className:"access-fill pointer-events-none absolute inset-x-0 -bottom-px h-px origin-left",style:{background:s.ember,animationDuration:"6000ms"}}),(0,t.jsxs)("button",{type:"button","aria-expanded":r,"aria-controls":"access-panel",onClick:()=>y(n,"list"),className:"group flex w-full items-center gap-5 px-6 py-3 text-left lg:px-0 lg:py-5",children:[(0,t.jsx)("span",{className:`access-motion transition-colors duration-200 ${r?"":"group-hover:!text-[rgb(0_0_0/0.75)]"}`,style:{fontFamily:s.familjen,fontWeight:500,fontSize:"clamp(22px, 2.4vw, 32px)",lineHeight:1.17,letterSpacing:"-0.045em",color:r?(0,s.ink)(.92):(0,s.ink)(.5)},children:a.name}),a.free&&(0,t.jsx)(c.Tag,{quiet:!r,children:"Free"})]}),(0,t.jsx)("div",{className:"access-motion grid transition-[grid-template-rows,opacity] duration-[380ms] ease-[cubic-bezier(.16,1,.3,1)]",style:{gridTemplateRows:r?"1fr":"0fr",opacity:+!!r},children:(0,t.jsx)("div",{className:"overflow-hidden",children:(0,t.jsx)("div",{className:"flex flex-col gap-3 px-6 pb-4 lg:gap-4 lg:px-0 lg:pb-8",children:(0,t.jsx)(p,{item:a,tabIndex:r?0:-1})})})})]},a.id)})}),(0,t.jsxs)("div",{className:"flex flex-col lg:hidden",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5 px-6 pb-5",children:n.ACCESS_APIS.map((a,n)=>(0,t.jsx)("button",{type:"button","aria-pressed":n===e,onClick:()=>y(n,"pills"),className:"h-9 shrink-0 rounded-full px-3.5 sm:px-4 text-[14px] font-medium transition-colors duration-200",style:{fontFamily:s.inter,color:n===e?"#fff":(0,s.ink)(.6),background:n===e?
6(0,s.ink)(.9):"transparent",border:`1px solid ${n===e?"transparent":(0,s.ink)(.12)}`},children:a.name},a.id))}),(0,t.jsxs)("div",{className:"relative mx-6 flex h-[600px] items-center justify-center overflow-hidden rounded-2xl px-3 sm:h-[540px] sm:px-8",style:{background:i.TONES.sage.back},children:[(0,t.jsx)(i.ToneGround,{still:"home-sage-solutions"}),(0,t.jsx)("div",{className:"relative w-full",children:(0,t.jsx)(m,{id:k.id})},k.id)]}),(0,t.jsx)("div",{className:"px-6 pt-5",children:(0,t.jsx)(p,{item:k})})]})]}),E=(0,t.jsxs)("div",{id:"access-panel","aria-live":"polite",className:"relative flex flex-col overflow-hidden rounded-2xl max-lg:hidden lg:my-6 lg:mr-6",style:{background:i.TONES.sage.back},children:[(0,t.jsx)(i.ToneGround,{still:"home-sage-access"}),(0,t.jsx)("div",{className:"relative flex grow items-center justify-center px-10 py-6",children:(0,t.jsx)("div",{className:"w-full max-w-[480px]",children:(0,t.jsx)(m,{id:k.id})})},k.id)]});return(0,t.jsxs)(c.Rails,{children:[(0,t.jsx)("style",{children:h}),(0,t.jsx)("div",{className:"h-10 lg:h-[120px]"}),(0,t.jsxs)("div",{ref:g,className:"flex flex-col",children:[j,(0,t.jsxs)("div",{className:"grid grid-cols-[minmax(0,1fr)] lg:h-[600px] lg:grid-cols-2",children:[(0,t.jsx)("div",{className:"flex flex-col lg:pt-4",children:S}),E]})]}),(0,t.jsx)("div",{className:"h-14 lg:h-[120px]"})]})}])},13326,e=>{"use strict";var t=e.i(43476),a=e.i(53610),s=e.i(71645),n=(0,s.createContext)({client:a.default,bootstrap:void 0}),r=function(e){return"function"==typeof e},i=function(e,t){return(i=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])})(e,t)};"function"==typeof SuppressedError&&SuppressedError;var o={componentStack:null,exceptionEvent:null,error:null},l=s.default.Component;if("function"!=typeof l&&null!==l)throw TypeError("Class extends value "+String(l)+" is not a constructor or null");function c(){this.constructor=d}function d(e){var t=l.call(this,e)||this;return t.state=o,t}i(d,l),d.prototype=null===l?Object.create(l):(c.prototype=l.prototype,new c),d.prototype.componentDidCatch=function(e,t){var a,s=this.props.additionalProperties;r(s)?a=s(e):"object"==typeof s&&(a=s);var n=this.context.client.captureException(e,a),i=t.componentStack;this.setState({error:e,componentStack:null!=i?i:null,exceptionEvent:n})},d.prototype.render=function(){var e=this.props,t=e.children,a=e.fallback,n=this.state;if(null==n.componentStack)return r(t)?t():t;var i=r(a)?s.default.createElement(a,{error:n.error,componentStack:n.componentStack,exceptionEvent:n.exceptionEvent}):a;return s.default.isValidElement(i)?i:(console.warn("[PostHog.js][PostHogErrorBoundary] Invalid fallback prop, provide a valid React element or a function that returns a valid React element."),s.default.createElement(s.default.Fragment,null))},d.contextType=n;var h=e.i(67096),u=e.i(7259),m=e.i(7456);e.s(["HeroCopy",0,function(){var e,a,r,i,o,l,c,d;let p="test"===(e=h.HERO_EXPERIMENT_FLAG,i=(r=(0,s.useContext)(n)).client,o=r.bootstrap,c=(l=(0,s.useState)(function(){return i.getFeatureFlag(e)}))[0],d=l[1],((0,s.useEffect)(function(){return i.onFeatureFlags(function(){d(i.getFeatureFlag(e))})},[i,e]),!(null==(a=null==i?void 0:i.featureFlags)?void 0:a.hasLoadedFlags)&&(null==o?void 0:o.featureFlags))?o.featureFlags[e]:c)?"test":"control",{lines:[f,g],sub:x}=h.HERO_COPY[p];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(m.Display,{as:"h1",size:112,className:"relative",lines:[f,(0,t.jsx)("span",{style:{color:u.ember},children:g},"a")],start:60,style:{lineHeight:.906,fontSize:"clamp(52px, 7.8vw, 112px)",color:(0,u.ink)(.92)}}),(0,t.jsx)("p",{className:"xm-fade relative max-w-[640px] pt-6 text-[17px] leading-[1.5] sm:text-[20px]",style:{fontFamily:u.inter,color:(0,u.ink)(.55),...(0,m.delay)(280)},children:x})]})}],13326)},50516,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(57688),n=e.i(7259),r=e.i(9866),i=e.i(67096),o=e.i(1382),l=e.i(7456),c=e.i(5402);let d={fontFamily:n.familjen,fontWeight:500,fontSize:"clamp(40px, 4.44vw, 64px)",lineHeight:1.045,letterSpacing:"-0.05em",color:(0,n.ink)(.92)};
6function h({slot:e,beat:a,comma:r}){let o=i.HARNESS_SLOTS[e],c=a%o.length,d=(a-1+o.length)%o.length;return(0,t.jsx)("span",{className:"inline-grid overflow-hidden align-bottom",style:{height:"1.18em"},children:o.map((i,o)=>{let h=o===c?"in":o===d&&a>0?"out":"idle";return(0,t.jsxs)("span",{"aria-hidden":"in"!==h,className:`flex w-max items-start whitespace-nowrap [grid-area:1/1] ${0===a?"":"in"===h?"xm-roll-in":"out"===h?"xm-roll-out":""}`,style:{...(0,l.delay)(90*e),visibility:"idle"===h?"hidden":void 0},children:[(0,t.jsxs)("span",{className:"flex items-center gap-[0.2em]",style:{height:"1.1em",borderBottom:`2px solid ${(0,n.ink)(.12)}`},children:[(0,t.jsx)(s.default,{src:i.src,alt:"",width:68,height:68,className:"h-[0.77em] w-auto"}),i.name]}),r&&(0,t.jsx)("span",{style:{height:"1.1em"},children:","})]},`${i.name}-${"idle"===h?"idle":a}`)})})}e.s(["HomeIntegrate",0,function(){let e=(0,a.useRef)(null),s=function(e){let[t,s]=(0,a.useState)(0);return(0,a.useEffect)(()=>{let t=e.current;if(!t||(0,o.prefersReducedMotion)())return;let a=0,n=(0,o.onReveal)(t,()=>{a=window.setInterval(()=>{let e=t.getBoundingClientRect();e.bottom<0||e.top>window.innerHeight||document.hidden||s(e=>e+1)},2400)});return()=>{n(),window.clearInterval(a)}},[e]),t}(e);return(0,t.jsxs)(l.Rails,{children:[(0,t.jsx)(c.Reveal,{className:"flex flex-col gap-4 px-6 pb-10 pt-10 lg:gap-7 lg:pb-14 lg:pt-[120px]",children:(0,t.jsxs)("h2",{ref:e,style:d,className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:"xm-line",style:(0,l.delay)(80),children:(0,t.jsxs)("span",{className:"flex flex-wrap items-end gap-x-[0.25em]",children:["Use with",(0,t.jsx)(h,{slot:0,beat:s,comma:!0})]})}),(0,t.jsx)("span",{className:"xm-line",style:(0,l.delay)(160),children:(0,t.jsxs)("span",{className:"flex flex-wrap items-end gap-x-[0.25em]",children:[(0,t.jsx)(h,{slot:1,beat:s,comma:!0}),(0,t.jsx)(h,{slot:2,beat:s})]})}),(0,t.jsx)("span",{className:"xm-line",style:(0,l.delay)(240),children:(0,t.jsxs)("span",{className:"flex flex-wrap items-center gap-x-[0.25em]",children:["or in your"," ",(0,t.jsx)("span",{style:{fontFamily:n.mono,fontWeight:400,fontSize:"0.864em",letterSpacing:"-0.04em"},children:"{code}."})]})})]})}),(0,t.jsxs)(c.Reveal,{className:"flex flex-wrap items-center gap-8 px-6 pb-14 lg:pb-[120px]",children:[(0,t.jsx)("span",{className:"xm-fade",children:(0,t.jsx)(l.ConnectCta,{location:"home_integrate"})}),(0,t.jsx)("span",{className:"xm-fade",style:(0,l.delay)(80),children:(0,t.jsx)(l.ArrowLink,{href:r.EXTERNAL_LINKS.docs,track:{event:"docs_link_clicked",properties:{cta_location:"home_integrate"}},children:"View API docs"})})]})]})}])},8132,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(9866),n=e.i(19467),r=e.i(7259),i=e.i(10025);let o="tf_sticky_signup_cta_dismissed_v1";function l(){return"u">typeof document&&!!document.querySelector("tb-banner-wrapper")}e.s(["StickySignupCta",0,function({ctaLocation:e,showAfterPx:c=480,showAfterId:d,avoidBottomWidget:h=!1,message:u="Search and Fetch are free. Get your API key.",dismissible:m=!0,hideWhenVisibleId:p,action:f,variant:g="light",compactOnMobile:x=!1,hideWhenDialogOpen:w=!1,hideWhenConsentBanner:b=!0}){let[v,y]=(0,a.useState)(!1),[k,j]=(0,a.useState)(()=>b&&l()),[S,E]=(0,a.useState)(!1),[F,N]=(0,a.useState)(!1),A=(0,a.useRef)(!1);return((0,a.useEffect)(()=>{let e=()=>j(b&&l());if(e(),!b)return;let t=new MutationObserver(e);return t.observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener("iubenda-consent",e),()=>{t.disconnect(),window.removeEventListener("iubenda-consent",e)}},[b]),(0,a.useEffect)(()=>{if(!w)return;let e=()=>E(!!document.querySelector('[role="dialog"]')),t=new MutationObserver(e);return e(),t.observe(document.body,{childList:!0,subtree:!0}),()=>t.disconnect()},[w]),(0,a.useEffect)(()=>{try{if(m&&"1"===window.sessionStorage.getItem(o))return}catch{}if(d){let e=document.getElementById(d);if(e){let t=()=>y(e.getBoundingClientRect().bottom<=0);return t(),window.addEventListener("scroll",t,{passive:!0}),window.addEventListener("resize",t),()=>{window.removeEventListener("scroll",t),window.removeEventListener("resize",t)}}}let e=()=>{window.scrollY<c||(y(!0),window.removeEventListener("scroll",e))};return window.addEventListener("scroll",e,{passive:!0}
6),e(),()=>window.removeEventListener("scroll",e)},[m,d,c]),(0,a.useEffect)(()=>{if(!p)return;let e=document.getElementById(p);if(!e)return;let t=()=>{let{top:t}=e.getBoundingClientRect();N(t<.75*window.innerHeight)};return t(),window.addEventListener("scroll",t,{passive:!0}),window.addEventListener("resize",t),()=>{window.removeEventListener("scroll",t),window.removeEventListener("resize",t)}},[p]),(0,a.useEffect)(()=>{!v||k||S||F||A.current||(A.current=!0,(0,n.trackEvent)("sticky_signup_cta_viewed",{cta_location:e}))},[k,S,e,F,v]),!v||k||S||F)?null:(0,t.jsx)("div",{className:`fixed z-[90] ${x?"left-1/2 right-auto w-fit max-w-[calc(100vw-2rem)] -translate-x-1/2":"left-4 right-4 sm:left-1/2 sm:right-auto sm:-translate-x-1/2"} ${h?"bottom-20 sm:bottom-6":"bottom-5 sm:bottom-6"}`,role:"region","aria-label":"Call to action","data-testid":"sticky-signup-cta",children:(0,t.jsxs)("div",{className:[`relative mx-auto flex items-center justify-between gap-2 overflow-hidden ${x?"w-max max-w-full":"max-w-[min(640px,calc(100vw-2rem))]"}`,`rounded-full border py-2 pl-4 backdrop-blur-xl sm:gap-3 sm:pl-5 ${"dark"===g?"bg-[#0a0a0a]/95":"bg-white/95"}`,m?"pr-2":"pr-1.5"].join(" "),style:{borderColor:"dark"===g?(0,r.white)(.13):(0,r.ink)(.08),boxShadow:"dark"===g?"0 1px 2px rgb(255 255 255 / 0.06) inset, 0 24px 64px -16px rgb(0 0 0 / 0.48)":"0 1px 2px rgb(0 0 0 / 0.04), 0 24px 56px -20px rgb(0 0 0 / 0.22)"},children:["dark"===g?(0,t.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-8 top-0 h-px",style:{background:"linear-gradient(90deg, transparent, rgb(255 255 255 / 0.38), transparent)"}}):null,(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)("div",{className:"truncate text-[12px] leading-none sm:text-[13px] sm:leading-tight",style:{fontFamily:r.inter,fontWeight:500,color:"dark"===g?(0,r.white)(.98):(0,r.ink)(.82)},children:u})}),f??(0,t.jsx)(i.GlowButton,{href:(0,s.signUpUrlWithSource)(e),external:!0,eventName:"signup_cta_clicked",eventProperties:{cta_location:e},className:"shrink-0 rounded-full px-4 py-2 text-[12px]",children:"Sign Up"}),m&&(0,t.jsx)("button",{type:"button","aria-label":"Dismiss signup prompt",className:`flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors ${"dark"===g?"hover:bg-white/10":"hover:bg-black/5"}`,style:{color:"dark"===g?(0,r.white)(.5):(0,r.ink)(.45)},onClick:()=>{try{window.sessionStorage.setItem(o,"1")}catch{}(0,n.trackEvent)("sticky_signup_cta_dismissed",{cta_location:e}),y(!1)},children:(0,t.jsx)("svg",{"aria-hidden":"true",className:"size-3.5",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",children:(0,t.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",strokeWidth:"1.5",strokeLinecap:"round"})})})]})})}])},30441,e=>{"use strict";var t=e.i(43476),a=e.i(19467);e.s(["TrackedLink",0,function({eventName:e,eventProperties:s,onClick:n,children:r,...i}){return(0,t.jsx)("a",{...i,onClick:t=>{(0,a.trackEvent)(e,s),n?.(t)},children:r})}])},17687,e=>{"use strict";var t=e.i(9866);e.i(35073),t.EXTERNAL_LINKS.apiKeys;let a=[{id:"search",label:"Search API",intro:"How fresh and how fast source discovery is when it runs inside an agent loop.",cards:[{id:"simpleqa",displayName:"SimpleQA",description:"SimpleQA tests short, factual questions with verifiable answers. For Search, it shows whether the first returned results contain the evidence an agent needs.",bars:[{title:"First result contains enough evidence to answer",better:"high",format:"percent1",metricLabel:"Snippet@1, SimpleQA 250-question sample",rows:[{name:"TinyFish",value:49.2,isTinyFish:!0},{name:"Tavily",value:45.6},{name:"Parallel",value:43.6},{name:"Exa",value:38.4},{name:"Firecrawl",value:38.4}]}],copy:"When the answer is visible earlier, the agent spends less time searching, fetching, and second-guessing. TinyFish led on first-result answerability, which is the search result position that matters most inside fast agent loops.",source:{label:"SimpleQA (OpenAI)",href:"https://arxiv.org/abs/2411.04368"},provenance:{kind:"public",paper:{label:"SimpleQA",href:"https://arxiv.org/abs/2411.04368",venue:"Wei et al., OpenAI, 2024"}},framing:{question:"Does the first result hold the answer?",stakes:"If it does not, the agent keeps digging: more searches, more tokens.",verdict:"answer-bearing more often than any provider tested",read:"Higher is better",method:"SimpleQA tests short, factual questions with verifiable answers. We measured how often each provider’s first result already contained the evidence an agent needs to answer."}}
6,{id:"search-latency",displayName:"Search latency",description:"A production-sample latency run measured how fast providers returned search results across 1,200 real workflow-style queries.",bars:[{title:"p50 Search latency, lower is better",better:"low",format:"ms",rows:[{name:"TinyFish",value:556,isTinyFish:!0},{name:"Exa",value:811},{name:"Firecrawl",value:869},{name:"Tavily",value:1109},{name:"Parallel",value:1709}]}],copy:"Search latency compounds inside agent loops. A few slow searches can turn into a stalled workflow. TinyFish keeps source discovery fast enough to stay inside the loop.",provenance:{kind:"internal"},framing:{question:"How long does the agent wait for a search?",stakes:"Slow searches stack up across a task and stall the loop.",verdict:"fastest source discovery in the field",read:"Lower is better",method:"We timed 1,200 real workflow-style queries against each provider in production and took the median (p50) response time."}}]},{id:"fetch",label:"Fetch API",intro:"How much of a fetched page comes back as usable, low-noise context the model can reason over.",cards:[{id:"fetch-quality",displayName:"TinyFish Fetch Quality Eval",description:"This eval tests whether providers return usable page content across the pages agents commonly read: docs, pricing pages, repos, articles, simple pages, and news.",bars:[{title:"Pages returned as usable context",better:"high",format:"percent",metricLabel:"Coverage, 45 fixed URLs",rows:[{name:"TinyFish",value:93,isTinyFish:!0},{name:"Tavily",value:80},{name:"Exa",value:73},{name:"Firecrawl",value:62},{name:"Parallel",value:58}]}],scatters:[{title:"Cleaner context, lower token consumption",xLabel:"Context cost index",yLabel:"Median signal ratio",betterRegion:"Higher signal, lower context cost",formatX:"contextCost",formatY:"percent1",points:[{name:"TinyFish",x:1,y:90.3,isTinyFish:!0,labelAnchor:"right"},{name:"Exa",x:2.3,y:87.1,labelAnchor:"right"},{name:"Parallel",x:3,y:64.5,labelAnchor:"right"},{name:"Tavily",x:6.2,y:63.8,labelAnchor:"top"},{name:"Firecrawl",x:8.7,y:56.9,labelAnchor:"left"}]}],copy:"Fetch quality is not just whether a page loads. Every navigation bar, footer, ad block, and related-link list becomes model input. TinyFish kept the returned context mostly signal, so the agent spends less of the workflow reading noise before it can reason.",source:{label:"How we evaluate Fetch quality for AI agents",href:"https://www.tinyfish.ai/blog/how-we-evaluate-fetch-quality-for-ai-agents"},provenance:{kind:"internal",ourRun:{label:"How we evaluate Fetch quality",href:"https://www.tinyfish.ai/blog/how-we-evaluate-fetch-quality-for-ai-agents"}},framing:{question:"How much of the page comes back as usable context?",stakes:"Nav bars, footers, and ad blocks all become model input. Noise crowds out reasoning.",verdict:"the highest usable-context coverage of the providers tested",read:"Higher is better",method:"We fetched 45 fixed URLs across docs, pricing pages, repos, articles, simple pages, and news, and scored how often each provider returned content an agent could actually use."},scatterFraming:{question:"How much usable signal comes back per token?",stakes:"The cleaner the content, the fewer tokens the agent spends reading noise before it can reason.",verdict:"the highest signal ratio at the lowest context cost",read:"Higher signal and lower cost is better",method:"For each provider we measured the median signal ratio (share of returned content that is usable) against a context-cost index (how many tokens it takes to carry that content), across the same fixed URL set."}}]},{id:"agent-harnesses",label:"Agent harnesses",intro:"What Search and Fetch do to end-to-end answerability once the full agent loop runs.",cards:[{id:"simpleqa-e2e",displayName:"SimpleQA, end-to-end",description:"This view of SimpleQA measures whether the agent can answer after using both search snippets and fetched content from the original top-ranked pages.",note:"Search measures whether the result itself contains evidence. End-to-end answerability measures whether the workflow can answer after reading the returned pages.",bars:[{title:"Questions answerable after Search + Fetch",better:"high",format:"percent1",metricLabel:"Conditional E2E@10, SimpleQA 250-question sample",rows:[{name:"TinyFish",value:86.8,isTinyFish:!0},{name:"Parallel",value:86.8},{name:"Exa",value:83.6},{name:"Tavily",value:80.8},{name:"Firecrawl",value:80}]}],copy:"When snippets were not enough, Fetch recovered evidence from the original pages. TinyFish tied for best end-to-e
6nd answerability, showing that the workflow stayed grounded beyond the first search result.",source:{label:"SimpleQA (OpenAI)",href:"https://arxiv.org/abs/2411.04368"},provenance:{kind:"public",paper:{label:"SimpleQA",href:"https://arxiv.org/abs/2411.04368",venue:"Wei et al., OpenAI, 2024"}},framing:{question:"Can the workflow answer after reading the pages?",stakes:"When snippets fall short, Fetch has to recover the evidence from the source pages.",verdict:"tied for the best end-to-end answerability",read:"Higher is better",method:"This end-to-end view of SimpleQA measures whether the agent can answer after using both search snippets and fetched content from the original top-ranked pages (Conditional E2E@10)."}},{id:"browsecomp",displayName:"BrowseComp agentic research",description:"This benchmark tests hard, multi-hop research questions where an agent has to search, read sources, compare evidence, and return a precise final answer.",scatters:[{title:"Accuracy vs agent context cost",xLabel:"Agent harness cost per task",yLabel:"Final-answer accuracy",betterRegion:"Higher accuracy, lower harness cost",formatX:"contextCost",formatY:"percent",points:[{name:"TinyFish",x:1,y:63,isTinyFish:!0,labelAnchor:"right"},{name:"Parallel",x:1.07,y:38,labelAnchor:"right"},{name:"Exa",x:1.44,y:53,labelAnchor:"top"},{name:"Firecrawl",x:1.59,y:58,labelAnchor:"right"},{name:"Built-in web tools",x:.97,y:49,labelAnchor:"left"}]}],bars:[{title:"Average Search + Fetch latency, lower is better",better:"low",format:"seconds",metricLabel:"Search latency + Fetch latency from the same BrowseComp run",rows:[{name:"TinyFish",value:1.47,isTinyFish:!0},{name:"Exa",value:1.59},{name:"Built-in web tools",value:1.66},{name:"Firecrawl",value:1.83},{name:"Parallel",value:2.28}]},{title:"Tasks completed without timeout or error",better:"high",format:"ratio100",metricLabel:"Completed OK, 100 benchmark tasks",rows:[{name:"Firecrawl",value:96},{name:"TinyFish",value:95,isTinyFish:!0},{name:"Exa",value:93},{name:"Parallel",value:91},{name:"Built-in web tools",value:63}]}],copy:"The model, agent, task set, and grader stayed fixed. Only the web backend changed. That alone moved final-answer accuracy from 38% to 63%, changed completion rates across the run, and shifted how much harness work the agent needed to get there.",source:{label:"BrowseComp (OpenAI)",href:"https://arxiv.org/abs/2504.12516"},provenance:{kind:"public",paper:{label:"BrowseComp",href:"https://arxiv.org/abs/2504.12516",venue:"Wei et al., OpenAI, 2025"}},framing:{question:"Does the web backend change the research outcome?",stakes:"Same model, agent, tasks, and grader. Only the web backend changed.",verdict:"moved final-answer accuracy from 38% to 63%",read:"Up and to the left is better",method:"BrowseComp tests hard, multi-hop research questions where an agent must search, read sources, compare evidence, and return a precise final answer. We held everything fixed except the web backend."}}]},{id:"web-agent",label:"Web Agent API",intro:"Whether the agent can finish real tasks across the live web, not frozen snapshots.",cards:[{id:"webvoyager",displayName:"WebVoyager",description:"WebVoyager measures browser agents on live website tasks across a fixed set of common domains. It tests navigation, page understanding, interaction reliability, and final-answer correctness.",bars:[{title:"Task pass rate on WebVoyager",better:"high",format:"percent1",metricLabel:"641 tasks, 15 live websites, independent evaluation",rows:[{name:"TinyFish",value:91.1,isTinyFish:!0},{name:"BrowserUse",value:88.3},{name:"Smooth",value:86.6},{name:"Notte",value:84.2}]}],chips:[{label:"#1 overall",stat:"91.1%",unit:"accuracy"},{label:"Reliable runs",stat:"93.3%",unit:"reliability"},{label:"Dynamic sites",stat:"95%",unit:"pass rate"}],copy:"WebVoyager shows whether an agent can finish tasks on the live web, not on frozen snapshots. TinyFish ranked first across four browser agents tested under the same conditions.",source:{label:"WebVoyager results",href:"https://www.tinyfish.ai/blog/most-accurate-ai-web-agent"},provenance:{kind:"public",paper:{label:"WebVoyager",href:"https://arxiv.org/abs/2401.13919",venue:"He et al., ACL 2024"},ourRun:{label:"Our WebVoyager run",href:"https://www.tinyfish.ai/blog/most-accurate-ai-web-agent"}},framing:{question:"Can the agent finish tasks on the live web?",stakes:"Real websites change: paths move, UIs shift, interactions fail.",verdict:"ranked first across four browser agents under the same conditions",read:"Higher is better",method:"WebVoyager measures browser agents on 641 live website tasks across 15 common domains, testing navigation, page understanding, interaction reliability, and final-answer correctness. Independent evaluation."}},{id:"online-mind2web",displayName:"Online-Mind2Web",description:"Online-Mind2Web measures web agents across hundreds of live tasks and many domains, stressing breadth across unfamiliar sites, changing UIs, forms, filters, and multi-step flows.",bars:[{title:"Success rate on Online-Mind2Web",better:"high",format:"percent1",metricLabel:"Online-Mind2Web live task benchmark",rows:[{name:"TinyFish",value:89.9,isTinyFish:!0},{name:"Gemini 2.5 Computer Use",value:69},{name:"OpenAI Operator",value:61.3},{name:"Claude Computer Use",value:56.3}]}],copy:"Online-Mind2Web is about breadth. It tests whether an agent can generalize across the long tail of live websites, where paths change, UI patterns vary, and each extra step creates another chance to fail.",source:{label:"Online-Mind2Web results",href:"https://www.tinyfish.ai/blog/mind2web"},provenance:{kind:"public",paper:{label:"Online-Mind2Web",href:"https://arxiv.org/abs/2504.01382",venue:"Xue et al., COLM 2025"},ourRun:{label:"Our Online-Mind2Web run",href:"https://www.tinyfish.ai/blog/mind2web"}},framing:{question:"Can the agent generalize across the long tail?",stakes:"Breadth is the hard part: unfamiliar sites, changing UIs, multi-step flows.",verdict:"the highest success rate against the major computer-use agents",read:"Higher is better",method:"Online-Mind2Web measures web agents across hundreds of live tasks and many domains, stressing breadth across unfamiliar sites, forms, filters, and multi-step flows."}}
6]}];e.s(["BENCHMARK_SECTIONS",0,a])},6541,e=>{"use strict";var t=e.i(17687);e.s(["findBenchmark",0,function(e,a=0){for(let s of t.BENCHMARK_SECTIONS){let t=s.cards.find(t=>t.id===e);if(!t)continue;let n=t.bars?.[a];if(!n)throw Error(`Benchmark card "${e}" has no bar chart at index ${a}.`);return{card:t,bar:n}}throw Error(`No benchmark card with id "${e}" in data/benchmarks.ts.`)},"tinyFishValue",0,function(e){let t=e.rows.find(e=>e.isTinyFish);if(!t)throw Error(`Bar chart "${e.title}" has no isTinyFish row to headline.`);return t.value}])},13438,e=>{"use strict";e.s(["formatValue",0,function(e,t){switch(t){case"percent":return`${e}%`;case"percent1":return`${e.toFixed(1)}%`;case"ms":return`${e.toLocaleString()}ms`;case"seconds":return`${e.toFixed(2)}s`;case"contextCost":return`${e.toFixed(1)}x`;case"ratio100":return`${e}/100`}}])},35073,e=>{"use strict";let t=(e.i(47167).default.env.NEXT_PUBLIC_SITE_URL||"https://www.tinyfish.ai").replace(/\/+$/,"");e.s(["absoluteUrl",0,function(e="/"){if(/^https?:\/\//.test(e))return e;let a=e.startsWith("/")?e:`/${e}`;return`${t}${"/"===a?"":a}`}])}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.