Now in Beta — 50+ teams already onboard

Your Next.js store is invisible to AI search.

PerfectSearch pre-renders your JavaScript pages for Googlebot, ChatGPT, and Claude — in one line of config. No code changes required.

Works with

Next.js
Nuxt
Shopify Plus
Vercel
Netlify
Base44
Lovable
middleware.ts
import { perfectSearch } from '@perfectsearch/middleware'

export default perfectSearch({
  siteId: process.env.PERFECTSEARCH_SITE_ID,
})

export const config = {
  matcher: ['/((?!_next|api).*)'],
}

That's it — add three lines to your middleware.ts and every bot request gets a perfectly rendered page.

The Problem

87% of your product pages may be invisible

JavaScript-rendered stores look great in browsers — but Googlebot and AI crawlers only see an empty <div id="root">. They can't index what they can't read.

Without PerfectSearch — what Googlebot sees
<!-- What Googlebot receives -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Store</title>
    <script src="/bundle.js" defer></script>
  </head>
  <body>
    <div id="root">
      <!-- ❌ empty — JS required to render -->
    </div>
    <script src="/chunk.abc123.js"></script>
    <script src="/vendor.xyz789.js"></script>
  </body>
</html>
With PerfectSearch — fully rendered HTML
<!-- What PerfectSearch serves bots -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Merino Wool Sweater – $89 | My Store</title>
    <meta name="description" content="Premium merino wool,
      ethically sourced. Free shipping over $50." />
    <script type="application/ld+json">
      { "@type": "Product", "name": "Merino Wool Sweater",
        "offers": { "price": 89, "priceCurrency": "USD" } }
    </script>
  </head>
  <body>
    <h1>Merino Wool Sweater</h1>
    <p>Premium merino wool, ethically sourced.</p>
    <span itemprop="price">$89.00</span>
    <!-- ✅ Full product content — fully indexed -->
  </body>
</html>
87%
of JS storefronts have bot-visibility gaps
more organic traffic after fixing indexing
<50ms
snapshot serve time from cache
How It Works

Up and running in minutes

Two ways to connect. Either way, bots get a fully rendered page.

01

Install in one line

Add our middleware to your Next.js project, or point a CNAME at our edge. No code changes to your app — no API calls, no SDK.

Middleware path (Next.js, Nuxt)

import { perfectSearch } from '@perfectsearch/middleware'

DNS path (any framework)

CNAME mystore.com → mystore.edge.perfectsearch.io
02

We handle the rendering

PerfectSearch detects bot user-agents and serves pre-rendered HTML snapshots in milliseconds. Human traffic is untouched — zero latency impact.

03

Watch GSC improve

Googlebot and AI crawlers can now read your full catalog. GSC coverage errors drop and indexed pages climb — usually visible within a few days.

Pricing

Straightforward pricing

14-day free trial on all plans. No credit card required.

Starter

For indie makers and small stores just getting started.

$19 / mo
  • Up to 5,000 snapshots / mo
  • 1 site
  • HTML pre-rendering
  • GSC integration
  • Community support
Most Popular

Growth

For stores growing fast enough to care about uptime and AI crawler coverage.

$79 / mo
  • Up to 50,000 snapshots / mo
  • 5 sites
  • HTML + Markdown rendering
  • AI crawler support (ChatGPT, Claude)
  • Priority crawl queue
  • Slack alerts
  • Email support

Scale

For high-traffic storefronts that need a guaranteed uptime SLA.

$249 / mo
  • Unlimited snapshots
  • Unlimited sites
  • All rendering modes
  • 99.9% uptime SLA
  • Custom crawl schedules
  • Dedicated Slack channel
  • Priority support

Built for teams frustrated with Prerender.io pricing and cache staleness. See full plan comparison →

Free Tool

See what bots see on YOUR site

Enter any URL and we'll show you exactly what Googlebot and AI crawlers see — versus the full rendered version. Free, no signup required.