Replace Broken Default Search in Minutes
Typo-tolerant, AI-powered search for your docs. Users find answers instantly. You get analytics on what they're searching for. No servers to manage.
Every SaaS company has the same problem: documentation search that doesn't work. Users can't find what they need, so they email support instead.
Built-in documentation search from Jekyll, Sphinx, or your CMS is slow, inflexible, and doesn't handle typos. Users give up and email support instead.
Exact-match search misses content. Searching "how to reset password" doesn't find "password reset instructions". Users bounce to competitors.
You can't see what users are searching for or what they can't find. Zero-result queries are invisible. Support tickets pile up while documentation gaps go unnoticed.
Smart search that understands intent. Analytics that show you what users need. Zero infrastructure.
Users type "authentcation" and still find "authentication". Misspellings, abbreviations, and variations all work. No false negatives.
Understand intent, not just keywords. "How do I reset my account" finds "password reset", "account recovery", and "forgot password" guides.
Update docs and search sees changes instantly. No rebuild cycles, no cache invalidation, no waiting for Algolia to sync.
Track what users search, what they click, and what queries return zero results. Turn search data into content opportunities.
Index and search across multiple languages. Single search input returns results from all locales — perfect for global products.
Search runs on external infrastructure. Your docs server stays fast whether you get 100 or 1M searches per month.
Build-time integration via the REST API. Index your pages at deploy time.
Use each platform's webhooks or API to send changes to your own endpoint, which pushes them to SearchJet.
Replace built-in search with SearchJet for better results and analytics.
Full control with the REST API and any HTTP client. Index any documentation source.
<!-- Add to your documentation layout -->
<input id="docs-search" type="search"
placeholder="Search documentation..." autocomplete="off">
<ul id="docs-results"></ul>
<script>
// Use a SEARCH key here, never the private key
const SEARCH_KEY = 'your_search_key';
const input = document.getElementById('docs-search');
const list = document.getElementById('docs-results');
let timer;
input.addEventListener('input', () => {
clearTimeout(timer);
timer = setTimeout(async () => {
const q = input.value.trim();
list.innerHTML = '';
if (!q) return;
const res = await fetch(
'https://app.searchjetengine.com/api/v1/search?limit=8&q=' +
encodeURIComponent(q),
{ headers: { 'Authorization': 'Bearer ' + SEARCH_KEY } }
);
const { results } = await res.json(); // array of hits
for (const hit of results) {
const li = document.createElement('li');
const a = document.createElement('a');
a.href = hit.url;
a.textContent = hit.title;
li.appendChild(a);
list.appendChild(li);
}
}, 200);
});
</script>// scripts/index-docs.mjs: run after each docs build (CI/server-side)
const docs = [
{
id: 'getting-started',
title: 'Getting Started',
content: 'Welcome to our documentation...',
url: 'https://docs.example.com/getting-started',
type: 'guide',
metadata: { locale: 'en' }
},
// ... more documents
];
const response = await fetch('https://app.searchjetengine.com/api/v1/index/bulk', {
method: 'POST',
headers: {
// Private key from your CI secrets, never shipped to the browser
'Authorization': 'Bearer ' + process.env.SEARCHJET_PRIVATE_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ documents: docs })
});
console.log(await response.json()); // includes taskUid// Spot content gaps from your own search calls
const res = await fetch(
'https://app.searchjetengine.com/api/v1/search?q=' + encodeURIComponent(query),
{ headers: { 'Authorization': 'Bearer YOUR_SEARCH_KEY' } }
);
const data = await res.json();
if (data.total === 0) {
// Zero-result query: a missing guide or a missing synonym.
// Send it to your own logging or analytics tool.
logZeroResult(query);
}
// Every response also includes:
// - data.results: the matching docs
// - data.total: number of matches
// - data.processing_time_ms: search time on the serverIllustrative example of a docs site moving off built-in search. Your results will vary.
| Metric | Before | After | Impact |
|---|---|---|---|
| Search Latency | Seconds | <150ms | Many times faster |
| Result Relevance | Exact keywords only | Typo-tolerant + semantic | More relevant results |
| User Retention | Baseline | More docs found via search | Better engagement |
| Support Load | Tickets for documented answers | More self-serve answers | Fewer tickets |
Everything you need to know about SearchJet for documentation
See how search can reduce support tickets and help users find answers instantly.
No credit card required. Free forever plan available. Contact us for a demo.