One API endpoint. 9 output formats. Automatic Cloudflare bypass. Zero-config presets for 20 popular sites. Just send a URL.
# Scrape anything — clean markdown back in seconds curl -X POST https://api.xtrct.io/v1/scrape \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" \ -H "Content-Type: application/json" \ -d '{ "url": "https://techcrunch.com/2025/ai-news", "output": "markdown", "wait": true }' # Response (avg 850ms) { "status": "done", "strategy_used": "http", "credits_used": 1, "result": { "markdown": "# AI startup raises $40M...\n..." } }
Works with every major site
How it works
xtrct automatically picks the cheapest strategy that works — you never worry about Cloudflare, JS rendering, or proxies.
Send any URL with your desired output format — markdown, HTML, JSON, screenshot, PDF, links, metadata, or structured data. Optionally specify a preset or let xtrct auto-detect from the domain.
7-step smart routing: plain HTTP → datacenter proxy → residential proxy → stealth browser → stealth + proxy → stealth + residential → JS-challenge bypass. Stops at the first step that works. Most requests succeed at step 1 and cost 1 credit.
Get back the exact format you asked for. Sync (wait=true) or async with webhooks. The response tells you which strategy was used and how many credits were consumed.
Features
Never write retry logic again. xtrct escalates from fast & cheap to powerful & stealth automatically.
Get exactly the format your pipeline needs.
Multi-layer bot detection bypass. Defeats JS challenges, browser fingerprinting, and behavioural analysis — without you writing a single line of anti-bot code.
Datacenter and residential proxies with EMA health tracking and 5-min failure blacklist. Only used when needed — saves credits.
Submit up to 50 URLs in one request. Track progress by batch_id. Built for bulk pipelines.
Get notified on job completion. 3-attempt retry with backoff. HMAC-signed payloads you can verify.
Add wait=true for an immediate inline response, or use the job queue with webhooks for long-running scrapes.
Per-tier sliding window limits. Queue depth guards. Global overload protection. Predictable behaviour under load.
Examples
# Turn any article into clean Markdown curl -s -X POST https://api.xtrct.io/v1/scrape \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" \ -H "Content-Type: application/json" \ -d '{"url":"https://techcrunch.com/article","output":"markdown","wait":true}' { "id": "job_abc123", "status": "done", "strategy_used": "http", "credits_used": 1, "result": { "markdown": "# AI startup raises $40M..." } }
# Amazon product — structured data, zero config curl -s -X POST https://api.xtrct.io/v1/scrape \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" \ -H "Content-Type: application/json" \ -d '{"url":"https://amazon.com/dp/B0CXYZ","preset":"amazon-product","wait":true}' { "result": { "structured": { "title": "Wireless Earbuds Pro", "price": "£49.99", "rating": 4.6, "review_count": 12847, "asin": "B0CXYZ", "availability": "In Stock" } } }
# Custom CSS selectors — extract exactly what you need curl -s -X POST https://api.xtrct.io/v1/scrape \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/product", "output": "structured", "selectors": { "title": "h1.product-title", "price": "span.price", "images": "img.gallery@src", "all_reviews": "all:.review-text" }, "wait": true }'
# Submit 50 URLs in one shot curl -s -X POST https://api.xtrct.io/v1/batch \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" \ -H "Content-Type: application/json" \ -d '{"urls":["https://a.com","https://b.com"],"output":"markdown"}' # Poll progress curl https://api.xtrct.io/v1/batch/batch_x7k2m \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" {"total":50,"done":48,"running":2,"failed":0,"pending":0}
# Full-page screenshot → R2 signed URL curl -s -X POST https://api.xtrct.io/v1/scrape \ -H "X-API-Key: x_live_a8f2k9x1m3p7q4r6" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com","output":"screenshot","wait":true}' { "status": "done", "strategy_used": "playwright", "credits_used": 3, "result": { "screenshot": "https://r2.xtrct.io/screenshots/2025/01/job_abc.png?..." } }
Presets
Auto-detected from the URL. Send a Rightmove link and get a structured property object back — no selectors needed.
Pricing
Credits roll over. Proxy costs only apply when a proxy is actually needed. Cancel any time.
Free
500 credits / month, forever
Get started freeStarter
10,000 credits + 7-day free trial
Growth
50,000 credits + 7-day free trial
Credit costs per request
HTTP scrape
1 credit
JS rendering / PDF
3 credits
Challenge bypass
5 credits
Premium routing
+10 credits
Need more? Contact us for enterprise pricing with SLA and dedicated infrastructure.
Pass your API key in the X-API-Key header on every request.
-H "X-API-Key: x_live_your_key_here"
Scrape a single URL.
{
"url": "https://example.com", // required
"output": "markdown", // html | cleaned_html | markdown | text | screenshot | pdf | links | metadata | structured
"strategy": "auto", // auto | http | playwright | flaresolverr
"wait": true, // false = async (returns job_id)
"preset": "amazon-product", // optional — overrides output & selectors
"selectors": { "title": "h1" }, // for output: "structured"
"timeout": 30000, // ms, default 30000
"webhook_url": "https://your.site/hook" // optional async callback
}Submit up to 50 URLs in one request.
{ "urls": ["https://a.com", "https://b.com"], "output": "markdown" } # GET /v1/batch/:batch_id — poll progress
{
"job_id": "uuid",
"status": "done", // pending | running | done | failed
"strategy_used": "http",
"credits_used": 1,
"duration_ms": 612,
"result": {
"markdown": "# Page title..." // key matches output format
}
}HTTP scrape
1 credit
Playwright / PDF
3 credits
JS challenge bypass
5 credits
+ residential proxy
+10 credits