One small inline script. No SDK. Zero build step. Zero backend. If you can write an <input>, you can ship search.
Get an API key, then test it against the live SearchJet index right here — no IDE, no build step.
Enter your email and we'll inject a working key straight into the sandbox below. No credit card. 10,000 free searches/month.
const params = new URLSearchParams({ q: 'wireless headphones', limit: '5' });
// Search as you type → instant results, no SDK needed
const res = await fetch(`https://app.searchjetengine.com/api/v1/search?${params}`, {
headers: { Authorization: 'Bearer 8e371cadae7aefedd3c99e41835df7ad709a27128c2a2d0c10ac408b1124c5a7' }
});
console.log(await res.json()); // ← live JSON below{
// Run a query above to see the live
// JSON response from the SearchJet API.
// Typo-tolerant, sub-150ms.
}This is the exact behaviour your static site gets from the inline script below.
Paste one small inline script with a fetch call into any page. No SDK, no npm, no bundler, no framework. Works on GitHub Pages, Netlify, WordPress, or a plain HTML file.
Call through a tiny proxy route (or serverless function) and your API key never leaves the server. Same REST endpoint either way.
Sub-second, typo-tolerant results served from the CDN edge. Static sites get the same search UX as app stores.
Pick the pattern you need — each snippet renders a working search UI out of the box.
The UI this snippet produces — search box + results list, plain DOM.
<!doctype html>
<html lang="en">
<body>
<input id="search" placeholder="Search this site…" />
<ul id="results"></ul>
<!-- One small inline script — no SDK, no CDN, no build step -->
<script>
// 1. One HTTP request to the SearchJet REST API (search key only)
const API = 'https://app.searchjetengine.com/api/v1/search';
const SEARCH_KEY = '';
async function search(q) {
const res = await fetch(`${API}?q=${encodeURIComponent(q)}&limit=10`, {
headers: { Authorization: `Bearer ${SEARCH_KEY}` },
});
const data = await res.json();
return data.results; // `results` is the array of hits
}
// 2. Render results — plain DOM, zero dependencies
function renderResults(results) {
const list = document.getElementById('results');
list.innerHTML = results.length
? results.map(h => `<li><a href="${h.url}">${h.title}</a></li>`).join('')
: '<li>No results — try another term</li>';
}
// 3. Search as the user types (debounced)
let timer;
document.getElementById('search').addEventListener('input', (e) => {
clearTimeout(timer);
const q = e.target.value.trim();
if (!q) return renderResults([]);
timer = setTimeout(async () => renderResults(await search(q)), 150);
});
</script>
</body>
</html>Click YOUR_API_KEY in the code to generate your free key — it's injected instantly.
Paste one small inline script into your page. No SDK, no npm install, no bundler, no build step.
Put your free search API key in the Authorization header — the key decides which index is searched. Then call GET /search.
Loop over the results array and build your own list UI with plain DOM.
Free forever plan — 10,000 searches/month, no credit card.