Skip to content
 
 

Repository files navigation

SEO Playground — Local SEO Dashboard

Work in progress — new DataForSEO endpoints are being added progressively.

SEO Playground is a self-hosted dashboard that lets you run SEO and local SEO queries directly against the DataForSEO API. Every search is saved locally in a SQLite database, so you can browse your history and revisit results without making additional API calls. There is no cloud infrastructure involved — everything runs on your machine.

If you find this useful, consider supporting the project:

Buy Me A Coffee ko-fi

Screenshots

Local Finder — Grid Search Local Finder: grid search showing local rankings across a geographic area

Rank Tracker Rank Tracker: monitor keyword positions over time for any domain

Google Reviews Analysis Google Reviews: rating distribution, monthly review chart, and rating goal calculator

Features

  • Rank Tracker — Track keyword positions over time for any domain
  • SERP Checker — Analyze Google organic results with target domain highlighting
  • Ranked Keywords — Discover what keywords a domain ranks for
  • Keyword Overview — Metrics (volume, CPC, competition) for a list of keywords
  • Keyword Data — Google Ads & Bing keyword research
  • Keyword Difficulty — Bulk difficulty scores via DataForSEO Labs
  • Keyword Ideas — Keyword ideas from a seed with volume, difficulty and intent
  • Search Intent — Classify keywords by search intent (informational, navigational, commercial, transactional)
  • Related Keywords — Related keyword suggestions from a seed keyword
  • Competitors — Find competing domains in the SERPs
  • Domain Intersection — Common keywords between two domains
  • Historical Rank — Ranking history overview for a domain
  • Domain Categories — Thematic categories for any domain
  • Subdomains — Top subdomains by organic traffic
  • Traffic Estimation — Bulk organic traffic estimate for a list of domains
  • Page Intersection (Labs) — Keywords shared between multiple pages
  • Backlinks — Full backlink profile: list, referring domains, anchors, referring networks, history
  • Backlinks Page Intersection — Pages linking to multiple of your targets simultaneously
  • Backlinks Domain Intersection — Domains linking to you and a competitor
  • Bulk Backlinks / Bulk Referring Domains — Aggregated backlink metrics for a domain list
  • Local Finder — Google local pack results for any keyword and location, with map-based coordinate picker
  • Geo-Grid Ranking — Local visibility heatmap across a configurable grid of points (3×3 to 11×11). Choose between three API modes: Live (~6 s, instant results), Priority (~1 min, 40% cheaper) or Standard (background queue, 70% cheaper). Results are color-coded by rank position and saved locally for later review.
  • On-Page Site Audit — Full site crawl with pages, links, resources, duplicate tags and non-indexable pages
  • On-Page Instant Pages — Instant single-page audit without crawling
  • Microdata Analysis — Structured data inspection for any crawled URL
  • Content Parsing — Quality score, readability (ARI), word count, meta tags, content blocks
  • Google Reviews — Fetch and analyze Google Business reviews: rating distribution, monthly chart, and rating goal calculator
  • AI Optimization — Visibility in AI-generated answers
  • Reddit Mentions — Discover Reddit threads linking to or discussing your URLs
  • Top Searches — Local search trends
  • Settings — Store your DataForSEO credentials and defaults locally

Requirements

Getting Started

Option 1 — Docker (recommended)

The easiest and fastest way to run the app. Docker builds a production image so the app is fully optimized.

# Build and start (first run)
docker compose up --build

# Subsequent runs
docker compose up

The database is persisted in ./data/seo-playground.db on your machine.

Option 2 — Node.js (production mode)

Faster than dev mode — build once, then run.

npm install
npm run build
npm start

Option 3 — Node.js (dev mode)

Convenient for development but noticeably slower — Next.js recompiles on every request and skips all optimizations. Not recommended for daily use.

npm install
npm run dev

Open http://localhost:3000 and go to Settings to enter your DataForSEO API credentials.

Configuration

All settings (API credentials, default location, language, coordinates, domain) are stored locally in seo-playground.db (SQLite). No .env file is needed — configure everything from the Settings page.

Data Storage

Search history and results are cached locally in seo-playground.db. The database is created automatically on first run.

Tech Stack

Changelog

2026-06-01

  • Local Finder simplified — grid search removed from Local Finder and now lives exclusively in its own dedicated Geo-Grid Ranking page
  • Geo-Grid highlighted — three queue modes (Live / Priority / Standard), grid sizes from 3×3 to 11×11, color-coded heatmap, auto-polling, local history
  • README: run options clarified — Docker and npm run build && npm start recommended over npm run dev; dev mode noted as slow by design (no optimization, recompiles on every request)
  • Next.js dev indicator removeddevIndicators: false

2026-05-31

  • Fix Labs API field mappings — corrected response parsing for Keyword Ideas (keyword_properties.keyword_difficulty, flat structure with no keyword_data wrapper), Search Intent (keyword_intent.label and secondary_keyword_intents array), Subdomains (removed unsupported order_by parameter), and Traffic Estimation (removed non-existent position columns, added Paid KWs column)
  • Fix Keyword Ideas request — endpoint requires keywords as an array, not a single keyword string
  • Remove Next.js dev indicatordevIndicators: false in next.config.ts
  • Update banner translated to English
  • Keyword Difficulty — fixed remaining French strings

2026-05-30

  • Labs endpoints — added Keyword Ideas, Search Intent, Page Intersection, Subdomains, Traffic Estimation
  • Domain Analytics — added Categories page
  • OnPage — added Site Audit tabs: Links, Resources, Duplicate Tags, Non-Indexable; added Content Parsing standalone page
  • Backlinks — added Referring Networks, Page Intersection, Domain Intersection, History (with sparkline charts), Bulk Backlinks, Bulk Referring Domains
  • Fix microdata field.value.join is not a function — DataForSEO returns value and types as strings in some responses; added Array.isArray() guards
  • Fix microdata "page not submitted" — URL mismatch due to redirect normalization; fetch actual crawled URL from on_page/pages first
  • Docker support — added Dockerfile, .dockerignore, and docker-compose.yml with persistent SQLite volume
  • Auto-refresh — Site Audit page polls automatically while a crawl is in progress
  • UI redesign — sidebar overhaul (blue active state, readable nav labels, section grouping), header cleanup, smooth scroll, focus rings
  • All UI text translated to English

Earlier

  • Google Reviews — async task flow, rating distribution, monthly chart, rating goal calculator
  • On-Page Instant Pages — full single-page audit via DataForSEO live endpoint
  • Geo-Grid Ranking — heatmap across a geographic grid, async task polling
  • Site Audit fixes — resolved INSERT OR REPLACE data wipe bug and invalid order_by parameter causing crawls to never complete
  • Initial release — Rank Tracker, SERP Checker, Ranked Keywords, Keyword Overview, Keyword Data, Keyword Difficulty, Related Keywords, Competitors, Domain Intersection, Historical Rank, Backlinks, Local Finder, On-Page, AI Optimization, Reddit, Top Searches

License

MIT

About

SEO and local SEO dashboard powered by DataForSEO API

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages