Reddit Keyword Research in Python: Mining Autocomplete for Threads Nobody Has Answered
People type 'reddit' into Google before they type anything else — and autocomplete remembers every one of those searches. This post shows how to turn that free signal into a keyword pipeline: the zens-ink reddit_blueocean tool queries Google Autocomplete for reddit-prefixed variants of your seed keyword, scores each one for commercial intent and competition (formula included, it's three lines of arithmetic), and surfaces the queries where demand exists but no good answer ranks yet. Real output from two live runs ('seo tools' → 3 blue ocean queries, 'note taking app' → 7, all low competition). Plus the supply-side layer: when the Reddit API is reachable, the same tool scores individual posts by traffic-signal-vs-engagement gap — high traffic with <20 upvotes means Google sends readers and nobody answered. Also covered: why the tool still works when Reddit's API returns 403 (layered fallback by design), what autocomplete can and cannot tell you, and the two ways to act on a blue ocean query: build the content page, or answer the thread yourself.
TL;DR — "reddit best X" typed into Google is a keyword class of its own: real demand, commercial intent, and a SERP where thin forum threads still outrank polished content. The zens-ink package ships reddit_blueocean, a zero-dependency tool that mines Google Autocomplete for reddit-prefixed variants of any seed keyword and scores each query with a three-line formula: (commercial ? 3 : 1) - competition, anything ≥2 is blue ocean. Live runs: "seo tools" produced 3 qualifying queries ("reddit best free seo tools", "best ai seo tools reddit"), "note taking app" produced 7 including device-specific long-tails ("reddit best note taking app ipad/android/windows/mac") — all low competition. When the Reddit API cooperates, a second layer scores actual threads for the traffic-without-answers gap. When it 403s, the demand layer keeps working, because the two layers never depended on each other.
Type “best note taking app” into Google and watch the autocomplete. Within a few characters, Google suggests “best note taking app reddit” — not because Google loves Reddit, but because so many people append “reddit” to that query that the suggestion engine ranks it first. Every one of those suggestions is a real search pattern, repeated enough times for Google to memorize it.
That’s a keyword class hiding in plain sight. “reddit best free seo tools” is not the same keyword as “best free seo tools” — it’s a stricter version of it, where the searcher has explicitly rejected SEO-optimized review sites and demanded first-hand experience. Since Google’s helpful-content direction started rewarding exactly that, forum threads rank prominently for these queries, and the competition on the other side of the SERP is other forum posts — not Wirecutter.
The zens-ink package (v1.4.8+, pip install zens-ink) ships a tool for exactly this: reddit_blueocean. Zero dependencies, runs on stdlib, no API key required for the layer that matters most.
The demand layer: autocomplete remembers what people search
The first layer is almost embarrassingly simple, which is why it works:
python3 -m zens_ink.reddit_blueocean "note taking app" --niche saas
The tool queries Google Autocomplete with reddit-prefixed and reddit-suffixed variants of the seed (“reddit best note taking app”, “best note taking app reddit”, and permutations), collects every distinct completion, classifies each for commercial intent (best / alternatives / vs / review / free), estimates competition, and scores. Here is actual output from that run:
GOOGLE REDDIT DEMAND (Layer 1 — Autocomplete)
============================================================
Blue ocean queries (high demand + low competition):
$ BO= 3 | low | reddit best note taking app
$ BO= 3 | low | reddit best note taking app ipad
$ BO= 3 | low | reddit best note taking app android
$ BO= 3 | low | reddit best note taking app windows
$ BO= 3 | low | reddit best note taking app for android
$ BO= 3 | low | reddit best note taking app mac
$ BO= 3 | low | reddit best note taking app for students
Seven qualifying queries from one seed. Note the shape of what came back: one head query plus six long-tails that autocomplete handed over unprompted — device splits (ipad/android/windows/mac) and an audience split (for students). You did not brainstorm those variants. Searchers did, over years, and Google kept the receipts.
The $ marks commercial intent. The score is deliberately dumb, three lines of arithmetic:
score = (3 if commercial else 1) - {"low": 0, "medium": 1, "high": 2}[competition]
blue_ocean = score >= 2
Commercial queries get 3, everything else gets 1. Competition estimate subtracts 0 to 2. A commercial query with low competition scores 3; an informational one needs low competition to scrape past the threshold at all. This is a filter, not a metric — its job is to rank candidates, not to model reality.
A seed with more competition
Same tool, harsher seed:
python3 -m zens_ink.reddit_blueocean "seo tools" --niche saas
Blue ocean queries (high demand + low competition):
$ BO= 3 | low | reddit best free seo tools
$ BO= 3 | low | best ai seo tools reddit
$ BO= 2 | medium | reddit best seo tools
“seo tools” as a bare query is a bloodbath — the head term belongs to G2 lists and decade-old domains. But the reddit-prefixed slice still has low-competition corners: “reddit best free seo tools” and “best ai seo tools reddit” both qualify at BO=3. The head of the reddit variant (“reddit best seo tools”) is already medium — which is itself useful signal, it means the reddit-SERP for this niche has begun filling in.
The supply layer: posts Google sends traffic to that nobody answered
Demand queries tell you what people search. The second layer looks at the other side: individual Reddit threads, scored for the gap between traffic and answers.
When the Reddit API is reachable, the tool pulls posts from auto-discovered subreddits and scores each one:
score = traffic_signal * 3 + commercial_bonus + age_bonus - engagement_penalty
The interesting posts are the ones with traffic_signal set — meaning the thread’s query shows up in the autocomplete demand data, so Google is plausibly sending it readers — but fewer than 20 upvotes, meaning almost nobody saw or answered it. High traffic, no engagement: readers arrive, find a question, find no answer, and leave. That gap is the cheapest distribution you will ever find. One thoughtful reply, or one content page aimed at the query, and you are the only answer in a thread Google is already ranking.
When I ran the tool for this post, Reddit’s API returned 403 Blocked — rate limits and blocks are a fact of life for undocumented endpoints. Here is what the tool printed:
[warn] Reddit API failed: HTTP Error 403: Blocked
============================================================
Reddit Blue Ocean Report: "seo tools"
============================================================
Subreddits: (API unavailable — Google demand only)
...
Blue ocean total: 3
It delivered the full demand-side report anyway. That is not an accident — the two layers share nothing, so an API outage halves the report instead of killing it. The demand layer needs no key and effectively never blocks; the supply layer is the bonus round.
What to do with a blue ocean query
Two plays, different time-to-signal:
Answer the thread. Find the live thread matching the query, write the answer the missing replier should have written. Time-to-signal: hours to days. The thread is already ranking; you are adding the missing answer, not creating ranking. For “reddit best free seo tools”, this means an actual comparison from actual use — tools tried, what broke, what stuck. Reddit’s audience punishes marketing copy on sight, which is precisely why the gap exists.
Build the content page. Own the query on your own domain. The SERP for reddit-prefixed queries mixes forum threads with regular pages, and the forum results are often thin — a 40-upvote thread with three replies is beatable by a page with real testing in it. Time-to-signal: weeks. Before committing, score the query properly with kd_analysis (SERP-composition based difficulty, covered here) — autocomplete said “low competition”, the actual SERP gets a vote too.
The honest sequence is answer-first: reply in the thread this week, learn what the audience actually asks, then build the page with those objections baked in. The reply is research that pays for itself.
What autocomplete cannot tell you
Worth being precise about the limits, because keyword tools that oversell get people burned:
- Autocomplete proves existence, not volume. A suggestion means “many people searched this”, where “many” is uncalibrated. Do not multiply BO scores by anything.
- Competition estimates are heuristic. The low/medium/high classification is derived from query shape, not from a live SERP crawl. It is a triage layer;
kd_analysisis the diagnostic layer. Run both before investing a week of content work. - Autocomplete skews commercial and question-shaped. Purely informational research queries surface less. For those, the standard keyword research pipeline is still the right tool — reddit_blueocean is a specialized detector for one query class, not a replacement.
One seed keyword, two commands, zero API keys, and a candidate list that would take an afternoon of manual “reddit + keyword” Googling to compile badly. The rest of the pipeline — scoring the SERP, checking what actually ranks, generating the content brief — is what the other 19 tools in the package are for. If you’d rather have an agent run this loop than type it yourself, the MCP server exposes every tool over JSON-RPC, this one included.
FAQ
Why do reddit-prefixed queries matter for keyword research?
Because the prefix is a user-generated demand signal. When someone types 'best note taking app reddit' into Google, they have explicitly rejected generic review sites and asked for first-hand experience — that intent is stronger than the same query without 'reddit'. Google's autocomplete surfaces these variants for free, no API key required, and each suggested completion represents real historical searches. Since Google's helpful-content updates started rewarding first-hand experience, forum threads rank prominently for these queries, which means a well-aimed answer or content page competes against other forum posts rather than against established review domains.
How is the blue ocean score calculated?
For demand-side queries, the score is (3 if commercial else 1) minus a competition estimate (low=0, medium=1, high=2), and any query scoring ≥2 qualifies as blue ocean. Commercial intent is detected from keywords like best, alternatives, vs, review, free in the query. For supply-side posts, the score is traffic_signal × 3 + commercial_bonus + age_bonus − engagement_penalty — designed to surface posts Google sends traffic to that have fewer than ~20 upvotes, meaning readers arrive and find no answered question.
What happens when the Reddit API is blocked or rate-limited?
The tool degrades gracefully by design. It has two independent layers: the Google Autocomplete demand layer (which needs no API key and is very rarely blocked) and the Reddit post layer. If Reddit returns 403 or times out, the tool prints a warning, skips post discovery, and still delivers the full demand-side report. The two layers were deliberately built not to depend on each other — an API outage halves the report instead of killing it.
What are the limits of autocomplete-based keyword mining?
Autocomplete tells you that demand exists, not how much. It is a qualitative signal — Google only suggests completions with meaningful search history, but it never exposes volumes, and Bing's keyword volume endpoint covers Bing's index, not Google's suggestion corpus. Treat autocomplete findings as candidates, then validate the winners: check SERP composition for the query (the kd_analysis tool scores this), and confirm the Reddit threads ranking for it actually have an answer gap. Also expect autocomplete to skew toward question-shaped and product-shaped queries — it under-represents purely informational research.
Want to run this analysis on your own site?
ZensInk Pro automates this pipeline. One command, from seed keywords to content plan.
Get Pro →