Stack & API
How we built AI Search Readiness Score, and how you can access it programmatically.
Tech Stack
Next.js 14
App Router with SSR and static generation
Fastify 4
High-performance REST API with BullMQ workers
PostgreSQL 16
Primary data store with Drizzle ORM
Redis 7
BullMQ job queue for async scan pipeline
Playwright
Headless browser for JS-rendered page analysis
GPT-4o
Vertical detection and content analysis checks
Perplexity API
AI citation checks across 20 queries
Docker Compose
Single-VPS deployment with nginx reverse proxy
Scoring Model
Your score out of 100 is computed as a weighted sum of four baskets:
26 total checks: 9 core (visible to free), 13 premium, 4 LLM-based. JS-heavy sites receive a penalty multiplier on MR if server-rendered content is below 50 words.
Public API
Programmatic access to trigger scans and retrieve results. No API key required — rate limited to 5 requests per hour per IP.
Trigger a scan
Starts a new scan and returns a scan ID for polling.
curl "https://getaisearchscore.com/api/score?url=https://example.com&email=you@example.com"
# Response:
{
"scanId": "abc-123...",
"status": "queued",
"pollUrl": "https://getaisearchscore.com/api/scans/abc-123...",
"resultsUrl": "https://getaisearchscore.com/results/abc-123..."
}Poll scan results
Poll until status is completed or failed. Returns score, sub-scores, and check results.
curl "https://getaisearchscore.com/api/scans/abc-123..." # Response includes: status, estimatedScore, mrScore, # estimatedExScore, estimatedTrScore, orScore, checks[], ...
Parameters
| Param | Required | Description |
|---|---|---|
| url | Yes | Full URL to scan (e.g. https://example.com) |
| Yes | Email to associate with scan results | |
| niche | No | Business vertical hint (e.g. ecommerce, saas, local_business) |
Rate limit: 5 requests per hour per IP. Domain rate limit: 1 scan per domain per 24 hours. Results are available at the pollUrl once the scan completes (typically 1-2 minutes).