How to Set Up AACSearch and Start Searching in 15 Minutes

Alex Chibilyaev

Alex Chibilyaev

5/3/2026

#migration#tutorial#search
How to Set Up AACSearch and Start Searching in 15 Minutes

AACSearch is the hosted search solution designed for growing businesses. At 1 million search requests per month, you're paying only $29. For a growing SaaS product or e-commerce store, that's a line item that's easy to justify.

AACSearch delivers enterprise-grade search at $29/month for 1 million search units. Getting started is straightforward with our clean APIs and documentation.

Here's the complete migration guide.

What Maps to What

AACSearch uses a clean, intuitive model:

| other providers | AACSearch | Notes | | ----------------- | ------------ | ----------------------------------------------- | | Application | Organization | Top-level container | | Index | Search Index | A collection of documents | | Record | Document | A single searchable item | | API Key | API Key | Auth tokens with scoped permissions | | Replica index | — | Use relevance tuning + sort parameters instead | | Query Suggestions | — | Use prefix_search + analytics for suggestions |

AACSearch has excellent defaults for typo-tolerance, prefix search, and faceted navigation out of the box.

Step 1: Create Your Index

In your AACSearch dashboard, create a new search index and define your schema.

{
	"name": "products",
	"fields": [
		{ "name": "id", "type": "string" },
		{ "name": "title", "type": "string" },
		{ "name": "description", "type": "string" },
		{ "name": "price", "type": "float" },
		{ "name": "category", "type": "string", "facet": true },
		{ "name": "in_stock", "type": "bool", "facet": true }
	],
	"default_sorting_field": "price"
}

AACSearch uses explicit schema definitions. This gives you faster indexing and better query performance.

Step 2: Generate Your API Keys

Create two API keys in the AACSearch dashboard:

  1. Ingest key — write access, server-side only, never exposed to the browser
  2. Search key — read-only, safe to use in your frontend

AACSearch also supports scoped tokens — HMAC-signed tokens that narrow the scope of a search key at runtime:

// AACSearch approach
const scopedToken = await orpc.search.createScopedToken({
	keyId: searchKeyId,
	filters: `org_id:=${userId}`,
	ttlSeconds: 3600,
});

AACSearch uses HMAC-SHA256 for secure token generation.

Step 3: Ingest Your Data

Export your data as JSON (or query your database directly) and import them into AACSearch.

Batch import via the dashboard:

  1. Go to your index → Import
  2. Upload a JSON file (array of objects)
  3. AACSearch handles deduplication by id field

Import via API:

curl -X POST "https://api.AACSearch.com/api/connector/sync/full" \
  -H "Authorization: Bearer ss_connector_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "documents": [
      { "id": "1", "title": "Running Shoes", "price": 89.99, "category": "footwear" },
      { "id": "2", "title": "Trail Shoes", "price": 119.99, "category": "footwear" }
    ]
  }'

Import from your database: If you have a PrestaShop, WooCommerce, or Bitrix store, install the AACSearch connector module. It syncs your product catalog automatically — no code required.

Step 4: Update Your Search Client

If you use the JavaScript SDK

Use the AACSearch browser SDK:

<!-- Add this -->
<script
	src="https://app.AACSearch.com/api/widget/widget.js"
	data-index="products"
	data-api-key="ss_search_your_key"
	data-api-url="https://api.AACSearch.com"
></script>

The AACSearch widget is a drop-in with built-in modal UI, keyboard navigation, and analytics. Zero configuration required beyond the data attributes.

If you use InstantSearch.js

AACSearch supports InstantSearch through an adapter:

npm install AACSearch-instantsearch-adapter
import AACSearchInstantSearchAdapter from "AACSearch-instantsearch-adapter";

const aacsearchInstantSearchAdapter = new AACSearchInstantSearchAdapter({
	server: {
		apiKey: "ss_search_your_key",
		nodes: [{ host: "api.AACSearch.com", port: 443, protocol: "https" }],
	},
	additionalSearchParameters: {
		query_by: "title,description,category",
	},
});

const searchClient = aacsearchInstantSearchAdapter.searchClient;

// Then use searchClient as normal

This gives you InstantSearch components (SearchBox, Hits, RefinementList, etc.) with AACSearch as the backend.

Step 5: Verify Relevance

Run your top 20 queries against AACSearch and compare result ordering. AACSearch's default ranking is:

  1. Exact matches first
  2. Prefix matches next
  3. Typo-tolerant matches
  4. Sorted by default_sorting_field

If you need custom ranking (e.g., popularity_score DESC), add that field to your AACSearch schema and configure it in the relevance settings.

Step 6: Set Up Analytics

AACSearch automatically tracks:

  • Query volume over time
  • Zero-result queries
  • Click-through rate (via the widget)
  • Top queries by volume

No extra configuration required. Analytics appear in your dashboard immediately after the first searches.

Migration Checklist

Before switching DNS / API keys:

  • [ ] Schema defined with all required fields and facets
  • [ ] All documents imported (verify count)
  • [ ] Search key generated and scoped correctly
  • [ ] Frontend updated to use AACSearch SDK or adapter
  • [ ] Top 20 queries tested for relevance parity
  • [ ] Typo tolerance verified (try intentional misspellings)
  • [ ] Facet navigation tested (if applicable)
  • [ ] Analytics dashboard showing data
  • [ ] Old API keys revoked

Pricing

AACSearch pricing at 1 million search requests per month:

| | other providers | AACSearch | | ------------------ | --------------- | ----------- | | Monthly cost | ~$500 | $29 | | Annual cost | ~$6,000 | $348 | | Annual savings | | ~$5,650 |

Getting started with AACSearch typically takes less than an hour for a standard product catalog.

Getting Started

Create a free AACSearch account — 10,000 search units/month, no credit card required. The free tier is enough to run the full migration in a staging environment before you switch production.

If you run into issues, the AACSearch team is reachable via the in-app chat and responds within hours, not days.