ChimeraMiND Data
Home / Tools / Website to Markdown — Content Crawler for LLM & RAG
AI & LLM data

Website to Markdown — Content Crawler for LLM & RAG

Content Crawler turns any site into clean Markdown per page for LLMs, RAG pipelines and vector DBs — no headless browser, $1 per 1,000 pages.

Run Website to Markdown — Content Crawler for LLM & RAG on Apify →

Read the step-by-step guide

Pricing

Apify planPer resultPer 1,000
Free plan$0.001$1
Starter$0.0008$0.80
Scale$0.0007$0.70
Business$0.0006$0.60
Enterprise$0.0006$0.60
Enterprise+$0.0006$0.60

Primary event rates from a catalog snapshot; this is not the total price of a run. Additional charge events and Actor Start fees may apply; start fees can scale with memory. Check the Actor's Pricing tab on Apify for all events, conditions and current plan-specific rates, and set a maximum run budget before starting.

Sample output

Recorded example · 0 days old. This is a snapshot, not current data.run OXvSdhzQccJVnPLEd · 2026-10-18
{
  "url": "https://news.ycombinator.com/",
  "finalUrl": "https://news.ycombinator.com/",
  "statusCode": 200,
  "title": "Hacker News",
  "description": null,
  "lang": "en",
  "canonical": null,
  "markdown": "| 1. |  | RepRapMicron (github.com/vikolliver) |\n| --- | --- | --- |\n|  | 121 points by RobotToaster 1 hour ago \\| hide \\| 19 comments |  |\n| 2. |  | Will it be a golden age or a dark age for mathematics (and science)? (terrytao.wordpress.com) |\n|  | 24 points by smilelamp 43 …",
  "text": null,
  "wordCount": 711,
  "headings": [],
  "links": [
    "https://news.ycombinator.com/",
    "https://news.ycombinator.com/news",
    "https://news.ycombinator.com/newest"
  ],
  "depth": 0,
  "contentHash": "974809c9ad54cf36318814149195fa2101108c9e",
  "crawledAt": "2026-10-18T15:45:32.665Z",
  "error": null,
  "chunks": null,
  "changeStatus": null
}

Call from code

Use the existing catalog input below as a starting point. Review the tool's input form on Apify before running it.

import json
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("webdatatools/website-to-markdown").call(run_input=json.loads("{\n    \"startUrls\": [\n        {\n            \"url\": \"https://docs.apify.com/platform\"\n        },\n        {\n            \"url\": \"https://crawlee.dev/docs\"\n        }\n    ],\n    \"maxPages\": 50,\n    \"maxDepth\": 3\n}"))

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('webdatatools/website-to-markdown').call({
    "startUrls": [
        {
            "url": "https://docs.apify.com/platform"
        },
        {
            "url": "https://crawlee.dev/docs"
        }
    ],
    "maxPages": 50,
    "maxDepth": 3
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
curl -X POST "https://api.apify.com/v2/acts/webdatatools~website-to-markdown/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://docs.apify.com/platform"},{"url":"https://crawlee.dev/docs"}],"maxPages":50,"maxDepth":3}'

Related tools

Workflows