Tracking one site is a small loop: a keyword list, one SERP lookup per keyword each day, the positions stored over time and a chart. With a SERP API, an agent builds that for a few hundred keywords in an afternoon, at a few dollars a month. The weekend goes on what AccuRanker spreads over thousands of keywords: location and device targeting that matches what people see, SERP features, competitor and share-of-voice views, client-ready reports and the join with Search Console. Results from a SERP API can also differ by a few places from a real browser, and the cost grows with every keyword you add. If you only want the free route, SerpBear is the open-source tool that already does this.
Before you buildAccuRanker has no free plan, so compare with SerpBear first: it is the same idea, already built, and costs only the SERP lookups.
Build me a self-hosted rank tracker to replace AccuRanker for my own sites. Requirements: - Node.js 22 + TypeScript: a Fastify server with server-rendered pages (Eta) and uPlot charts. `npm start` serves http://localhost:4900; `npm run check` runs one tracking pass from the CLI. - Storage: better-sqlite3 in ./data/ranks.db: domains, keywords (text, country, language, device, tag) and one row per check (keyword, date, position or null, ranking URL, top-20 results as JSON). - Data source: the DataForSEO Google Organic SERP API in Standard queue mode, depth 30 (plain `fetch`, DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD in .env). Hide it behind a SerpProvider interface and add a Serper.dev provider as a second implementation. - Matching: a keyword ranks at the first result whose host equals the domain or a subdomain (`tldts`). Also store which of the 5 competitor domains in the project appear and where. - Daily job (`node-cron`, 06:00 local): skip keywords already checked today, retry a failed task twice, and stop with a clear log line when MAX_CHECKS_PER_MONTH from .env is reached. - Interface: a keyword table with current position, change over 7 and 30 days and a sparkline; a keyword page with the position chart and the top 20 for each date; filters by tag, country, and "moved more than 3 places". - CSV: import keywords (keyword,country,language,device,tag) and export the full history. - Alerts: one daily email through nodemailer SMTP from .env listing keywords that left the top 10 or gained 5 places or more. - Single user, one admin password in .env. No accounts, no telemetry, local-first: the only outbound calls are the SERP provider and SMTP. - Out of scope: share of voice, white-label reports, mobile app, AI-answer tracking, search volumes. - README: how to get the API key, the price per SERP, the monthly budget maths for N keywords, and a warning that API results can differ by a few places from what a person sees in the browser.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own AccuRanker.
Extend the rank tracker in this folder. Requirements: - Add a Search Console importer (`googleapis`, service account JSON path in .env) that pulls clicks, impressions and CTR per query and page for the last 16 months, then the last 3 days each night after the rank check. - Match tracked keywords to queries case-insensitively and show clicks and impressions as columns, with a 28-day comparison. - Keywords without a matching query show an empty cell, never zero. - Update the README with the service-account steps.
Add competitor tracking to the rank tracker in this folder. Requirements: - A project can list up to 5 competitor domains; each check already stores the top 20, so read their positions from the stored results and do not call the SERP API again. - The keyword page draws your line and each competitor's line on one uPlot chart, with a toggle per domain, and a table of who held positions 1 to 3 on each date. - A summary page: for every keyword, who is ahead of me today and by how many places. - Update the README.
Add shareable reports to the rank tracker in this folder. Requirements: - From a project, create a report link with a random 32-byte token stored hashed in SQLite, an expiry date and a revoke button. - The link opens a read-only page with the project's keyword table and charts, no admin menu and no export; choose per link whether competitor columns are shown. - Report routes listen on a second port (REPORT_PORT in .env) so only that port is exposed through a tunnel; rate-limit it per token and log every visit with the token id. - Update the README with a Cloudflare Tunnel example.
Agencies and in-house teams pay for scale and trust: thousands of keywords refreshed daily, reports a client can open, unlimited users and domains, and an API that feeds their own dashboards. At that size a missed update or a wrong number costs more than the subscription, and a home-built tracker means owning the proxies, the parsing and the monitoring.
Estimate · DataForSEO lists Standard-queue SERPs at $0.0006 per ten results, so a depth-30 check costs about $0.0018: 100 to 300 keywords checked daily is roughly $5 to $16 a month. Rates can change. A laptop needs no server; the build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Professional | $224 | $201.60 | 2,000, 3,000 or 5,000 keywords, daily updates, keyword research, search intent, tagging, advanced filtering, Search Console and Analytics connections, reporting and export; unlimited users and domains. |
| Expert | $764 | $687.60 | 10,000 to 25,000 keywords, everything in Professional plus dynamic tagging, Tag Cloud, AI CTR, AI Search Volume, a Google Data Studio connector and an unlimited read API. |
| Enterprise | custom | — | More than 25,000 keywords, Google BigQuery, an unlimited write API, raw SERP HTML, faster refresh, a dedicated customer success manager. |
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Tens of thousands of keywords refreshed daily with location and device targeting handled for you, Share of voice, competitor groups and SERP-feature tracking in one view.
About $224 a month on the Professional (2,000 keywords) plan, $2,688 a year (checked 2026-10-19).
Tens of thousands of keywords refreshed daily with location and device targeting handled for you; Share of voice, competitor groups and SERP-feature tracking in one view; Scheduled client reports and the Data Studio and BigQuery connectors; Search Console and Analytics data joined to every keyword; AI visibility tracking across ChatGPT, Perplexity and AI Overviews (AccuLLM). If any of those matter to you, keep paying.
Yes: SerpBear (open source), SearchMirror (open source), Google Search Console (free).