13 endpoints for single, batch, async, smart, and llm-ready scraping, plus extraction, crawl, and captcha solve.
For AI agents, data engineers, and RAG pipelines fetching the live web.
Each endpoint is independently callable. Bundle membership is for discovery only — you do not need to opt in.
| Method | Path | Credits | Summary |
|---|---|---|---|
| POST | /v1/scrape | 1 | Single-page fetch. |
| POST | /v1/scrape/batch | 1 | Batch of URLs, synchronous return. |
| POST | /v1/scrape/async | 1 | Single fetch, returns job_id. |
| POST | /v1/scrape/batch/async | 1 | Batched fetch, returns job_id. |
| POST | /v1/scrape/smart | 1 | Auto-escalate through the render cascade. |
| POST | /v1/scrape/llm-ready | 1 | Fetch and token-chunk for RAG ingest. |
| POST | /v1/extract/clean | 1 | Boilerplate strip and reading-text extraction. |
| POST | /v1/extract/structured | 1 | Schema-driven extract via JSON schema input. |
| POST | /v1/extract/tables | 1 | Table rows from HTML. |
| POST | /v1/extract/contacts | 1 | Emails, phones, and socials extraction. |
| POST | /v1/crawl | 1 | Recursive crawl with depth and budget caps. |
| POST | /v1/captcha/solve | 1 | reCAPTCHA v2 / v3 solve. |
| POST | /v1/captcha/auto | 1 | Automatic captcha solve flow for sites behind a challenge. |
Pick a language. Click to expand the snippet.
curl -X POST https://api.ollagraph.com/v1/scrape/smart \
-H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article","render_js":true}'
import httpx, os
r = httpx.post(
"https://api.ollagraph.com/v1/scrape/smart",
headers={"Authorization": f"Bearer {os.environ['OLLAGRAPH_API_KEY']}"},
json={"url": "https://example.com/article", "render_js": True},
timeout=60.0,
)
print(r.json())
const res = await fetch("https://api.ollagraph.com/v1/scrape/smart", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.OLLAGRAPH_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://example.com/article", render_js: true }),
});
console.log(await res.json());
/scrape is a direct fetch. /scrape/smart auto-escalates: direct first, then internal render backend, then Spider.cloud ISP proxy on 401/403/429. Same response shape from all tiers.
Pass `use_residential_proxy: true` on /scrape or /scrape/smart. It adds a +3 credit surcharge on top of the base 1 credit per call.
No. We never persist scraped content — only the URL, status, and credit-event metadata for your usage log.
1,000 credits on signup. No card. Every endpoint in this bundle is live from minute one.