Keyword Research Tools
Discover the tools that reveal search volume, difficulty and related terms.
Keyword tools tell you what people actually search for and how hard each term is to rank for.
Free tools
- Google Search Console - shows queries you already rank for.
- Google autocomplete & People Also Ask - real phrasing from users.
- Google Keyword Planner - volume ranges (aimed at advertisers).
Paid tools
- Ahrefs, Semrush, Moz - volume, keyword difficulty, and competitor gaps.
Metrics to read
- Search volume - monthly searches.
- Keyword difficulty - how hard the top results are to beat.
- Relevance - does it match your product and intent?
Example
# Mine free keyword ideas straight from Google
# Type your seed term and read the autocomplete suggestions:
seo tips for ...
seo tips for beginners
seo tips for small business
seo tips for wordpressWhen to use it
- An SEO analyst uses Google Keyword Planner to validate that 'cloud storage for small business' has enough monthly search volume before committing resources to a content piece.
- A content team uses Ahrefs Keywords Explorer to identify which related terms have lower keyword difficulty so junior writers can realistically rank faster.
- A startup uses Google Search Console's performance report as a free keyword tool to find existing queries it ranks on page 2 and can push to page 1.
More examples
Search Console API: page 2 opportunities
Queries ranking on page 2 are quick-win candidates: the page already has some authority, and focused optimisation can push it to page 1.
# Find queries where average position is 11-20 (page 2 — quick wins)
curl -s -X POST \
'https://searchconsole.googleapis.com/v1/sites/https%3A%2F%2Fexample.com/searchAnalytics/query' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"startDate": "2024-01-01", "endDate": "2024-03-31",
"dimensions": ["query"],
"rowLimit": 100
}' | python3 -c "
import sys, json
rows = json.load(sys.stdin).get('rows', [])
for r in rows:
if 11 <= r['position'] <= 20:
print(f"{r['position']:.1f} {r['clicks']}c {r['keys'][0]}")
" | sort -nAhrefs API: low-difficulty related terms
Filtering keyword ideas by difficulty threshold surfaces realistic ranking targets when building a content roadmap for a newer domain.
# Fetch keyword ideas with KD < 30 for a seed keyword
curl -s \
"https://apiv2.ahrefs.com/?target=cloud+storage+for+small+business\
&mode=phrase_match&output=json&from=keywords_explorer&kd_max=30&token=YOUR_TOKEN" \
| python3 -c "
import sys, json
data = json.load(sys.stdin)
for kw in data.get('keywords', [])[:10]:
print(kw['keyword'], '| KD:', kw['difficulty'], '| Vol:', kw['volume'])
"Export Google Trends comparison
Comparing a head term against a long-tail variant in Trends shows relative search interest over time, helping prioritise content timing.
# Use pytrends to compare keyword interest over time
python3 - << 'EOF'
from pytrends.request import TrendReq
pt = TrendReq(hl='en-US', tz=360)
pt.build_payload(
kw_list=['cloud storage', 'cloud storage for small business'],
timeframe='today 12-m'
)
df = pt.interest_over_time()
print(df.tail(4).to_string())
EOF
Discussion