SpyFu's product is its dataset: years of keyword rankings and Google Ads history for domains you do not own, collected continuously. An agent can build the thin layer on top (a competitor keyword table, a gap view between two domains, saved reports) in a weekend by renting the data from an API such as DataForSEO. You then pay per request, estimates differ from SpyFu's, and the long ad history stays behind. For your own sites, Search Console and a rank tracker cover most needs for free.
Before you buildSpyFu has no free plan, but it refunds on request within 30 days. Try a month on Basic with the lookups you actually do before you decide to build.
Build me a competitor keyword tool to replace SpyFu for the few domains I research. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves http://localhost:4720 behind one password from .env. - Data: DataForSEO Labs over HTTP basic auth (DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD in .env): ranked_keywords/live for a domain, competitors_domain/live and domain_intersection/live. Country and language are settings (default location_code 2840, language "en"). - Storage: better-sqlite3 in ./data/research.db: every API response cached under a hash of endpoint plus parameters with fetched_at, then flattened into domains and keyword rows (keyword, position, URL, search volume, CPC). Nothing is fetched again within CACHE_DAYS (default 30). - Cost guard: show the estimated price before each call from constants in config ($0.012 per task plus $0.00012 per item), refuse a call that would pass MONTHLY_BUDGET_USD from .env, and keep a spend log. - Views: Domain (top keywords, sortable and filterable, 10,000 rows without freezing the page), Gap (my domain against up to 3 competitors: keywords they hold in the top 20 and I do not) and Competitors (domains that share the most keywords with me). - Reports: a named view can be saved and re-run with a refresh button; any table exports to CSV. - Optional: import clicks and impressions per query from Search Console (service account JSON path in .env) and show them beside my own rows. - Single user. No accounts, no telemetry, local-first. Only DataForSEO calls leave the machine. - Out of scope: Google Ads copy and ad history, backlinks, scheduled rank tracking, white-label reports, site audits. - README: what a typical lookup costs, how to set the budget, and a note that volumes and positions are the provider's estimates and will not match SpyFu's numbers.
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 SpyFu.
Add a weekly watch to the competitor keyword tool in this folder. Requirements: - A watch list of up to 5 competitor domains in settings. A command `research watch` re-fetches ranked keywords for each one (skipping the cache) and stores a dated snapshot. - Diff each snapshot against the previous one: keywords that entered the top 10, left the top 10, or gained more than 5 places. - Email a short digest through SMTP from .env only when something changed; show the same diff on a Watch page. - Respect MONTHLY_BUDGET_USD: stop the run and say so if the next call would pass it. - Update the README with a cron line and what a weekly run costs for 5 domains.
Add a SpyFu importer to the competitor keyword tool in this folder. Requirements: - A command `research import-spyfu <file>` that reads a CSV exported from SpyFu's SEO and PPC keyword tables. - Read the header row, map columns by fuzzy name (keyword, rank, volume, CPC, URL, domain), print the mapping and ask me to confirm before writing. - Store rows as a dated snapshot with source "spyfu" so they show beside API data and never overwrite it. - Skip duplicate rows so running it twice is safe, and print counts of rows read and kept. - Update the README with how to export from SpyFu and its row limits per plan.
Add topic clustering to the competitor keyword tool in this folder. Requirements: - Group the keywords of a domain into clusters by sending batches of 200 to an OpenAI-compatible endpoint from .env, asking for a short topic name per keyword from a list it builds itself. - Store the cluster for each keyword, cache by keyword so nothing is classified twice, and show a Topics page with total volume, average position and keyword count per cluster. - Let me rename or merge clusters; keep my edits when new keywords arrive. - Print the number of tokens used after each run. - Update the README with what keyword text leaves the machine.
Small agencies and in-house marketers like a flat-priced tool built around competitor paid and organic research, with unlimited searches and exports on the higher plans. Opinion on accuracy is split in public PPC threads: some say it holds far more paid-search data than rivals, others call its estimates misleading, especially for local advertisers.
Estimate · Labs calls on DataForSEO cost $0.012 per request plus $0.00012 per returned item, so a 1,000-keyword pull is about 13 cents. Caching keeps repeat lookups free. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Basic | $39 | $29 | 10,000 rows per search and export, 1 live site tracking project, 5,000 weekly tracked keywords, 10 automated reports, Site Audit of 50,000 crawled pages a month, 1 user. |
| Pro + AI | $119 | $89 | Unlimited results and exports, 10 live site projects, 10+ years of history, 15,000 weekly tracked keywords, 100 automated reports, Search Console integration, white-label reports, API with $40 of credits, 1 user. |
| Team / Agency | $249 | $187 | 5 users included, unlimited projects and automated reports, 50,000 weekly tracked keywords, Site Audit of 2 million crawled pages a month, API with $100 of credits. |
Not really. Small agencies and in-house marketers like a flat-priced tool built around competitor paid and organic research, with unlimited searches and exports on the higher plans. Opinion on accuracy is split in public PPC threads: some say it holds far more paid-search data than rivals, others call its estimates misleading, especially for local advertisers. The prompt on this page builds the closest honest substitute.
About $39 a month on the Basic plan, $468 a year (checked 2026-10-19).
Ten-plus years of ranking and ad history for any domain; Competitor Google Ads copy and keyword buying history; Weekly tracking of thousands of keywords with white-label reports; The Site Audit with AI fixes and publishing; SpyFu's own API and its ChatGPT integration. If any of those matter to you, keep paying.
Yes: OpenSEO (open source), SerpBear (open source), SEOnaut (open source).