Hosted: https://api.fastcrw.com · Self-hosted: http://localhost:3000
Auth (hosted only): Authorization: Bearer $CRW_API_KEY
Self-hosted: no auth required by default. See configuration.
{
"url": "https://example.com",
"formats": ["markdown", "html", "rawHtml", "plainText", "links", "screenshot"],
"renderer": "http",
"onlyMainContent": true,
"waitFor": 0
}
formats defaults to ["markdown"]. renderer
accepts "http", "chromium", or "lightpanda";
omit it to let CRW auto-select. waitFor is milliseconds before
capture (browser renderers only).
{
"success": true,
"data": {
"markdown": "# Example Domain\n\n...",
"html": "<h1>Example Domain</h1>...",
"rawHtml": "<!doctype html>...",
"links": ["https://www.iana.org/domains/example"],
"metadata": {
"title": "Example Domain",
"description": "...",
"sourceURL": "https://example.com",
"statusCode": 200
},
"renderDecision": "http",
"creditCost": 1
}
}
# Run with: python3 scrape.py
import os, requests
resp = requests.post(
"https://api.fastcrw.com/v1/scrape",
headers={"Authorization": f"Bearer {os.environ['CRW_API_KEY']}"},
json={"url": "https://example.com", "formats": ["markdown", "links"]},
timeout=60,
)
resp.raise_for_status()
body = resp.json() # {"success": true, "data": {...}}
print(body["data"]["markdown"][:500])
print("links:", body["data"].get("links", []))