Skip to content

bensblueprints/serpdeck

Repository files navigation

Serpdeck 📈

Self-hosted keyword rank tracker: bring your own SERP API key, track unlimited keywords across projects, get daily position history, competitor comparisons, and big-move alerts.

AccuRanker starts at $129/mo for 1,000 keywords. Serpdeck is $39, once — it pays for itself in 9 days. No seat limits, no keyword caps, no monthly invoice ever again. You bring a metered SERP API key (pennies per search) and Serpdeck does the scheduling, history, competitor tracking, and alerting.

screenshot placeholder

Features

  • Unlimited projects, keywords, and competitors — no per-seat or per-keyword pricing tiers
  • Daily automatic checks on a per-project schedule (pick the hour), plus manual "check now" for a single keyword or an entire project
  • Position history for every keyword, charted with an inverted axis (rank #1 at the top, like it should be) and competitor overlay lines
  • Competitor comparisons — track any number of rival domains per project, see their position alongside yours on every check
  • Big-move alerts — webhook or email alerts when a keyword moves N+ spots, enters the top 10, or falls out of it
  • CSV export at the project level (current/best/deltas) or full per-keyword history
  • SERP snapshot — the full top-100 result set is stored with every check, browsable per keyword
  • Driver-based, BYO API key — SerpAPI, DataForSEO, or a generic JSON-mapping driver for any other SERP API or self-hosted scraper you already have
  • Crash-safe job queue — checks run through a SQLite-backed queue; a crash mid-check just means the job goes back to pending on restart, nothing is lost or double-fired
  • One process, one SQLite file — Node + Express, deploys to a $5 VPS with docker compose, or runs as a Windows desktop app

Why we don't scrape Google directly

Scraping Google's search results directly is a non-starter for a product we sell to other people, for four concrete reasons:

  1. Google blocks it, hard. Datacenter and VPS IPs get CAPTCHA-walled within dozens of queries. A tool that "sometimes works, sometimes gets blocked" isn't a product — it's a support ticket generator.
  2. It's a ToS violation. Scraping Google's SERPs directly violates Google's Terms of Service. Shipping that as the core mechanism of a paid product is legal exposure we're not willing to carry, and shouldn't ask customers to carry either.
  3. Wrong results without proper geo/device parameters anyway. Real rank tracking needs accurate country, language, and device targeting — the exact infrastructure (rotating proxies, real Chrome fingerprints, geo-IP pools) that SERP API providers already operate at scale. Rolling our own worse version of that infrastructure doesn't make the product better, it makes it flakier.
  4. Every Google markup change breaks every install. A scraper is a maintenance treadmill tied to Google's frontend HTML. A documented JSON API is a contract; a scraped HTML page is not.

SERP APIs like SerpAPI ($75 for 5,000 searches) and DataForSEO ($0.0006–$0.002 per SERP, pay-as-you-go) already solve proxies, CAPTCHAs, geo-targeting, and result parsing — for fractions of a cent per keyword. The one-time-purchase economics of Serpdeck only work because the recurring cost is the metered SERP API you already have an account with, not a scraping arms race we'd have to keep winning against Google forever.

Serpdeck is therefore driver-based, BYO-key only. There is no direct-scrape mode, and there never will be. If you don't have a SERP API key yet, SerpAPI's free tier (100 searches/month) is enough to try Serpdeck end-to-end before you commit to anything.

Quick start

git clone <this-repo> serpdeck
cd serpdeck
cp .env.example .env        # set ADMIN_PASSWORD at minimum
npm install                 # runs postinstall to vendor native bindings
npm run build               # builds the React frontend
npm start                   # http://localhost:5339

Then open the app, go to Settings, pick a driver (SerpAPI / DataForSEO / Generic), paste in your API key, hit Test connection, and you're tracking keywords.

Docker

cp .env.example .env
docker compose up -d --build

Desktop app (Windows)

npm run desktop     # dev mode
npm run dist        # builds a distributable NSIS installer into release/

The desktop build stores its SQLite database in your Windows user profile (%APPDATA%/Serpdeck) and auto-logs you in — no password prompt on your own machine.

Tech stack

  • Backend: Node.js, Express, better-sqlite3 (WAL mode), a SQLite-backed crash-safe job queue, nodemailer for SMTP alerts, tldts for registrable-domain matching
  • Frontend: React 18, Vite, Tailwind CSS v4, Framer Motion, Recharts, Lucide icons
  • Desktop: Electron wrapper around the same Express server, listening on an OS-assigned local port
  • Drivers: SerpAPI, DataForSEO (Google Organic Live Advanced), and a Generic JSON-mapping driver for anything else that returns JSON

Comparison

Serpdeck AccuRanker Wincher Mangools (SERPWatcher) SE Ranking Nightwatch
Pricing $39 once from $129/mo (1k kw) $32–$59/mo from $29.90/mo from $65/mo from $32/mo
Keyword limit Unlimited Tiered by plan Tiered by plan Tiered by plan Tiered by plan Tiered by plan
Self-hosted
Your data, your server
Recurring cost Your SERP API usage only (~pennies) Full subscription Full subscription Full subscription Full subscription Full subscription
Competitor tracking

Cost-over-time math: AccuRanker's cheapest plan is $129/mo for 1,000 keywords — $1,548/year. Serpdeck is a one-time $39, and even a fairly active install (100 keywords checked daily via DataForSEO) runs $2–$6/month in API fees. Serpdeck pays for itself in about 9 days compared to AccuRanker, and every month after that is pure savings.

Whop

Grab the packaged installer / hosted deploy on Whop: https://whop.com/onetime-suite

Source in this repo is MIT-licensed — self-host it for free forever. The Whop listing is for people who'd rather pay for the packaged installer and updates than run git clone.

License

MIT — see LICENSE.

About

Self-hosted SEO rank tracker (BYO SERP API key) — SerpAPI/DataForSEO/generic drivers, daily checks, position history, competitor overlay, big-move alerts. AccuRanker alternative, pay once.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages