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
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.
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.
<!-- 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><!-- 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>Up and running in minutes
Two ways to connect. Either way, bots get a fully rendered page.
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.ioWe handle the rendering
PerfectSearch detects bot user-agents and serves pre-rendered HTML snapshots in milliseconds. Human traffic is untouched — zero latency impact.
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.
Straightforward pricing
14-day free trial on all plans. No credit card required.
Starter
For indie makers and small stores just getting started.
- Up to 5,000 snapshots / mo
- 1 site
- HTML pre-rendering
- GSC integration
- Community support
Growth
For stores growing fast enough to care about uptime and AI crawler coverage.
- 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.
- 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 →
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.