SiteVerdict — Keyword Clustering Tool (SERP, AI, GSC) avatar

SiteVerdict — Keyword Clustering Tool (SERP, AI, GSC)

Pricing

Pay per event

Go to Apify Store
SiteVerdict — Keyword Clustering Tool (SERP, AI, GSC)

SiteVerdict — Keyword Clustering Tool (SERP, AI, GSC)

Turn keyword lists or a Search Console export into topic clusters (one cluster = one page). Free built-in lexical grouping needs no key. Optional SERP-overlap or embedding grouping with your own Serper/SerpApi or OpenAI key. Intent labels, pillar map, cannibalisation flags, CSV export.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Aman Thakran

Aman Thakran

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

Share

SiteVerdict — Keyword Clustering Tool (SERP, AI, GSC)

Turn a messy keyword list into a content plan: one cluster = one page. Paste keywords, a Search Console Queries export, or a Semrush/Ahrefs/Keyword Planner CSV. You get topic clusters, a search-intent label per keyword and per cluster, the page type to build, a pillar → cluster map, and cannibalisation flags where your site already ranks with several URLs.

Choose the method:

MethodNeedsBest for
SERP overlapYour Serper.dev or SerpApi keyThe most accurate: keywords that share ≥ 3 of Google's top-10 URLs can rank with one page. SERPs are cached for 30 days, so re-runs don't pay twice.
EmbeddingsYour OpenAI keyFast semantic grouping of large lists (synonyms, paraphrases).
LexicalNothing (free, offline)Quick first pass. Groups keywords by shared stemmed topic words.

Three ways people use it

  1. Content plan from GSC. Export Queries from Search Console and paste the CSV. Clusters with cannibalisationRisk show where 2+ of your pages compete for the same topic.
  2. Agency keyword research. Cluster 5,000 keywords by SERP overlap. Hand the client CLUSTERS-CSV: one row per page to create, with intent, page type and total demand.
  3. AI-labelled briefs. Turn on AI labels with your own key to get a human label and a one-line brief per cluster.

Example (sample mode: 17 GSC queries, SERP method, abridged)

{ "type": "cluster", "cluster": 1, "head": "best running shoes", "pillar": "running shoes", "size": 2,
"keywords": ["best running shoes", "best running shoes for flat feet"], "intent": "commercial",
"suggestedPageType": "comparison / \"best X\" listicle / review", "totalImpressions": 11700 }
{ "type": "cluster", "head": "marathon training plan", "keywords": ["marathon training plan", "16 week marathon training plan", "beginner marathon training plan"], "intent": "informational" }

Intent labels

Labels are informational, commercial, transactional, navigational (your brandTerms) and local ("near me"). They come from modifier rules, and in SERP mode they are refined with SERP features: shopping results → transactional, local pack → local, answer box / People Also Ask → informational. Every keyword row lists the signals used.

Output

  • Dataset: Clusters (one page each), Keywords, Summary (pillars, intent mix, cannibalisation risks, SERP calls vs cache hits).
  • Key-value store: CLUSTER-MAP (HTML pillar/cluster map), KEYWORDS-CSV, CLUSTERS-CSV, SUMMARY.

Pricing (pay per event)

EventPriceWhen
keyword-clustered$0.001Each unique keyword clustered (any method)
ai-cluster-label$0.002Each cluster labelled + briefed by your own AI key

Examples: 1,000 keywords ≈ $1.00. 10,000 keywords ≈ $10. With SERP mode, your SERP provider bills you separately (e.g. Serper.dev ≈ $0.30–1 per 1,000 searches at the time of writing). Embeddings cost cents per 10,000 keywords on your OpenAI account. Sample mode is free.

What happens when your max total charge is too small

  • Keywords come first. Before clustering, the run works out how many keywords your max total charge covers. Clustering looks at the whole set, so with a short budget the run clusters only the top N keywords by demand (volume, or impressions for GSC) that fit, and charges exactly those N. Clusters are therefore built from those N keywords only.
  • Every keyword that did not fit gets its own dataset row (type: "keyword-skipped", status: "not_processed_max_charge"). These rows are free. The run status ends with "N not processed (max total charge reached)" and SUMMARY.notProcessed = N.
  • AI labels use only what is left after the keywords. Example: max $1.00 with 1,000 keywords and AI labels on → 1,000 keywords clustered ($1.00), no AI labels; the status says how many clusters were not labelled. Max $1.10 → 1,000 keywords + 50 AI labels. The AI provider is not called for labels that can't be paid.
  • If your budget is used exactly (e.g. 50 keywords with a max of $0.05), the run is complete and is not reported as stopped.
  • SUMMARY.chargedEvents lists exactly what was charged.

FAQ

Do you scrape Google? No. SERP data comes only from the official SERP API you choose, on your own account.

Which threshold should I use? SERP overlap 3/10 is a common industry default; use 4–5 for tighter clusters. Embeddings default to 0.82 cosine similarity.

Can I use a Search Console export? Yes. Columns (Top queries, Clicks, Impressions, Position, and Page if present) are detected automatically. Impressions are used as demand when there is no volume.

Limits

  • 20,000 keywords per run (5,000 in SERP mode).
  • AI labels: at most 500 clusters per run (the 500 with the highest demand).
  • CSV files up to 20 MB.
  • Lexical clustering is English-oriented (light stemming). For other languages, use SERP or embeddings.

Sources & compliance

  • Inputs are your own keyword lists and exports. SERPs come from Serper.dev (serper.dev/terms) or SerpApi (serpapi.com/legal) on your API key. Embeddings and labels come from OpenAI / Anthropic on your API key. Terms were checked on 11 Oct 2026; you are responsible for your provider account's terms.
  • All keys are Apify secret inputs. They are redacted from logs and output, and sent only to the provider they belong to. Cached SERPs never contain keys.
  • No personal data is processed. Search queries from Search Console are aggregated by Google. Under UK GDPR/PECR, avoid uploading lists that contain personal data.
  • A CSV URL is fetched once, with an SSRF guard (public https/http only; private, loopback, link-local and cloud-metadata addresses are refused; redirects are not followed, so give the final URL).
  • Lexical mode needs no key and makes no network requests (except the optional CSV URL). SERP mode and embeddings need your own API key; nothing is clustered by SERP or embeddings without one (the run falls back to lexical and says so in the log).
  • Hosts called, and only when you turn the matching option on: google.serper.dev (Serper.dev) or serpapi.com (SerpApi) for SERPs; api.openai.com for embeddings or OpenAI labels; api.anthropic.com for Anthropic labels; your CSV URL. Those providers bill you directly under their own terms.
  • Support: hello@webrevenuescan.com.