Keyword Density Analyzer
Pricing
$4.99/month + usage
Keyword Density Analyzer
Keyword density analyzer that fetches any URL and ranks 1-, 2-, and 3-word phrases by frequency and density — giving SEO teams instant on-page keyword insights to optimize content and avoid stuffing penalties.
Keyword Density Analyzer — Extract & Rank Every Keyword and Phrase on Any Webpage
Keyword density analyzer that fetches any webpage and ranks every word and phrase by frequency and density score — giving SEO professionals, content strategists, and webmasters the on-page keyword data they need to optimize content, avoid keyword stuffing, and outrank competitors.
Point the actor at a URL and it returns a complete keyword density report covering single words, two-word phrases, and three-word phrases — the same analysis offered by tools like SEOptimer or Moz, fully automated and exportable.
Use Cases
- On-page SEO auditing — Check whether your target keywords appear at the right density before publishing or after an algorithm update
- Competitor keyword research — Analyze top-ranking pages to discover which phrases they emphasize and replicate their natural keyword patterns
- Content optimization — Identify over-optimized or under-used terms in your own content and adjust to hit the right balance
- Keyword stuffing detection — Flag pages where a keyword density exceeds healthy thresholds (typically 1–3%) before Google penalizes them
- Content gap analysis — Compare keyword distributions across multiple pages to find topics you're missing
- Agency SEO reporting — Automate keyword density reports for client pages instead of checking each one manually
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | — | Single webpage URL to analyze (e.g. https://example.com/blog/seo-tips) |
urls | string[] | — | List of webpage URLs to analyze (one per line). Combined with the single URL field. |
excludeStopWords | boolean | true | Filter common English stop words (the, and, is…) to surface only meaningful keywords |
includeMetaTags | boolean | true | Include the page title and meta description in the keyword frequency count |
minWordLength | integer | 3 | Shortest word length (in characters) to include in analysis |
minFrequency | integer | 2 | Only return keywords that appear at least this many times on the page |
maxKeywords | integer | 30 | Max number of keywords to return per category (1-word, 2-word, 3-word) |
maxUrls | integer | 10 | Maximum number of URLs to process per run (cost safeguard, hard cap: 100) |
requestTimeoutSecs | integer | 30 | Per-request timeout in seconds before the page fetch is abandoned |
timeoutSecs | integer | 300 | Overall actor timeout in seconds |
Example Input
{"url": "https://backlinko.com/seo-techniques","excludeStopWords": true,"includeMetaTags": true,"minWordLength": 3,"minFrequency": 2,"maxKeywords": 20,"maxUrls": 5,"requestTimeoutSecs": 30}
What Data Does This Actor Extract?
The actor stores one result per URL in a dataset. Each record contains a full keyword density breakdown:
{"url": "https://backlinko.com/seo-techniques","pageTitle": "17 Powerful SEO Techniques That Work In 2024","metaDescription": "These 17 proven SEO techniques are working right now. These aren't your average tips — these are advanced tactics that I use to rank #1.","totalWords": 4823,"uniqueWords": 612,"oneWordKeywords": [{ "keyword": "seo", "count": 87, "density": 1.80 },{ "keyword": "content", "count": 64, "density": 1.33 },{ "keyword": "links", "count": 51, "density": 1.06 },{ "keyword": "search", "count": 48, "density": 0.99 },{ "keyword": "google", "count": 43, "density": 0.89 }],"twoWordKeywords": [{ "keyword": "search engine", "count": 31, "density": 0.64 },{ "keyword": "seo techniques", "count": 22, "density": 0.46 },{ "keyword": "link building", "count": 19, "density": 0.39 },{ "keyword": "organic traffic", "count": 14, "density": 0.29 }],"threeWordKeywords": [{ "keyword": "search engine optimization", "count": 12, "density": 0.25 },{ "keyword": "high quality content", "count": 9, "density": 0.19 },{ "keyword": "link building strategy", "count": 6, "density": 0.12 }],"scrapedAt": "2024-11-15T10:30:22.481Z"}
Output Fields
| Field | Type | Description |
|---|---|---|
url | string | Final URL of the analyzed page (after any redirects) |
pageTitle | string | HTML <title> tag content |
metaDescription | string | Meta description tag content |
totalWords | integer | Total words on the page before filtering |
uniqueWords | integer | Unique keywords after stop-word and length filtering |
oneWordKeywords | array | Ranked single-word keywords — each with keyword, count, and density (%) |
twoWordKeywords | array | Ranked two-word phrases — each with keyword, count, and density (%) |
threeWordKeywords | array | Ranked three-word phrases — each with keyword, count, and density (%) |
error | string | Present only when a URL failed to load — contains the error message |
scrapedAt | string | ISO 8601 UTC timestamp of the analysis |
How It Works
- Fetches the page — Uses a realistic browser User-Agent and follows redirects to reach the final URL
- Cleans the HTML — Strips scripts, styles, navigation, footers, and other non-content elements so only visible text is analyzed
- Extracts keywords — Tokenizes all visible text into individual words; optionally prepends page title and meta description
- Filters noise — Removes stop words (if enabled) and words below the minimum length threshold
- Counts frequencies — Tallies every 1-, 2-, and 3-word phrase using fast in-memory counters
- Calculates density — Computes each phrase's density as a percentage of total page words
- Returns ranked results — Returns the top keywords sorted by frequency, ready for export or downstream processing
FAQ
What is keyword density and why does it matter? Keyword density is the percentage of times a specific keyword or phrase appears on a page relative to the total word count. Search engines use it as one signal to understand what a page is about. Too low and the page may not rank for that term; too high (typically above 3–4%) risks being flagged as keyword stuffing.
Which keyword density is considered healthy? Most SEO professionals target 1–3% for primary keywords and lower for secondary terms. This actor flags all densities so you can make the call — there is no single universal threshold.
Can this actor analyze JavaScript-rendered pages? This actor fetches the raw HTML response and does not execute JavaScript. For SPAs or pages that require JS rendering to display text content, some content may be missing. For fully JS-rendered pages, consider combining this actor with a JS pre-renderer.
How many URLs can I analyze per run?
By default up to 10 URLs per run. Increase the maxUrls input up to a maximum of 100. For large-scale analysis, schedule multiple runs or adjust the limit.
What languages are supported?
The stop-word list is English. For non-English pages, disable stop-word filtering (excludeStopWords: false) to get raw frequency counts for all words. The n-gram tokenizer works with any alphabetic language.
Why does the density not add up to 100%? Density is calculated per-phrase against total page words, not as a share of the keyword list. Multiple keywords can reference the same words, so the densities across all rows will exceed 100% in total.
Integrations
Connect Keyword Density Analyzer with other apps and services using Apify integrations. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use webhooks to trigger actions whenever keyword density results are ready — for example, automatically flagging pages that exceed your density threshold in a Slack channel.
