Webpage Keyword Density - Main-Content SEO + Cloud Weights avatar

Webpage Keyword Density - Main-Content SEO + Cloud Weights

Pricing

from $1.60 / 1,000 analyzed pages

Go to Apify Store
Webpage Keyword Density - Main-Content SEO + Cloud Weights

Webpage Keyword Density - Main-Content SEO + Cloud Weights

Keyword density of any URL's MAIN content (nav/footer boilerplate stripped first): ranked unigrams + bigrams + trigrams with density %, plus 1-100 word-cloud weights. Up to 50 URLs per run. $0.002 per page vs $0.011-$0.093 measured incumbents; HTTP errors never charged. Extraction scope reported.

Pricing

from $1.60 / 1,000 analyzed pages

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Webpage Keyword Density — Main-Content SEO Analysis + Word-Cloud Weights

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}weight is 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)
  • extractionusedScope + 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.usedScope always 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) or urls (array)
  • Returns: one record per URL; topKeywords/topBigrams/topTrigrams + extraction summarize it
  • Bounded: 50 URLs per run, topN up 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
  • Pay with x402, without an Apify account. This Actor is whitelisted for agentic payments, so an agent holding USDC on Base can buy a prepaid token and spend it here. The minimum purchase is $1, the token balance is an absolute spending cap, and it expires 14 days after purchase.
  • 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.