How FastAF handles heavy pages and timeouts
This guide checks behavior against FastAF API code on 27 October 2026. See the public parameter reference at api.fastaf.co/openapi.json.
Rendering JavaScript-heavy pages
dynamic=true(aliasjs_rendering) renders JavaScript before extraction. The default is false. booking.com is rendered by default withwait=8000.waitadds an extra browser loading delay: 0 to 35,000 ms. It needs rendering to be on.- Choose one
formatsvalue:markdown,links,images,htmlorsummary. Summary uses AI extraction and adds credits.
Hard-to-fetch pages
premium=trueuses residential proxies.country=us|gb|de…sets the proxy exit country (premium-tier pricing).challenge_mode=trueis a separate rendering mode with its own browser and proxies. It cannot be combined withdynamic=true,premium=trueor anycountry.- Repeat
session_numberto request the same proxy IP across calls. It expires after 60 seconds of inactivity.
Screenshots of slow pages
/screenshot takes wait_until=domcontentloaded|load|networkidle, plus fullPage, width, height, format and quality.
When something still fails, you are not charged
| Code | Meaning | Charged? |
|---|---|---|
| 503 | error.code is upstream_timeout or upstream_unavailable: the source timed out or is down, with Retry-After: 5 |
No, nothing settled |
| 502 | Upstream failed or returned blocked, empty or incomplete data | No |
| 422 | Source returned 410 (unavailable target) | No |
| 404 | target_not_found |
No |
| 429 | Burst limit: respect Retry-After |
No |
| 503 | Capacity unavailable: retry later | No |
Source timeouts and outages use the standard error envelope on both keyed and x402 routes:
{"error":{"code":"upstream_timeout","message":"The data source did not answer in time. Nothing was charged; retry after Retry-After seconds.","stage":"upstream_fetch","retry_after":5}}
The code can also be upstream_unavailable. Both return 503 and Retry-After: 5; reserved credits on /v1 are refunded and x402 never settles the payment.
Proxies, JavaScript rendering and retries are handled server-side. Use bounded retries with backoff and respect Retry-After on 429 or 503. Automatic transient retries for the ordinary data-provider path apply to Maps and eBay search; ordinary scrape has no general automatic retry loop. For x402, read a fresh challenge after a confirmed failure; do not blindly retry or sign again after an uncertain payment outcome.
Not supported (so you don’t plan for it)
custom_headersdoes not forward your headers, cookies or Authorization to the target.- Reddit is best effort through a public feed, supports only HTML or Markdown, and ignores rendering, proxy, wait and session options; it is not listed as a supported site.
- Scrape requests for Zillow and eBay URLs are rejected with a pointer to their dedicated endpoints; they are not automatically routed.
Scrape your first page at fastaf.co
What are the timeout and size limits?
The ordinary upstream fetch deadline is 60 seconds. Maps and eBay search allow one transient retry, with a 500 ms delay and a shared 105-second retry budget; this is not two independent 60-second attempts. Reddit feed fetches have a 10-second deadline per attempt and at most two attempts. These are internal fetch budgets, not end-to-end latency guarantees. Increasing wait does not raise the fetch deadline.
JSON request bodies on /v1/ and /x402/v1/ are capped at 64 KiB; /mcp request bodies at 4 MiB. These are input limits, not promises about the maximum source-page size. The MCP scrape_url tool truncates returned Markdown to max_chars: default 12,000, minimum 1,000, maximum 30,000, and reports truncated and total_chars. Its URL input is capped at 8,192 characters. MCP uses render_js, while REST uses dynamic or its js_rendering alias.
At the current $0.005 x402 scrape price, the code covers modes up to 10 credits at the Starter allocation rate: basic, dynamic alone, premium alone or challenge mode alone. Dynamic plus premium costs 25 credits and needs API-key billing. AI extraction adds 10 credits to the selected base mode and also needs API-key billing. Unsigned requests still receive a 402 quote; signed unsupported options return 400 options_need_api_key before payment verification or settlement.
FAQ
Does wait enable JavaScript rendering?
No. Set dynamic=true for REST rendering. Wait is an additional delay from 0 to 35,000 milliseconds; Booking.com enables rendering by default and supplies 8,000 milliseconds unless overridden.
Can challenge mode be combined with country targeting?
No. Challenge mode cannot combine with country, dynamic=true or premium=true. It uses its own rendering and proxies.
Is an empty result billed?
Detected empty, blocked or incomplete results fail without consuming credits or settling an x402 payment. An empty result maps to 502, not the 422 used for an unavailable target.
Where can I explore the API?
Read the documentation and pricing, or try the browser tools. Relevant products include the Google SERP API, Amazon API and web scraping API. See Amazon price monitoring, page-to-Markdown workflows and the x402 glossary. To cap retries in an agent loop, see why agent retries cost more than you think.
Reference
- FastAF documentation: every parameter and response field
- Docs: authentication, errors, MCP and x402
- Pricing: credit packs from $10, without expiry
Other sources
- How to read public Amazon data when your requests fail
- How to read public Google Search data when your requests fail
- How to read public Walmart data when your requests fail
- How to read LinkedIn data with an API
- How to read public eBay data when your requests fail
- How to read public Booking.com data when your requests fail
- How to read X profile data with an API
- How to read public Zillow data when your requests fail
- Pay-per-call web scraping for AI agents with x402
- MCP servers for Amazon, SERP and web scraping
- Cost per agent: monthly SaaS vs x402 pay-per-call
- x402 endpoint discovery checklist: how agents find a paid API (and how FastAF passes it)
- Add FastAF to Claude Code, Codex and Cursor
- How to detect poisoned or incomplete SERP results in AI agents
- Cap agent spend per call with fixed x402 prices
- Use FastAF from the Cloudflare Agents SDK
- FastAF as a fallback search provider
- Budget a scraping job before you run it
- Try FastAF for free, no card
- Too many MCP tools? Keep agent context small
- How agents find an API (and where FastAF is)
- Why agent retries cost more than you think
- All how-to guides