The proof: keywords ranking nearly quadrupled in 18 days

Start with the result, because it is the point. We re-ran the exact pipeline on June 1, 18 days after the canonical May 15 build, against a comparable corpus (4,842 keywords then, 4,831 now). The clean read across the two runs: the number of keywords actually ranking in Google Search Console went from 7 to 27, and the coverage gaps the strategy set out to close fell by nearly half.

  • The site started ranking for terms it never reached before, led by google analytics 4 (9,900 searches/mo) at position 31, a topic cluster it had zero presence in at the May 15 build.
  • Commercial long-tail entered the results too: is wix good for seo, seo audit pdf, and ai traffic in ga4 all now surface where they did not before.

The honest read: this is a leading indicator, not a traffic win. Every new keyword except the brand term sits mid-page (positions 20-95), and non-brand clicks are still essentially zero. Ranking for 27 queries instead of 7 means Google now puts us in the race for far more searches; turning those positions into page-one clicks is the next phase. Treat it as correlation with the May builds, not proof of ROI.

Ranking movement, May 15 build to Jun 1, straight from production data
SignalMay 15Jun 1Change
Keywords ranking in Search Console727+20 (~3.9x)
Coverage gaps (real demand, no page)601325-276 (-46%)
Keywords covered by a page1,0351,612+577 (+56%)
Brand term "stackra" avg position4.12.3up ~1.9 spots
Queries triggering an AI Overview639660+21

The approach

We pointed the pipeline at our own site, stackra.app. The goal was not to find a million keywords. It was to build a clean, costed, deduplicated corpus, map every keyword to a page we already had (or did not have), then target the handful worth writing for. Everything below is from real production runs. The canonical full build is the May 15 2026 run: 4,842 keywords captured for about $1 marginal.

The cost model: unit prices, exactly as we pay them

DataForSEO bills per call, not per seat. Knowing the unit price of each endpoint is what lets you spend deliberately instead of blindly.

  • Batching. Search volume is a flat $0.075 whether you send 1 keyword or 1,000, so we always max the batch at 1,000.
  • Caching. Volume and related results are cached 30 days, SERPs 14 days. A re-audit within the 14-day SERP window reuses the expensive SERP calls and drops the cost to about $1.
DataForSEO endpoints and unit prices
SourceEndpointUnitPrice
Google Suggest (autocomplete)public suggest endpointper probeFree
Search VolumeGoogle Ads search_volume/liveup to 1,000 kw / request$0.075 flat
Global VolumeDFS Labs keyword_overview/liveup to 1,000 kw / task~$0.01
Related KeywordsDFS Labs related_keywords/liveper seed + per returned kw~$0.01/seed + $0.0001/kw
SERPGoogle organic/live/advancedper keyword$0.002
On-page parseDFS on-pageper URL~$0.003

The pipeline, step by step

Counts are from the May 15 build: 203 seeds in, 4,842 keywords out.

Run total (May 15): roughly $1.06 marginal, because caching from earlier runs covered most of the volume and related calls. The first-ever full build cost $3.52 because nothing was cached yet.

The pipeline with per-step cost
StepWhat we didInput -> OutputCost
1. Seed the corpusHand-wrote seeds: what we sell, the problem we solve, our category, brand variants, competitor brand terms.-> 203 seedsFree
2. Free breadth (autocomplete)Ran each seed through Google Suggest with the a-z trick plus question prefixes to harvest long-tail.203 -> 4,482 addedFree
3. Paid breadth (related)Called DFS Related Keywords per seed for semantic neighbors autocomplete misses. Volume comes back attached.203 seeds -> 157 kept~$0.02 marginal
4. Filter noiseRegex blocklist drops off-topic drift before we pay (e.g. our brand colliding with HR stack ranking or IRS audit).removes off-topicFree
5. Get volumeOne batched Google Ads call per 1,000 keywords. Cache covered the rest; only 1,539 were live misses.1,539 priced live$0.15
6. Volume gateDrop anything under 30 searches/mo from deeper paid analysis. Of 4,842 captured, only 1,165 cleared the floor.4,842 -> 1,165Free
7. Pull live SERPsFetch the real Google SERP: who ranks, AI Overview and cited domains, People Also Ask, forums, Knowledge Graph. Cache served 847; 454 live.454 live SERPs$0.91
8. Match to our pagesToken-scored every keyword against our own sitemap pages. Partial match >= 40, covered >= 70.4,842 classifiedFree
9. Pick targetsPrioritized the mid-volume commercial band where intent is real but the SERP is not locked up by giants.97 in 800-1,600/mo bandFree

What one complete cold pass costs

A complete pass is one full cold run with nothing cached, at our canonical scale: ~203 seeds expanding to ~4,842 keywords, of which ~1,300 get a live SERP. The May 15 run actually cost about $1.06 marginal because it reused cached calls. The ~$5.03 below is what the same run costs from a standing start with an empty cache. Same run, three cache conditions, not a contradiction.

A re-run within 14 days costs roughly $1, because the SERPs (the biggest line item) are still cached and reused. After that window expires, a re-run pays full price for SERPs again.

One cold pass, by phase
PhaseWhat incurs costOne cold pass
BuildRelated Keywords: 203 seeds x $0.01 + ~$0.0001/kw (seeds and autocomplete are free)~$2.05
FunnelSearch volume: ~5 batches of 1,000 x $0.075 (+ optional global volume ~$0.05)~$0.38
Scan~1,300 live SERPs x $0.002~$2.60
LayerAI Overview / PAA / Knowledge Graph (bundled in SERP) + robots.txt bot check$0.00
CoverageToken-matching keywords to your own pages, computed locally$0.00
Total~$5.03

