Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Optimize Algolia costs: understand search request vs record pricing,
reduce operations with batching and caching, monitor usage via Analytics API.
Trigger: "algolia cost", "algolia billing", "reduce algolia costs",
"algolia pricing", "algolia expensive", "algolia budget".
allowed-tools
Read, Grep
version
1.6.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","search","algolia"]
compatibility
Designed for Claude Code
Algolia Cost Tuning
Overview
Algolia pricing is based on search requests and records. A search request is one API call (which may contain multiple queries via search({ requests: [...] })). Records are counted across all indices including replicas.
Pricing Structure (2025)
Plan
Records Included
Search Requests
Additional Cost
Build (Free)
1M records
10K requests/mo
N/A
Grow
100K free, then $0.40/1K
10K free, then $0.50/1K
Pay as you go
Grow Plus
100K free, then $0.40/1K
10K free, then $1.75/1K
+ AI features
Premium
Custom
Custom
Volume discounts
What Counts as Records
Every object in every index = 1 record
Standard replicas duplicate records (multiply your count)
saveObjects() = NOT a search request (indexing operations are free)
Instructions
Step 1: Audit Current Usage
import { algoliasearch } from'algoliasearch';
const client = algoliasearch(process.env.ALGOLIA_APP_ID!, process.env.ALGOLIA_ADMIN_KEY!);
// Check total records across all indicesconst { items } = await client.listIndices();
let totalRecords = 0;
let replicaRecords = 0;
items.forEach(idx => {
const records = idx.entries || 0;
console.log(`${idx.name}: ${records.toLocaleString()} records, ${(idx.dataSize || 0 / 1024).toFixed(0)}KB`);
if (idx.name.includes('_replica') || idx.primary) {
replicaRecords += records;
}
totalRecords += records;
});
console.log(`\nTotal: ${totalRecords.toLocaleString()} records (${replicaRecords.toLocaleString()} in replicas)`);
Step 2: Replace Standard Replicas with Virtual Replicas
// Standard replicas: duplicate all records (doubles cost)// Virtual replicas: share records with primary (no extra cost)// BEFORE: 3 standard replicas = 4x record countawait client.setSettings({
indexName: 'products',
indexSettings: {
replicas: [
// 'products_price_asc', // Standard: costs records// 'products_price_desc', // Standard: costs records'virtual(products_price_asc)', // Virtual: FREE'virtual(products_price_desc)', // Virtual: FREE
],
},
});
// Virtual replica limitation: can only customize ranking and customRanking// If you need different searchableAttributes or attributesForFaceting, use standard