Keyword Clustering
Group a keyword's universe into topic clusters by SERP overlap.
Give a seed keyword and get back topic clusters: we expand it into its suggestion universe, fetch the Google SERP used for each, and group keywords that share ranking pages. Ideal for content planning, silo/hub-and-spoke architecture and pillar pages.
/api/v1/keywords/clustering
$0.25 / request
Use your Seonio API key instantly.
curl -X POST https://seonio.com/api/v1/keywords/clustering \
-H "Content-Type: application/json" \
-H "X-API-Key: $SEONIO_API_KEY" \
-d '{"country": "us", "keyword": "keyword research"}'
Sample response
{
"clusters": [
{
"keywords": [
{
"text": "keyword research",
"volume": 550000
},
{
"text": "keyword research tool",
"volume": 90500
},
{
"text": "free keyword research",
"volume": 33100
}
],
"name": "keyword research",
"shared_urls": [
"https://ahrefs.com/keyword-generator",
"https://moz.com/explorer"
],
"size": 3,
"volume": 673000
},
{
"keywords": [
{
"text": "long tail keywords",
"volume": 27100
},
{
"text": "long tail keyword research",
"volume": 14100
}
],
"name": "long tail keywords",
"shared_urls": [
"https://backlinko.com/long-tail-keywords"
],
"size": 2,
"volume": 41200
}
],
"country": "us",
"keyword": "keyword research"
}
Request and response
The full contract for /api/v1/keywords/clustering — what to send and what comes back.
Request body
keyword
string
required
The seed keyword to cluster, e.g. "keyword research".
country
string
optional
Two-letter ISO country code for the SERPs (default "us").
Response fields
keyword |
string |
The seed keyword that was clustered. |
country |
string |
The country the SERPs were fetched for. Supported countriesin
India
vn
Vietnam
us
United States
gb
United Kingdom
de
Germany
pk
Pakistan
bd
Bangladesh
ca
Canada
tr
Turkiye
id
Indonesia
fr
France
es
Spain
nl
Netherlands
it
Italy
au
Australia
ae
United Arab Emirates
ph
Philippines
ch
Switzerland
jp
Japan
ng
Nigeria
eg
Egypt
th
Thailand
za
South Africa
mx
Mexico
sg
Singapore
ke
Kenya
at
Austria
ma
Morocco
pl
Poland
dk
Denmark
my
Malaysia
sa
Saudi Arabia
lk
Sri Lanka
ro
Romania
gh
Ghana
fi
Finland
se
Sweden
be
Belgium
br
Brazil
ie
Ireland
bg
Bulgaria
gr
Greece
nz
New Zealand
rs
Serbia
dz
Algeria
no
Norway
hu
Hungary
ar
Argentina
pt
Portugal
cz
Czechia
|
clusters[] |
object[] |
Topic clusters, largest by volume first. |
clusters[].name |
string |
The cluster's head keyword (its highest-volume member). |
clusters[].volume |
integer |
Combined monthly search volume of the cluster. |
clusters[].size |
integer |
Number of keywords in the cluster. |
clusters[].keywords[] |
object[] |
The member keywords, each as { text, volume }. |
clusters[].shared_urls[] |
string[] |
Pages that rank across the cluster's members (the SERP overlap that grouped them). |
Code examples
Copy, paste, swap in your API key.
curl -X POST https://seonio.com/api/v1/keywords/clustering \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"country": "us", "keyword": "keyword research"}'
Playground
Run a real /api/v1/keywords/clustering request. No key? We show the real sample result so you can still inspect the shape.
Leave the API key empty to load the built-in sample response.
Request
POST /api/v1/keywords/clustering
What developers build with it
Common ways Keyword Clustering ends up in production.
Building topic clusters and content silos from one seed keyword.
Planning pillar pages and their supporting articles.
Mapping a keyword universe to information architecture.
Status codes
The same predictable contract on every endpoint.
200 |
Success. The lookup completed and was charged, even if the response is empty. |
401 |
Missing or unknown API key. |
402 |
Not enough balance on the account. |
422 |
Invalid request body (wrong shape or types). |
429 |
Account rate limit exceeded (20 requests per second). |
Other endpoints
Explore the rest of the SEO API.
Keyword Research
/api/v1/keywords/global
Volume, CPC, competition and a 12-month trend for up to 100 keywords in one call.
Keyword Countries
/api/v1/keywords/countries
Top five countries by keyword volume.
Keyword Difficulty
/api/v1/keywords/difficulty
Country-specific ranking difficulty.
Keyword Intent
/api/v1/keywords/intent
Search-intent classification.
Keyword Demographics
/api/v1/keywords/demographics
Age and gender demand distribution.
Keyword Suggestions
/api/v1/keywords/suggestions
Up to 100 related keyword ideas — each with full metrics — from one seed keyword.
Keyword Metrics by Country
/api/v1/keywords/country
Localized metrics for up to 1000 keywords in one country.
SERP
/api/v1/serp/country
Google organic results, People Also Ask and related searches for a keyword and country.
SERP Scraper
/api/v1/serp/scraper
Run a Google search and get the top results scraped to clean markdown in one call.
Scraper
/api/v1/scraper
Scrape a supported URL to clean, LLM-ready markdown in one call.
Website Traffic
/api/v1/website/traffic
Monthly organic traffic history for any domain.
Website Ranking
/api/v1/website/ranking
A domain's full ranking footprint: countries, distribution, movers, top keywords and pages.
Website Category
/api/v1/website/category
Taxonomy classification for a domain.
Website Competitors
/api/v1/website/competitors
Ordered organic competitors.
Similar Websites
/api/v1/website/similar
Traffic-ranked sites in the same category.
URL Stats
/api/v1/url/stats
Page- and domain-level authority metrics for a specific URL.
URL Keywords
/api/v1/url/keywords
Top organic keywords for one URL.
Website Stats
/api/v1/website/stats
Domain-level authority metrics for a bare domain.
Backlink History
/api/v1/backlink/history
Historical backlink counts for a domain.
Backlink Table
/api/v1/backlink/table
Detailed backlinks for a domain or URL.
SEO Page Checker
/api/v1/audit/page-checker
On-page SEO report and response timing.
FAQ
Simple answers for developers using the API.
Pricing & Balance
API & Integration
Start free
$1 testing balance • No card required • Subscribe when ready