Competitor analysis comes in two layers

Competitor intelligence runs on two separate layers, and only one costs anything beyond what we already spend. Layer 1 is free and bundled in the scan: every SERP we pull returns the top organic results, so for all 1,301 scanned keywords we automatically captured exactly who outranks us, for no extra cost. Aggregated across the run, it shows who we actually compete with in the results, not who we assume. Google and Reddit are informational noise to filter out; the real product rivals that keep taking page one are SEOptimer, Seobility, Semrush, and Ahrefs.

Layer 2 is a separate, occasional deep positioning pass (~$0.40 in AI tokens) that benchmarks our messaging against 16 named rivals across 10 dimensions, with a second calibration pass so scores are relative and hallucinations get reconciled out.

Domains taking the #1 organic result most often (run 17)
Domain#1 organic results
seoptimer.com209
seobility.net76
support.google.com51
developers.google.com35
semrush.com20
reddit.com17
ahrefs.com11

Avoiding the keywords giants already own

This is the part that matters most and the easiest to get wrong. We did not exclude the big head terms during collection. We collected everything, then ran a separate review pass over the finished corpus to decide what was actually worth pursuing. Nothing was deleted; terms were tiered by how winnable they are for a site our size. The winnability signal is peer overlap, not raw difficulty.

What we did not chase: the head-term tier is the giant-owned space, queries like search engine optimization tool (49,500/mo, KD 65). We kept them on the board as a long game once our domain authority grows, and spent our effort on the 108 Tier 1 and Tier 2 terms where a site our size demonstrably ranks today.

Winnability tiers from the real corpus
TierRuleKeywordsWhat it means
Tier 1KD <= 30, vol >= 100, 3+ peers rank68Best targets. Multiple peers already rank, low difficulty.
Tier 2KD <= 30, vol >= 100, 2 peers rank40Strong, slightly thinner proof.
Tier 3KD 31-50, vol >= 500, 3+ peers rank30Medium difficulty, worth it for the volume.
Head termsvol >= 5,000, 5+ peers, KD 50+20Kept as a long game, NOT primary targets.

How the filtering narrowed the funnel

The value is not the 4,842 keywords. It is the funnel.

  • 4,842 captured (seeds + free autocomplete + paid related)
  • 1,165 cleared the volume floor (>= 30/mo), the only ones we paid to analyze deeply
  • 651 had real traffic (>= 100/mo)
  • 97 sat in the 800-1,600/mo sweet spot, the editorial shortlist we actually write for

The AI-search signal most keyword tools ignore: 639 of these queries already trigger a Google AI Overview, so we know which pages must be written to be extracted and cited, not just ranked.

Coverage against our existing site

From the same run, every keyword mapped to one of three states against our current pages:

  • 1,035 covered (a page already targets it well)
  • 3,206 partial (we touch it but no page owns it: consolidate or strengthen)
  • 601 gaps (real demand, zero coverage: new content)

What the whole program cost

Eleven runs against stackra.app, from the first 100-keyword probe to the 4,800-keyword full builds. The figures are upper bounds; real spend was lower because caching is not subtracted in the estimate.

Total: under ~$19. The takeaway: a competitor-grade keyword strategy is a coffee-money line item, not a SaaS subscription, if you gate spend on volume and batch your calls.

Every run, with upper-bound cost
DateKeywords capturedEst. cost (upper bound)
Apr 30100$0.62
May 1 (x3)107 / 121 / 136$0.43 / $0.47 / $0.50
May 7 (first full build)3,752$3.52
May 83,180$1.20
May 123,183$1.28
May 133,183$1.20
May 14571$3.05
May 15 (canonical)4,842$3.10
May 31 (refresh)571$3.41

Results so far, early and honest

Eight weeks in, the data shows a leading-indicator lift, not a traffic win yet. Read straight from Search Console:

  • Visibility roughly quadrupled. Daily Google impressions rose from about 70 in early April to about 270 in the last week of May, with the jump starting around May 24, roughly 10-17 days after the May 7 and May 15 corpus builds.
  • Average position settled in the low 40s. It reads as worse than late April (near 15-20), but that is the footprint-expansion artifact: the site now appears for a far wider, harder set of queries that land mid-page and pull the average down.
  • Clicks have not moved. About 14 in April, 16 in May, which at this volume is noise. Position ~40 is not click range, so flat clicks are expected.

The honest read: the pipeline did its first job, expanding what Google surfaces us for by about 4x. Turning that visibility into clicks is the next phase. These figures track with the May builds but are not isolated from normal indexing and domain-age effects, so treat them as correlation, not proof of ROI.

Why this beats buying an all-in-one tool

Three reasons the pay-per-call approach wins for a small team:

  • You only pay for the keywords that clear your own volume floor, not a flat monthly fee.
  • You capture the AI-search layer (AI Overview citations, PAA sources) that most SMB-tier tools do not expose.
  • The corpus is yours, mapped to your pages, and re-runnable for about a dollar within the 14-day SERP cache window.

Methodology and verification

Every number in this case study comes from real DataForSEO billing and Google Search Console data for stackra.app across eleven runs between April 30 and May 31, 2026.