Keyword Density Checker - Words, Bigrams & Trigrams per Page
Pricing
from $1.60 / 1,000 analyzed pages
Keyword Density Checker - Words, Bigrams & Trigrams per Page
Checks keyword density on one page URL or up to 50, after stripping nav, footer and boilerplate. Returns top keywords and 2-word and 3-word phrases with counts, density % and 1-100 word-cloud weights; failed fetches are free. For SEO writers, content editors, agencies and marketers.
Pricing
from $1.60 / 1,000 analyzed pages
Rating
0.0
(0)
Developer
Broke to Built
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
14 days ago
Last modified
Features
Share
Webpage Keyword Density — Main-Content SEO Analysis + Word-Cloud Weights
Send a URL, get the most used words and 2- and 3-word phrases in its main content with density %, after navigation and footer text is stripped.
| You give it | You get back | You pay (Free plan) |
|---|---|---|
| One URL or a list of up to 50 | Word count, top keywords and phrases with count, density % and 1-100 word-cloud weight | $0.002 per page |
Pay per result only: no subscription, no start fee. Unreachable pages and HTTP errors are not charged. Paid Apify plans get Store discounts on the price above.
Example: try it in one click
The input form is already filled in with this example. Press Start and you get the output below.
{"url": "https://en.wikipedia.org/wiki/Search_engine_optimization"}
Real output from that exact input (run on 2026-09-24; long arrays shortened to a few entries and long text cut for display):
[{"url": "https://en.wikipedia.org/wiki/Search_engine_optimization","ok": true,"status": 200,"extraction": {"usedScope": "main","boilerplateBlocksRemoved": 6},"wordCount": 3371,"totalTokens": 5506,"topKeywords": [{"term": "search","count": 183,"densityPct": 5.429,"weight": 100},{"term": "google","count": 84,"densityPct": 2.492,"weight": 46}],"topBigrams": [{"term": "search engine","count": 69,"densityPct": 2.047},{"term": "search engines","count": 33,"densityPct": 0.979}],"topTrigrams": [{"term": "search engine optimization","count": 14,"densityPct": 0.415},{"term": "search engine watch","count": 10,"densityPct": 0.297}]}]
What does this page actually rank for? Fetch any URL and get keyword density of its main content — nav, header, footer and sidebar boilerplate stripped first, semantic <main>/<article> preferred — as ranked unigrams, bigrams and trigrams with exact density percentages, plus 1-100 weights ready to feed a word-cloud renderer. Up to 50 URLs per run, online, by API, or as an agent tool via Apify MCP.
The extraction step matters: run density on a raw page and "menu", "login" and "privacy policy" pollute the table. Here the percentages describe the content search engines index — and every record reports which region was analyzed.
Analyzing pasted text for topical phrases instead? Use our sibling Text Keyword Extractor — RAKE phrase extraction, no fetching, cheaper per item.
What you get
- topKeywords — unigrams:
{term, count, densityPct, weight}—weightis 1-100 scaled to the top term, plug it straight into any word-cloud library - topBigrams / topTrigrams — multi-word phrases with counts + density percentages (the real SEO signal)
- extraction —
usedScope+boilerplateBlocksRemoved: proof of what was analyzed - wordCount / totalTokens of the extracted content
- Fail-soft: an unfetchable URL or HTTP error page never fails the run —
{ok: false, error}, never charged.
Input
{ "url": "https://yoursite.com/landing-page", "topN": 30, "minLength": 3 }
Bulk: { "urls": ["...", "..."], "maxUrls": 50 }
Output (real run, trimmed)
{"url": "https://en.wikipedia.org/wiki/Search_engine_optimization","ok": true,"extraction": { "usedScope": "main", "boilerplateBlocksRemoved": 6 },"wordCount": 3400,"topKeywords": [{ "term": "search", "count": 112, "densityPct": 3.294, "weight": 100 },{ "term": "seo", "count": 54, "densityPct": 1.588, "weight": 48 }],"topBigrams": [{ "term": "search engine", "count": 71, "densityPct": 2.088 }],"topTrigrams": [{ "term": "search engine optimization", "count": 21, "densityPct": 0.617 }]}
Pricing
$0.002 per page analyzed — fetch + main-content extraction + all three n-gram tables + weights. No start fee. Unfetchable and error pages are never charged.
Measured against store incumbents (2026-08-07): easyapi/keyword-density-checker charges $0.09 start + $0.00299 per item, andok/keyword-density-analyzer $0.01 start + $0.001 per item. One page here costs $0.002 vs $0.011-$0.093 there.
Honest limits
- Static HTML fetch — JS-rendered pages (empty-shell SPAs) yield little text and report low word counts honestly.
- Main-content extraction is heuristic (semantic tags + boilerplate removal, no headless browser); div-soup pages fall back to whole-body-minus-boilerplate —
extraction.usedScopealways says which happened. - English stopword list; density on other Latin-script languages works, but stopword filtering is English-tuned.
- Density describes the page as served — it is a diagnostic, not a target ("2% keyword density" folklore is not a ranking factor; the bigram/trigram tables showing what the page emphasizes are the useful part).
FAQ
How is this different from your Text Keyword Extractor? This owns the URL problem: fetching, HTTP handling, main-content extraction, density percentages against the page's word count, and n-gram tables. The text sibling does RAKE phrase extraction on text you already have.
Can I build a word cloud from this?
Directly — topKeywords[].weight is the normalized 1-100 size value cloud renderers take. No separate word-cloud tool needed.
Why bigrams and trigrams? Single-word density is noise for SEO; "search engine optimization" appearing 21 times is signal. Phrase tables show what the page actually emphasizes.
Can I compare my page against a competitor's? Run both URLs in one batch and diff the tables — that is the fastest content-gap check there is.
Why did some rows come back ok: false?
DNS/timeout failures or HTTP 4xx/5xx — error pages are not analyzed. Recorded, never charged.
Use from code or AI agents
curl -s "https://api.apify.com/v2/acts/EliAI~webpage-keyword-density/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-X POST -H 'Content-Type: application/json' \-d '{"urls": ["https://yoursite.com/page", "https://competitor.com/page"]}'
Agents: connect Apify MCP and call the EliAI/webpage-keyword-density tool.
- Capability: fetch URLs, extract main content, compute uni/bi/tri-gram keyword density + word-cloud weights
- Required input:
url(string) orurls(array) - Returns: one record per URL;
topKeywords/topBigrams/topTrigrams+extractionsummarize it - Bounded: 50 URLs per run,
topNup to 200; failures isolate per URL - Side effects: none (one GET per page)
For AI agents
This Actor is built to be called by software, not just by people.
- Mount it directly as an MCP tool — no Store search, no ranking, just this one tool:
https://mcp.apify.com/?actors=eliai/webpage-keyword-density - Or call it over HTTP and get the results in the same request:
POST https://api.apify.com/v2/acts/eliai~webpage-keyword-density/run-sync-get-dataset-items - Costs are predictable before you call. Pricing is pay-per-event (see Pricing above), so an agent can budget a run in advance instead of discovering the bill afterwards.
- Send only the field you mean. If you pass the bulk field, it is used on its own; the single-value field is a fallback, never merged into your request. You are charged for the items you sent and nothing else.
Who uses it
- SEO writers checking which bigrams and trigrams dominate a competitor's ranking page
- Content editors spotting over-repeated terms in a draft after it goes live
- Agencies comparing main-content keyword density across the top pages for a query
- Designers generating word clouds for a page from the returned 1-100 weights
- Marketers checking a landing page mentions its target phrase, excluding nav and footer text
Changelog
- 2026-11-01: Page text only: the "Try it" block is now headed Example. Code, output and price are unchanged.
- 2026-09-24: New summary at the top of this page: what you send, what you get, the price, and a real output from the prefilled example.