Webfetch is live: ScrapingBee-compatible scraping at 38-40% less
Webfetch is a web scraping API: send a URL and get back rendered HTML, plain text, markdown, JSON extracted with CSS or XPath selectors, or a link to a screenshot. Request parameters, defaults, credit costs and status codes match ScrapingBee's HTML API, so an existing integration moves over by changing the base URL and the API key unless it uses AI extraction or screenshots.
A free account starts with 1,000 credits and gets 250 more on the 1st of every month, banking up to 1,000. Signup takes an email address and a six-digit code, with no card. Enter LAUNCH500 as the promo code when you create a free account to get 500 one-time bonus credits. The code works for the first 500 accounts that use it, until December 7, 2026. The credits are spent after the free balance runs out, and they never expire.
Make a request
curl "https://api.webfetch.io/v1/?url=https%3A%2F%2Fexample.com&render_js=false" \
-H "Authorization: Bearer wfk_your_key"The api_key query parameter also works, for code written against ScrapingBee. The cost, auto-mode cost, initial status code and resolved URL headers carry the same values under a new prefix, so Spb-cost becomes Wf-Cost.
Official SDKs for JavaScript (Node 18+), Python (3.9+) and PHP (8.1+) are published, with the source at github.com/tuxxin/webfetch-sdk:
npm install @tuxxin/webfetch
pip install webfetch-io
composer require tuxxin/webfetchThe home page runs a real scrape against any URL you enter, with no key, so you can check the output before signing up.
What a request costs
| Request | Credits |
|---|---|
No JavaScript rendering (render_js=false) | 1 |
| JavaScript rendering, the default | 5 |
| Premium proxy without rendering | 10 |
| Premium proxy with rendering | 25 |
| Stealth proxy | 75 |
| Failed request | 0 |
A request is billed when the target answers with a 2xx, 404, 410 or 413 status, and every other outcome costs nothing. An anti-bot challenge, CAPTCHA or block page comes back as an error with the code challenge_page and costs nothing, including challenge pages served with HTTP 200. Every response carries a Wf-Cost header with the credits charged.
Premium proxy requests leave through static ISP addresses, where ScrapingBee's premium_proxy uses residential ones. Stealth requests always render, in a browser hardened against common headless-detection checks, and bill 75 credits on a mobile exit. At launch, no mobile or residential exit is available, so stealth requests leave through the ISP pool, bill 25 credits and return Wf-Proxy-Downgraded: true.
With mode=auto, Webfetch tries five configurations from cheapest to most expensive and stops at the first that works. The failed attempts are free, so a call costs only the configuration that succeeded, and max_cost sets a ceiling for it.
Plans
| Plan | Price a month | Credits a month |
|---|---|---|
| Free | $0 | 1,000 to start, then 250 |
| Starter | $11.99 | 75,000 |
| Pro | $29.99 | 250,000 |
| Scale | $59.99 | 1,000,000 |
| Business | $149.99 | 3,000,000 |
| Business+ | $359.99 | 8,000,000 |
| Custom | From $499 | No datacenter credit cap, on dedicated hardware, quoted per requirement |
Pro, Scale, Business and Business+ carry the credit allowances of ScrapingBee's Freelance, Startup, Business and Business+ plans at 38 to 40% below their prices. The comparison uses ScrapingBee's published prices on October 8, 2026. Paid plans bill monthly through PayPal and cancel at any time. The price you sign up at stays locked for as long as the payment method stays active and the subscription does not lapse. Upgrading from the key portal keeps the same key.
MCP server
Webfetch serves two tools over the Model Context Protocol at https://webfetch.io/mcp: fetch_page returns a page as markdown, text or HTML, and extract_data turns selectors into structured JSON. Send the API key as Authorization: Bearer, as on the HTTP API. Each result reports the credits it cost.
{
"mcpServers": {
"webfetch": {
"url": "https://webfetch.io/mcp",
"headers": { "Authorization": "Bearer wfk_your_key" }
}
}
}Request limits
Webfetch honors robots.txt by default. Turning that off needs a key whose owner has accepted the acceptable use policy, and each such request is logged. Private, loopback, link-local and reserved addresses are refused, and the check repeats on every redirect.
Bandwidth is capped on the wire at 25 MB per request, and at 5 MB through the mobile and residential pools. A request that reaches the cap returns and bills the content fetched so far, marked with Wf-Truncated: true.
Free capacity is best effort: when paid traffic is heavy, a free request can get HTTP 503 with the code free_tier_busy and a Retry-After header, at no cost.
Not in this release
The AI extraction parameters (ai_query, ai_extract_rules, ai_selector), scraping_config and ScrapingBee's dedicated APIs for Google, Amazon, Walmart, YouTube and others are not implemented. A request that sends one of those parameters runs as an ordinary scrape at the usual credit cost and lists the parameter names in the Wf-Unknown-Parameters header. A screenshot comes back as a link in the Wf-Screenshot-Url header, where ScrapingBee returns the image itself.
Webfetch is run by Tuxxin LLC. The documentation covers every parameter, and the ScrapingBee migration guide compares the two services plan by plan.