PageSourceSearch

https://openserp.org/_nuxt/DprxaALx.js

js openserp.org collected 2026-10-04 09:27:06 UTC 5,583 bytes, 1 lines download raw bytes

1import{d as y,a as w,c as l,e,t as n,f as o,i as c,w as i,F as x,r as g,h as k,_ as P,D as S,o as a,g as f,I as u}from"./BYN44ooh.js";import{b as C}from"./DqqIRPTo.js";import{d,e as h,h as b}from"./Doqyymlb.js";import{u as E}from"./CbGnp5-t.js";import"./Cu0pdmGv.js";const L={class:"section-shell"},A={class:"container-shell"},R={class:"max-w-2xl"},j={class:"font-display text-[clamp(28px,3.4vw,46px)] font-semibold leading-[1.08] tracking-[-0.01em] text-heading"},I={class:"mt-10 grid gap-4 lg:grid-cols-[minmax(0,1.15fr)_minmax(0,1fr)] lg:items-stretch"},N={class:"mt-3 font-display text-[clamp(20px,2.2vw,28px)] font-semibold leading-snug tracking-normal text-heading transition group-hover:text-accent-strong"},H={class:"mt-3 text-[15.5px] leading-relaxed text-muted"},B={class:"flex flex-col gap-3"},O={class:"font-display text-lg font-semibold leading-snug tracking-normal text-heading transition group-hover:text-accent-strong"},V={class:"mt-1.5 text-[14px] leading-relaxed text-muted"},D={class:"mt-12 grid gap-8 lg:grid-cols-2"},F={key:0},G={class:"flex flex-col gap-2"},T={class:"min-w-0 flex-1"},$={class:"block font-display text-[15px] font-semibold text-heading"},U={class:"mt-0.5 block text-[13px] leading-relaxed text-muted"},W={class:"flex flex-col gap-2"},z={class:"min-w-0 flex-1"},X={class:"block font-display text-[15px] font-semibold text-heading"},q={class:"mt-0.5 block text-[13px] leading-relaxed text-muted"},J={class:"mt-12 flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:justify-center"},se=y({__name:"index",setup(K){const{localizePath:p}=w(),m=h[0],_=h.slice(1),v=[{title:"SearXNG vs OpenSERP",description:"How a privacy metasearch frontend differs from a self-hostable SERP API, and which one fits your job.",href:"/blog/searxng-vs-openserp/"},{title:"Open-Source SerpAPI Alternatives in 2026",description:"Self-hosted vs managed SERP APIs, with the trade-offs that actually matter when you replace a paid provider.",href:"/blog/open-source-serpapi-alternatives-2026/"}];return E({title:d.title,description:d.description,path:"/comparisons/",canonicalLocale:S,alternates:!1,twitterCard:"summary_large_image",jsonLd:C({name:d.title,description:d.description,url:"https://openserp.org/comparisons/",breadcrumbs:[{name:"Home",path:"/"},{name:"Comparisons",path:"/comparisons/"}]})}),(M,t)=>{const r=P;return a(),l("section",L,[e("div",A,[e("header",R,[t[0]||(t[0]=e("p",{class:"section-label"},"Comparisons & alternatives",-1)),e("h1",j,n(o(d).h1),1),t[1]||(t[1]=e("p",{class:"mt-4 text-[17px] leading-relaxed text-muted"}," We compare search APIs by the job you're doing - SERP data, rank tracking, URL extraction, AI grounding - instead of crowning one winner. The right pick depends on your deployment model and how much infrastructure you want to run. Here's where each one fits. ",-1))]),e("div",I,[c(r,{to:o(p)(`/comparisons/${o(m).slug}/`),class:"group flex flex-col justify-between rounded-2xl border border-[rgba(152,190,168,0.55)] bg-[linear-gradient(145deg,rgba(255,255,255,0.96),rgba(238,248,241,0.92))] p-6 no-underline shadow-card transition hover:-translate-y-0.5 hover:border-accent/50 sm:p-8"},{default:i(()=>[e("div",null,[t[2]||(t[2]=e("span",{class:"inline-flex rounded-full border border-accent/30 bg-accent-soft/60 px-2.5 py-0.5 font-mono text-[10px] uppercase tracking-[0.07em] text-accent-strong"},"Start here",-1)),e("h2",N,n(o(m).h1),1),e("p",H,n(o(m).description),1)]),t[3]||(t[3]=e("span",{class:"mt-5 inline-flex items-center text-sm font-semibold text-accent-strong"},[f(" See the comparison "),e("span",{class:"ml-1 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"},"→")],-1))]),_:1},8,["to"]),e("div",B,[(a(!0),l(x,null,g(o(_),s=>(a(),u(r,{key:s.slug,to:o(p)(`/comparisons/${s.slug}/`),class:"group flex flex-1 flex-col justify-center rounded-xl border border-border bg-white/70 p-5 no-underline transition hover:border-accent/45 hover:bg-white/90"},{default:i(()=>[e("h2",O,n(s.h1),1),e("p",V,n(s.description),1)]),_:2},1032,["to"]))),128))])]),e("div",D,[o(b).length?(a(),l("div",F,[t[5]||(t[5]=e("h2",{class:"mb-4 font-display text-lg font-semibold tracking-normal text-heading"},"Head-to-head alternatives",-1)),e("div",G,[(a(!0),l(x,null,g(o(b),s=>(a(),u(r,{key:s.slug,to:o(p)(`/alternatives/${s.slug}/`),class:"group flex items-start gap-3 rounded-lg border border-border bg-white/65 px-4 py-3 no-underline transition hover:border-accent hover:bg-accent-soft/30"},{default:i(()=>[e("span",T,[e("span",$,n(s.h1),1),e("span",U,n(s.description),1)]),t[4]||(t[4]=e("span",{class:"mt-0.5 text-accent transition-transform group-hover:translate-x-0.5","aria-hidden":"true"},"→",-1))]),_:2},1032,["to"]))),128))])])):k("",!0),e("div",null,[t[7]||(t[7]=e("h2",{class:"mb-4 font-display text-lg font-semibold tracking-normal text-heading"},"Go deeper in the blog",-1)),e("div",W,[(a(),l(x,null,g(v,s=>c(r,{key:s.href,to:s.href,class:"group flex items-start gap-3 rounded-lg border border-border bg-white/65 px-4 py-3 no-underline transition hover:border-accent hover:bg-accent-soft/30"},{default:i(()=>[e("span",z,[e("span",X,n(s.title),1),e("span",q,n(s.description),1)]),t[6]||(t[6]=e("span",{class:"mt-0.5 text-accent transition-transform group-hover:translate-x-0.5","aria-hidden":"true"},"→",-1))]),_:2},1032,["to"])),64))])])]),e("div",J,[c(r,{class:"btn-primary",to:"/features/"},{default:i(()=>[...t[8]||(t[8]=[f("Explore OpenSERP features",-1)])]),_:1}),c(r,{class:"btn-secondary",to:"/docs/"},{default:i(()=>[...t[9]||(t[9]=[f("Read the docs",-1)])]),_:1})])])])}}});
1export{se as default};

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.