Scrape a single URL
operationId: scrape
Try it in the Playground ▸Idempotency-Keystringheadermax 255 chars
urlstring (uri)required- Basic metadata (title, description, language, canonical, status) is always returned;
metadataadds parsed JSON-LD. onlyMainContentbooleandefault trueincludeTagsstring[]excludeTagsstring[]tier"auto" | "fetch" | "render" | "premium"default "auto"auto escalates fetch → render → (premium if allowed)allowPremiumbooleandefault falsewaitForinteger≤ 30000timeoutintegerdefault 300001000–60000maxAgeintegerdefault 172800000Serve a cached copy younger than this (ms). Default 2 days; 0 forces a fresh scrape. Cache hits are served from the nearest data center.headersRecord<string, string>locationobjectShowHide 2 fields
countrystringlanguagesstring[]
chunkSizeintegerdefault 1500200–8000
OKapplication/json
successtruerequiredcredits_usedintegerrequiredrequest_idstringrequiredlatency_msinteger
curl -X POST "https://api.vermin.dev/v1/scrape" \
-H "Authorization: Bearer $VERMIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "formats": ["markdown", "metadata"] }'{
"success": true,
"data": {
"url": "https://example.com",
"finalUrl": "https://example.com/",
"markdown": "# Example Domain\n\nThis domain is for use in illustrative examples.",
"metadata": {
"title": "Example Domain",
"description": "This domain is for use in illustrative examples.",
"language": "en",
"canonicalUrl": "https://example.com/",
"statusCode": 200,
"contentType": "text/html; charset=UTF-8",
"publishedAt": "2026-09-01",
"author": "Jane Doe",
"ogImage": "https://example.com/og.png"
},
"tier": "fetch",
"cached": false,
"quality": {
"score": 0.97,
"issues": [
"thin_content"
],
"escalations": [
"string"
],
"reason": "Plain fetch returned complete content; no escalation needed."
}
},
"credits_used": 1,
"latency_ms": 184,
"request_id": "req_01J9V3KX7Q"
}