Pricing
| Apify plan | Per result | Per 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
{
"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}'