AI analysis (OCR, extraction, insights)
Add an ai object to POST /screenshot and an open-weights vision model (Qwen3-VL) reads the capture: extract all visible text, pull structured data, or get a natural-language review. Results ride back in the same response under data.ai.
Plan: Pro and Scale, with a monthly AI-call quota (Pro 1,000 / Scale 10,000 — resets on the 1st, UTC). Each requested task (ocr, extract, analyze) counts as one AI call. Repeat requests on an unchanged capture are served from cache and are not billed. Not available for PDF captures.
Extract text (OCR)
curl -X POST https://screenshotforweb.com/api/v1/screenshot \
-H "X-API-Key: sk_live_your_key" -H "Content-Type: application/json" \
-d '{"url":"https://example.com","ai":{"ocr":true}}'
// -> data.ai.ocr.text = "Example Domain\nThis domain is for use in..."Extract structured data
Describe what you want in plain language; optionally shape the output with a JSON schema. The model answers with JSON in data.ai.extracted.
{
"url": "https://competitor.com/pricing",
"ai": {
"extract": {
"prompt": "all pricing tiers with name, monthly price, and features",
"schema": { "type": "array", "items": { "tier": "string", "price": "string", "features": ["string"] } }
}
}
}Analyze a page
Preset lenses: general, seo, ux, accessibility — or pass a custom prompt instead.
{ "url": "https://example.com", "ai": { "analyze": { "type": "seo" } } }
// -> data.ai.analysis = { "type": "seo", "text": "The page focuses on..." }Response shape & failure mode
{
"success": true,
"data": {
"signedUrl": "...", "downloadUrl": "...", "metadata": { ... },
"ai": {
"model": "qwen/qwen3-vl-8b-instruct",
"cached": false,
"ocr": { "text": "..." },
"extracted": [ ... ],
"analysis": { "type": "seo", "text": "..." }
}
}
}AI never breaks a capture: if the model call fails, the screenshot still succeeds and data.ai.error explains what happened — no AI call is billed. Exceeding the monthly quota returns 429 AI_QUOTA_EXCEEDED before any capture is taken.