Site search
Spronta Search turns your crawls into hosted search indexes — whole sites, specific routes, or several sites merged — with an embeddable ⌘K search box and a public API. Free while in beta.
Search built from your crawls
Spronta already crawls every page of your site, so it can also make those pages searchable. Spronta Search turns each page into answer-sized heading sections and builds a hosted hybrid index (field-aware BM25, semantic matching, typo tolerance, phrase queries, corpus-derived acronym aliases and language-aware tokenization) with a ready-made search dialog you can embed anywhere — no separate search service to run, no re-crawling, no content pipeline to maintain.
Short, exact and structured queries stay on the fastest lexical path. Natural-language questions can add semantic candidates and rerank the best matches. The whole pipeline is Cloudflare-native: indexes live in R2, hot data and queries use Cache API, metadata and learning signals use D1, semantic vectors use Vectorize, and Workers AI runs through AI Gateway.
Indexes are their own thing, composed from one or more sources:
- A monitored site’s latest crawl — the index rebuilds automatically every time that project crawls, so it’s always as fresh as your monitoring schedule.
- A specific report — pin an index to one crawl when you want it frozen.
Each source can be narrowed to route prefixes. Only index /docs/, exclude
/docs/archive/, or combine several sites into one corpus — whatever shape the
search surface needs.
Set up an index
- Open Search in the dashboard sidebar and click New index.
- Name it (e.g. Docs search), then add sources: pick a monitored site or a
specific report, and optionally limit it to routes like
/docs/or/docs/. - Click Create index. Spronta indexes answer-sized passages from the matching pages in seconds and shows a test search box so you can try real queries immediately.
Rebuild any time from the index’s Rebuild button; indexes with a monitored site as a source rebuild themselves after every crawl of that site.
Install it on your site
Every index has its own embed snippet — one line of HTML:
<script src="https://app.spronta.com/search.js" data-project="YOUR_INDEX_TOKEN"></script>
That gives you a styled, keyboard-friendly search dialog (⌘K and / work out
of the box, dark mode included). When the dialog opens, Spronta preloads a compact
page-title index: visitors get local, zero-network suggestions as they type while
the full ranked search settles in the background.
When cited answers are enabled for the index, the widget shows them automatically
above the normal results. Results arrive first, then the answer is generated
asynchronously, so AI latency never holds the result list back. You can override
the index setting and hide answers for a particular embed with
data-answers="off":
<script
src="https://app.spronta.com/search.js"
data-project="YOUR_INDEX_TOKEN"
data-answers="off"
></script>
You do not need to write those options by hand. Open the index’s Install tab and use the live widget builder to choose the accent, light/dark behavior, corners, density, launcher side and label, result count, answer behavior, and whether page paths or descriptions are shown. The builder previews the result and generates the finished snippet.
The same controls are available as HTML attributes:
data-accent="#7c5cff",data-theme="light|dark|auto"data-radius="sharp|rounded|soft",data-density="comfortable|compact"data-position="left|right",data-launcher-label="Search docs"data-results="3..10",data-excerpts="off",data-urls="off"data-shortcut="off",data-launcher="off",data-answers="on|off|auto"data-facets="on"for compact content-type filtersdata-intelligence="off"to disable first-party buyer-intent collection
Add data-launcher="off" to hide the floating button and open it from your own UI
instead — any element with a data-crawlie-search attribute, or
window.crawlieSearch.open().
Prefer to build your own UI? Query the index directly — it’s a plain GET, no auth needed:
GET https://app.spronta.com/pub/search/YOUR_INDEX_TOKEN?q=your+query
Add &answer=1 to request a concise cited answer when answers are enabled for
the index. The response still includes the ranked sources, and the answer is
omitted when the indexed content cannot support one.
Each plan includes a monthly cited-answer allowance (100 on Hobby, 1,000 on Pro, 10,000 on Business and 50,000 on Scale). After that, newly generated answers cost $1 per 1,000 and draw from the workspace’s prepaid USD AI wallet. Funds never expire, repeated version-cached answers are free, and an empty wallet blocks generation before any AI cost is incurred. Admins can add $5, $10 or $50 from Settings → Billing.
The API also supports pagination, sorting and faceting: page, limit (up to
20), sort=relevance|newest|title, and comma-separated source, type, tag
and language filters. Responses include facet counts and the filtered total.
Buyer intent and personalization
Search Intelligence turns searches into a first-party account-intent signal. It adds an Intent tab with company heat scores, visitor journeys, topics, conversion attribution, segments and A/B experiences. Business and Scale include it; Pro workspaces can enable it as an add-on.
The widget creates a first-party anonymous visitor ID. It does not use device fingerprinting or reverse-IP identification. Once somebody identifies themselves through your own form, product or authentication flow, connect that known identity:
window.crawlieSearch.identify({
email: user.email,
company: user.company,
traits: { industry: user.industry, tier: user.accountTier }
});
Spronta stores a one-way hash and the company email domain, not the raw email address. Public traits personalize marketing UX only; never use them to secure private content.
Track meaningful outcomes from your existing forms and booking flows:
window.crawlieSearch.track("demo_booked", { source: "pricing" });
Segments can match known/returning visitors, intent score, account/domain, industry, country, tier, search topic, UTM campaign or current path. Each segment can boost or hide routes and show a contextual CTA. Experiments assign variants deterministically per visitor and report exposure-to-conversion rates.
Tune relevance
Open an index’s Settings tab to control the ranking pipeline. You can enable or disable semantic matching, AI reranking and cited answers independently. You can also pin a URL for an exact query, hide URL prefixes, and boost selected routes. Anonymous result clicks provide a small position-adjusted learning signal; editorial controls always remain explicit and reversible.
Index rebuilds are incremental. Spronta reuses unchanged document, vocabulary and posting shards, embeds only changed passages, and deletes vectors for removed content. Small and medium indexes also publish a bounded one-read hot copy; large indexes stay query-planned and fetch only the relevant posting shards. A normalized edge result cache bypasses index loading entirely for repeated queries.
Use cases
- Docs & help-center search — index just your
/docs/or/docs/routes so results are answers, never landing pages. This help center runs exactly that: press ⌘K here and you’re using a Spronta Search index of/docs/routes. - Whole-site search — a search box for your marketing site with zero build changes. The search on spronta.com is our own crawl.
- Multi-site search — merge several properties (main site + docs + blog on different domains) into one index with one search box.
- Search quality checks — use the dashboard’s test box to see what a query actually surfaces on your site, and which pages are missing from the corpus.
Pricing
Spronta Search queries are free while in beta, on every plan — including Hobby. Generated cited answers use the separate allowance and prepaid AI wallet described above. Indexes are built from crawls you’ve already paid for (or free-plan crawls), so there are no per-record or indexing fees.
Good to know
- An index reflects the latest completed crawl of its sources — pages published since then appear after the next crawl (a good reason to schedule one).
- The public endpoint and widget only expose what the crawl saw: titles, URLs,
and query-relevant text excerpts from public pages. Result links jump to the
best matching heading when the page supplies an anchor. Pages that are
noindexor canonicalised elsewhere are left out. - AI features fail open: if Workers AI or Vectorize is unavailable, lexical search continues to return results.
- Deleting an index revokes its public token immediately; your crawls and reports are untouched.
Spronta Search is new and we’re shaping it in the open — tell us what you’re building with it (or what’s missing) via Share feedback in the dashboard sidebar.
Still stuck? Email us — a human replies, usually within a day.