one endpoint. captchas, sessions, proxies handled. you get clean json, not 400kb of html.
run public checks for scrapability, WAF signals, structured data, robots.txt, and sitemap discovery.
Diagnose whether a URL is reachable with direct HTTP, needs browser rendering, or shows anti-bot friction.
access signalsCheck headers, cookies, status codes, and page signals for common WAF and CDN fingerprints.
extractionPreview JSON-LD, OpenGraph, canonical tags, and product-like fields before writing an extractor.
complianceParse robots.txt directives, sitemap links, crawl-delay hints, and user-agent groups for a domain.
discoveryFind sitemap URLs, nested indexes, lastmod values, and sample URLs for catalog discovery.
everything we learned keeping 2 million daily requests out of jail, shipped as a single api.
cloudflare, hcaptcha, akamai, datadome. real browser fingerprinting on a real device fleet. not a headless hack.
cookies persist across requests. login once, scrape many. session_id → same fingerprint, same jar.
css selectors, jsonpath, or llm extraction. ship parsed data. skip the html-soup parsing entirely.
200m+ ips across 190 regions. rotation is automatic, per-request. geo-targeting down to city.
full chromium. lazy-loaded spas, infinite scroll, shadow dom. wait on selectors, not arbitrary sleeps.
python, node, go, ruby, php. typed clients, retries built in. or just use curl. we don't care.
no sdk install. no auth dance. no websockets. just http + json.
# scrape a js-heavy spa, extract the price curl https://api.scantir.dev/v1/scrape \ -H "authorization: bearer $KEY" \ -d '{"url":"https://example.com/p/42","render_js":true,"session_id":"user-42","extract":{"price":".price"}}' # → 200 in 204ms. clean json.
1,000 requests free. no card. no call.