SERP Title Keyword Extractor
Extract keyword fragments from organic result titles with FuzzyWuzzy similarity scoring and Altair frequency charts.
#about
Uses ValueSERP API to analyse titles from up to 100 organic results (not People Also Ask).
Normalises title text, explodes by delimiters (/, -, :, &, ,), counts fragment frequency, and scores similarity with FuzzyWuzzy.
Filters single-word results and applies a minimum frequency threshold (1-10, default 2).
Visualises with Altair bar charts.
Streamlit app
- Platform
- Browser-based (no installation required)
- Input
- ValueSERP API keySeed keyword
- Output
- CSV with extracted keywords and frequency chart
- Category
- Keyword Research
Use cases
- Finding content gap keywords from SERP patterns
- Extracting common phrases competitors use
- Identifying keyword optimisation opportunities
#features
- Extracts keyword fragments from organic result titles, split on / - : & and ,
- One ValueSERP search per run (100 free searches on the free tier)
- Configurable results analysed (10-100, default 20)
- Minimum frequency slider (only filters reliably at the default of 2)
- 8 locations and Desktop/Mobile/Tablet device selection
- FuzzyWuzzy partial_ratio similarity against the seed keyword
- Altair interactive bar chart of fragment frequency
#how-to-use
- Enter ValueSERP API key
- Input seed keyword and select location/device
- Set results count and minimum frequency
- View frequency chart and sortable table
- Download CSV with keywords and similarity scores
#faq
- Where do the extracted keywords actually come from?
- From organic result page titles only, not People Also Ask, descriptions or page content. Titles are lowercased, the delimiters / - : & and , are converted to a common separator, and each title is split into fragments. Fragments containing '...' (truncated titles) are dropped.
- Why are hyphenated terms like 't-shirt' split apart?
- The hyphen is treated as a title delimiter (many titles use ' - Brand' separators), so any hyphenated compound is split into separate fragments. 't-shirt' becomes 't' and 'shirt' before frequency counting.
- Does raising the minimum frequency slider filter out everything below it?
- Not quite. The filter removes only rows whose frequency exactly equals the slider value minus 1. At the default of 2 that works as expected (frequency-1 rows are dropped), but at 3 or higher, rows with lower frequencies slip back in. The same exact-match logic is used for the single-word filter, so it too only behaves as intended at the default setting.
- What is the similarity column?
- A FuzzyWuzzy partial_ratio score (0 to 100) comparing your seed keyword against each extracted fragment. High scores mean the fragment contains most of your seed term; low scores surface tangential phrases competitors put in their titles.
- How many API credits does one run use?
- A single ValueSERP search request per run, regardless of whether you analyse 10 or 100 results. ValueSERP's free tier includes 100 searches, which the app notes is plenty for testing.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.