Documentation

API URL


POST /health, GET /metrics, GET /api/v1/batch/scrape/:id (poll batch job), GET /api/v1/crawl/:id (poll crawl job)

Headers
Code
Content-Type: application/json
Body Parameters


Example Request

Code
POST /api/v1/scrape {"url":"https://example.com/article","formats":["markdown"]}

Successful Response

Status
HTML
200 OK
Body
Code
{"success":true,"url":"https://example.com/article","title":"Article Title","text":"Plain text content...","excerpt":"Summary...","byline":null,"siteName":"Example","length":1200,"content":"<article>...</article>","markdown":"# Article Title

Plain text content...","metadata":{"timingMs":3500,"cached":false},"correlationId":"req_abc123"}
No output fields documented.

Error Response

Example
Code
400,ValidationError,Joi validation failure or SSRF-blocked or invalid URL,Request rejected before navigation, 401,AuthenticationError,Missing or invalid API key at gateway layer,Authentication required, 404,NotFound,Unknown endpoint path or async job ID not found,Resource not found, 422,ExtractionError,Page loaded but content not extractable or scrape failed after navigation,Extraction failed after navigation, 429,RateLimitError,Rate limit exceeded or browser pool saturated (POOL_SATURATED),Retry after retryAfter seconds, 500,InternalError,Unexpected failure (message in development only),Internal server error, 504,GatewayTimeout,Route-level timeout exceeded (35s scrape 60s map),Operation timed out

Last Updated:  May 4, 2026