Powering agent infrastructure at
Twelve composable primitives behind a single auth, single billing surface, and a unified observability plane. No more duct-taped scrapers, headless browsers, and DNS scripts.
Render-aware crawls that follow links, respect robots, and bypass anti-bot walls cleanly.
LLM-graded extraction with JSON schemas, retries, and verification — typed end-to-end.
Trace every tool call, token, and step. Replay runs. Diff prompts. Find regressions fast.
Resolve, verify, and historicize DNS state. Detect take-downs, parked, and proxied domains.
Stealth Chromium pools that scale to thousands of concurrent sessions in seconds.
Audit how AI crawlers see, cite, and rank your site. Get a remediation checklist instantly.
See every tool invocation across MCP servers — cost, latency, errors, drift, version map.
Clean, model-ready markdown for any page. Strips chrome, keeps semantics, preserves citations.
Full hop-by-hop redirect graphs with TTLs, SSL chain, and final-rendered DOM checks.
Cert chain, ALPN, OCSP, and TLS posture inspection. Flag expiring, weak, or mis-issued certs.
Detect malicious hosts, phishing kits, and reputation drift. WAF-grade signal, agent-friendly.
Fire-and-forget jobs with webhooks, idempotency keys, fan-out, and durable retries.
Typed SDKs in TypeScript and Python. A first-class REST API. Idempotent jobs, streaming responses, webhooks, and structured errors. Built the way you wished scraping APIs were built ten years ago.
// Crawl a site, extract structured data, observe every step.
import { Ollagraph } from "@ollagraph/sdk";
const og = new Ollagraph({ apiKey: process.env.OG_KEY! });
const job = await og.crawl.start({
url: "https://news.ycombinator.com",
depth: 3,
renderer: "chromium-stealth",
extract: {
schema: {
title: "string",
url: "url",
points: "int",
author: "string",
},
grader: "claude-haiku-4.5",
},
observe: { trace: true, redact: ["email"] },
});
for await (const ev of og.stream(job.id)) {
console.log(ev.phase, ev.url, ev.latencyMs);
}
from ollagraph import Ollagraph
og = Ollagraph(api_key=os.environ["OG_KEY"])
job = og.crawl.start(
url="https://news.ycombinator.com",
depth=3,
renderer="chromium-stealth",
extract={
"schema": {
"title": "string",
"url": "url",
"points": "int",
"author": "string",
},
"grader": "claude-haiku-4.5",
},
observe={"trace": True, "redact": ["email"]},
)
for ev in og.stream(job.id):
print(ev.phase, ev.url, ev.latency_ms)
curl https://api.ollagraph.com/v1/crawl \
-H "Authorization: Bearer $OG_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://news.ycombinator.com",
"depth": 3,
"renderer": "chromium-stealth",
"extract": {
"schema": {
"title": "string",
"url": "url",
"points": "int",
"author": "string"
},
"grader": "claude-haiku-4.5"
},
"observe": { "trace": true, "redact": ["email"] }
}'
# → { "job_id": "job_8431", "stream": "wss://…/v1/jobs/job_8431" }
The legacy scraping market was built for SEO teams in 2014. Ollagraph is built for agents, observability, and AI infrastructure in 2026.
* Rough estimate including infra, on-call, headless browser ops, and proxy spend for a 100M-page-per-month workload. Compare in detail on the pricing page.