{"components":{"securitySchemes":{"bearerAuth":{"bearerFormat":"crk_*","description":"Project API key prefixed `crk_`. Mint and rotate via the dashboard.","scheme":"bearer","type":"http"}}},"info":{"contact":{"email":"support@crawlcrawl.com","name":"crawlcrawl support","url":"https://crawlcrawl.com/contact.html"},"description":"Multi-tenant crawler API. REST, JSON in / JSON out, Bearer-token auth. See https://crawlcrawl.com/api for the full reference with curl examples.","license":{"name":"Commercial","url":"https://crawlcrawl.com/terms.html"},"title":"crawlcrawl API","version":"0.4.1"},"openapi":"3.1.0","paths":{"/v1/actors/extract-article":{"post":{"operationId":"actorExtractArticle","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ url, format?: 'markdown'|'text', include_comments?: bool, wpm?: int }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ actor, url, elapsed_ms, data: { format, content, word_count, reading_time_seconds, metadata } }"}},"summary":"Clean article body + metadata (Mozilla Reader View algorithm)","tags":["Actors"]}},"/v1/actors/structured-data":{"post":{"operationId":"actorStructuredData","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ url: string }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ actor, url, data: { counts, data } }"}},"summary":"Extract JSON-LD, Microdata, RDFa, OpenGraph, Dublin Core, Microformats","tags":["Actors"]}},"/v1/cloud/render":{"post":{"operationId":"cloudRender","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ url, wait_for?: 'load'|'domcontentloaded'|'networkidle', return_format? }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ content, cost_usd, elapsed_ms }"}},"summary":"Render a URL in a real Chrome browser","tags":["Cloud"]}},"/v1/cloud/scrape":{"post":{"operationId":"cloudScrape","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ url, return_format?, chrome?, force_backend?, proxy_pool?, proxy_country? }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ content, cost_usd, elapsed_ms }"}},"summary":"Anti-bot single-page scrape","tags":["Cloud"]}},"/v1/cloud/search":{"post":{"operationId":"cloudSearch","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ query: string, limit?: int (max 50), return_format? }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ results: [{ url, title, content? }] }"}},"summary":"Web search returning URLs with optional full page content","tags":["Cloud"]}},"/v1/cloud/transform":{"post":{"operationId":"cloudTransform","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ data: string, input_kind?: 'html'|'pdf_base64', return_format?, readability?: bool }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ content, return_format, engine, elapsed_ms, cost_usd }"}},"summary":"HTML or PDF bytes → clean markdown","tags":["Cloud"]}},"/v1/crawls":{"post":{"description":"Enqueues a crawl. Returns 202 immediately; the run starts within seconds. Add a `cron` field to register a recurring monitor instead.","operationId":"createCrawl","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"CreateCrawlBody — see /v1/crawls in https://crawlcrawl.com/api","required":true},"responses":{"202":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Crawl enqueued. Returns { id, status, url, enqueued_at }."},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Validation failed (bad URL, depth out of range, etc.)."},"401":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Unauthorized."},"429":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Concurrent-runs cap reached."}},"summary":"Start a crawl","tags":["Crawls"]}},"/v1/crawls/{id}":{"delete":{"operationId":"deleteCrawl","responses":{"204":{"description":"Cancelled and removed."},"404":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Not found."}},"summary":"Cancel and cascade-delete pages","tags":["Crawls"]},"get":{"operationId":"getCrawl","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Run status + AEO signals."},"404":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Not found."}},"summary":"Get run status","tags":["Crawls"]},"parameters":[{"description":"Crawl run id.","in":"path","name":"id","required":true,"schema":{"format":"int64","type":"integer"}}]},"/v1/crawls/{id}/pages":{"get":{"operationId":"listCrawlPages","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Paged list of { id, url, status, bytes, fetched_at }."}},"summary":"List pages for a crawl","tags":["Crawls"]},"parameters":[{"description":"Crawl run id.","in":"path","name":"id","required":true,"schema":{"format":"int64","type":"integer"}},{"description":"Max items, default 100, max 1000.","in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Pagination offset.","in":"query","name":"offset","required":false,"schema":{"type":"integer"}},{"description":"Filter by HTTP status (e.g. only 200s).","in":"query","name":"status","required":false,"schema":{"type":"integer"}}]},"/v1/keys":{"get":{"operationId":"listKeys","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ items: [{ prefix, label, created_at, last_used_at, revoked_at, expires_at }] }"}},"summary":"List API keys (prefix-only, plaintext never returned)","tags":["Account"]}},"/v1/pages/{id}":{"get":{"operationId":"getPage","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Page content + metadata."},"404":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Not found."}},"summary":"Fetch one page (markdown / html / article)","tags":["Crawls"]},"parameters":[{"description":"Global page id (from /v1/crawls/{id}/pages).","in":"path","name":"id","required":true,"schema":{"format":"int64","type":"integer"}},{"description":"html | markdown | article | both","in":"query","name":"format","required":false,"schema":{"type":"string"}}]},"/v1/scan":{"post":{"description":"Sub-second URL → markdown + signals + AI-bot policy + llms.txt. No queue, no polling.","operationId":"scan","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"ScanBody — at minimum: { url: string }.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ url, status, markdown, metadata, signals, llms_txt, ai_bot_policy }."},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Validation failed."},"401":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Unauthorized."},"429":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Quota exceeded."}},"summary":"Synchronous single-URL scan","tags":["Scan"]}},"/v1/scan/bulk":{"post":{"description":"Fan out up to 100 URLs in a single request. URLs are scanned in parallel server-side; each item in the response carries the full /v1/scan payload (markdown, article, article_html, metadata, signals, llms_txt, ai_bot_policy). Failed URLs return a sanitised error string in place of the result.","operationId":"scanBulk","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ urls: string[] (1-100), concurrency?: int (default 64, max 64), max_age_seconds?: int, user_agent?: string, metadata_only?: bool (skip markdown + article extraction; ~150-300 ms per URL saved) }","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ items: [{ url, ok: true, result: { markdown, article, article_html, metadata, signals, ... } } | { url, ok: false, error: string }, ...] }"}},"summary":"Parallel multi-URL scan (up to 100 URLs per call)","tags":["Scan"]}},"/v1/usage":{"get":{"operationId":"getUsage","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"{ tier, caps, today, month, retry_after_seconds }"}},"summary":"Current-period usage + caps","tags":["Account"]}}},"security":[{"bearerAuth":[]}],"servers":[{"description":"Production","url":"https://api.crawlcrawl.com"}],"tags":[{"description":"Asynchronous multi-page crawls with optional cron monitors.","name":"Crawls"},{"description":"Synchronous single-URL scrape returning markdown + structured signals.","name":"Scan"},{"description":"Premium browser-backed and anti-bot routing endpoints.","name":"Cloud"},{"description":"Opinionated SEO and content-intelligence workflows.","name":"Actors"},{"description":"Usage, keys, project metadata.","name":"Account"}]}