Live — 99.9% uptime

Extract anything.
Get clean data

One API endpoint. Cloudflare bypass. JS rendering. Residential proxies. 9 output formats. Zero-config presets for 20 popular sites. Just send a URL.

No credit card 7-day trial Cancel anytime
terminal
# 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

AmazonLinkedInRightmoveIndeed ZillowTrustPilotRedditTechCrunch GitHubYouTubeHacker NewsRemoteOK

How it works

One request. Always data back.

xtrct automatically picks the cheapest strategy that works — you never worry about Cloudflare, JS rendering, or proxies.

1

POST a URL

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.

2

Auto-escalation kicks in

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.

3

Clean data returned

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

Everything you need. Nothing you don't.

7-Step Auto-Escalation

Never write retry logic again. xtrct escalates from fast & cheap to powerful & stealth automatically.

HTTP, no proxy1 cr
HTTP + datacenter3 cr
HTTP + residential11 cr
Stealth browser3 cr
Stealth + DC proxy5 cr
⑥⑦+ residential / Flare5+ cr
🗂

9 Output Formats

Get exactly the format your pipeline needs.

markdown html cleaned_html text screenshot pdf links metadata structured
🛡

Cloudflare & JS Rendering

Real Chrome browser defeats JS challenges, Turnstile, and bot fingerprinting. Playwright stealth mode handles dynamic SPAs — content rendered before you receive it.

🌐

Residential Proxy Routing

UK residential IPs for sites that block datacenters. Sticky sessions for cookie-locked scrapes. Only charged when a proxy is actually used — not per request.

📦

Batch Endpoint

Submit up to 50 URLs in one request. Track progress by batch_id. Built for bulk pipelines.

🔔

HMAC Webhooks

Get notified on job completion. 3-attempt retry with backoff. HMAC-signed payloads you can verify.

Sync or Async

Add wait=true for an immediate inline response, or use the job queue with webhooks for long-running scrapes.

🧩

Structured Data Extraction

Pull data via CSS selectors, JSON-LD schema, or __NEXT_DATA__ — resilient to layout changes. LLM fallback via Claude when selectors miss.

Examples

Simple by design

# 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

20 zero-config presets

Auto-detected from the URL. Send a Rightmove link and get a structured property object back — no selectors needed.

🛒 amazon-product
🛍 ebay-listing
🧶 etsy-product
🏪 shopify-product
💼 indeed-job
💼 linkedin-job
💬 glassdoor-job
🌍 remoteok-listing
🏠 rightmove-property
🏡 zillow-listing
🏠 zoopla-property
📰 article
🔥 hn-post
📣 reddit-post
🔍 google-serp
📋 yellow-pages
🏨 tripadvisor-hotel
⭐ trustpilot-company
🐦 twitter-profile
▶ youtube-video

Pricing

Pay for what you use

Credits roll over. Proxy costs only apply when a proxy is actually needed. Cancel any time.

Free

$0

500 credits / month, forever

Get started free
  • 500 credits / month
  • All 9 output formats
  • All 20 presets
  • 10 req / minute
  • No proxy access
  • No webhooks

Growth

$99 / mo

50,000 credits + 7-day free trial

  • 50,000 credits / month
  • All formats & presets
  • 200 req / minute
  • Residential proxies
  • Priority queue
  • SLA + dedicated support

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.

Try it live

Paste any URL. Get data back.

No setup. Runs against the live API.

Results will appear here

Free — 500 credits/month. No credit card required. Get more credits →

Docs

Quick reference

Full API reference at api.xtrct.io.

Authentication

Pass your API key in the X-API-Key header on every request.

-H "X-API-Key: x_live_your_key_here"

POST /v1/scrape

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
}

POST /v1/batch

Submit up to 50 URLs in one request.

{
  "urls":    ["https://a.com", "https://b.com"],
  "output": "markdown"
}
# GET /v1/batch/:batch_id  — poll progress

Response shape

{
  "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
  }
}

Credit costs

HTTP scrape

1 credit

Playwright / PDF

3 credits

JS challenge bypass

5 credits

+ residential proxy

+10 credits