Updated

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 (alias js_rendering) renders JavaScript before extraction. The default is false. booking.com is rendered by default with wait=8000.
  • wait adds an extra browser loading delay: 0 to 35,000 ms. It needs rendering to be on.
  • Choose one formats value: markdown, links, images, html or summary. Summary uses AI extraction and adds credits.

Hard-to-fetch pages

  • premium=true uses residential proxies.
  • country=us|gb|de… sets the proxy exit country (premium-tier pricing).
  • challenge_mode=true is a separate rendering mode with its own browser and proxies. It cannot be combined with dynamic=true, premium=true or any country.
  • Repeat session_number to 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_headers does 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

Other sources

Compare