Base URL https://fetchrouter.dev. Authenticate with Authorization: Bearer fr_…. Get a key on the home page (500 free credits).
| Field | Type | Notes |
|---|---|---|
url | string | Required. Public http(s) URL. |
mode | "markdown" | "html" | "rendered" | Default markdown (main content, links made absolute). html returns the raw page. rendered always uses a browser and returns the HTML after JavaScript runs. |
expect.text | string | Optional. The page passes only if this text appears (case-insensitive). |
expect.selector | string | Optional. CSS selector that must match. |
maxCost | integer | Most credits you'll pay for this page. Default 5: static and browser routes. Set 1 for static only. Set 10 or 25 to allow premium unblockers. |
timeoutMs | integer | Total time across all attempts. Default 60000, max 120000. |
{
"ok": true, // a route passed verification
"content": "…", // markdown or HTML
"verdict": { "passed": true, "checks": [ { "name": "status", "passed": true, "detail": "200" }, … ] },
"provider": "direct", // route that delivered
"attempts": [ … ], // every route tried, with its verdict and latency
"billed": true,
"costCredits": 1,
"balanceCredits": 499,
"finalUrl": "https://…",
"contentSha256": "…",
"requestId": "…"
}
Failure reasons in verdict.reason: blocked:<vendor> (cloudflare, datadome, perimeterx, akamai, imperva, kasada, aws_waf, captcha, access_denied, login_wall, rate_limited, js_required), http_<status>, empty_shell, too_short, expect_text_missing, expect_selector_missing, provider_error. A 404 stops the chain and isn't billed.
HTTP errors: 401 bad key, 402 out of credits, 429 more than 10 requests in flight, 400 invalid or private URL, 451 site opted out.
A pass costs the tier of the route that delivered it: 1 credit for static routes, 5 for a browser, 10–25 for premium unblockers. A failure costs 0. maxCost caps the tier per request. 1 credit = $0.001.
Balance and 30-day usage.
No key needed. Pass rate, attempts and p50 latency per route for a domain over 30 days.
{"pack": "starter" | "growth" | "scale"} returns a Stripe Checkout URL.
npx -y fetchrouter-mcp # env FETCHROUTER_API_KEY=fr_… (optional FETCHROUTER_BASE_URL)
Tools: fetch_page(url, mode?, expect_text?, max_cost?) and domain_reliability(domain).
451.