Website Content Extractor

Clean public docs, pricing, product, policy, and help-center pages into markdown or text. Use it as a bounded source step for content QA, indexability checks, and RAG datasets — not as a ranking tool or a full-site crawler. For news, blog, newsroom, or press URLs, use Article Content Extractor.

From $9.00 per 1,000 results

Open Website Content Extractor on Apify

Website pages versus article pages

Use this page when the URLs are broad site pages: documentation, product, pricing, policy, or help-center. Use Article Content Extractor when the URLs are article-shaped and you need headline, byline, publish date, excerpt, and hero image.

Website Content Extractor Article Content Extractor
Intent Clean docs, product, pricing, policy, and help-center HTML Parse news, blog, newsroom, and press article pages
Max URLs 200 per run 300 per run
Output format markdown (default), text, or html markdown (default) or text — no HTML emit
Sample row web_content article
Optional extras includeMetadata, maxChargeUsd includeImages, generateReport, emitExport

Neither Actor is a ranking tool, a full-site crawler, or a legal-advice product. Fetch public HTTP(S) URLs you own or are authorized to audit. Respect site policies, rate limits, and robots guidance where applicable.

Use cases

Route news, blog, and article URLs to Article Content Extractor. This Actor is for broad site pages (max 200 URLs).

Docs and pricing extraction

The default path delivers cleaned source rows. Start with a short urls list. outputFormat defaults to markdown. includeMetadata defaults to true.

{
  "urls": [
    "https://example.com/docs",
    "https://example.com/pricing"
  ],
  "outputFormat": "markdown",
  "includeMetadata": true,
  "delivery": "dataset",
  "maxChargeUsd": 1,
  "dryRun": false
}

Published output fields: rowType, url, title, markdown, text, wordCount, metadata, sourceUrl, and fetchedAt. Sample rowType is web_content. README sample (placeholder page data):

{
  "meta": {
    "actorName": "website-content-extractor",
    "actorTitle": "Website Content Extractor",
    "bundle": "Site QA & Content Intelligence Pack",
    "fetchedAt": "2026-05-06T00:00:00.000Z",
    "totalRows": 1
  },
  "rows": [
    {
      "actorName": "website-content-extractor",
      "rowType": "web_content",
      "url": "https://example.com/docs",
      "title": "Example Docs",
      "markdown": "# Example Docs\nUseful content.",
      "wordCount": 240,
      "sourceUrl": "https://example.com/docs",
      "fetchedAt": "2026-05-06T00:00:00.000Z"
    }
  ],
  "warnings": []
}

Rows also include warnings when a source is partial, and stable IDs when the workflow supports recurring change detection. This Actor returns bounded source rows. It does not emit a Site QA or RAG report; those are separate follow-on Actors on the Store page.

Run a docs extraction on Apify

What pages is Website Content Extractor for?

Public docs, product, pricing, policy, and help-center or knowledge-base pages. Pass HTTP(S) URLs you own or are authorized to fetch. Maximum 200 URLs per run. For news, blog, or article URLs, use Article Content Extractor.

What does a result row contain?

Cleaned page content as markdown, plain text, or HTML, plus title, optional metadata (description, author, language, published date when present), word count, source URL, fetch timestamp, and warnings for partial fetches. Sample rowType is web_content. The published README field list is rowType, url, title, markdown, text, wordCount, metadata, sourceUrl, and fetchedAt.

How do I start a run?

Open the Actor on the Apify Store and supply a urls list. outputFormat defaults to markdown. includeMetadata defaults to true. delivery defaults to dataset; set webhook plus webhookUrl after the payload shape is useful. dryRun validates without dataset or webhook writes. maxChargeUsd defaults to 1. Published input also includes concurrency (default 5) and timeoutMs (default 15000).

Start a run on Apify

When should I use Article Content Extractor instead?

When the URLs are news, blog, newsroom, or press pages and you need article body, byline, publish date, excerpt, and hero image. Website Content Extractor is the broader HTML cleaner for site pages that are not article-shaped.

How is Website Content Extractor priced?

Billing is pay-per-event. The published Store price is $0.001 per Actor start and $0.009 per useful content row ($9.00 per 1,000 results). Failed or no-content rows should stay out of the default dataset. maxChargeUsd defaults to 1; billable rows beyond that cap are returned as no-charge limit_reached summaries. Dry runs, validation-only runs, missing-key warnings, and unchanged recurring polls should not write payable default-dataset rows. The default dataset is the billable surface.

From $9.00 per 1,000 results

See Website Content Extractor pricing on Apify

How do delivery, webhooks, dry runs, and the charge cap work?

delivery defaults to dataset. A non-dry-run always writes canonical dataset rows first; webhook delivery runs only after dataset and pay-per-event output succeed. webhookUrl is used when delivery is webhook and is skipped on dryRun. dryRun validates the setup and writes only local output. maxChargeUsd is a safety cap for billable rows on the run.

{
  "urls": [
    "https://example.com/help"
  ],
  "outputFormat": "markdown",
  "delivery": "webhook",
  "webhookUrl": "https://example.com/webhook",
  "dryRun": false
}

Open Website Content Extractor on Apify

Related pages