This guide checks behavior against FastAF API code on 27 October 2026. See the public parameter reference at [api.fastaf.co/openapi.json](https://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](https://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](/docs/) and [pricing](/pricing/), or try the [browser tools](/tools/). Relevant products include the [Google SERP API](/apis/google-serp-api/), [Amazon API](/apis/amazon-api/) and [web scraping API](/apis/web-scraping-api/). See [Amazon price monitoring](/use-cases/scrape-amazon-prices-ai-agent/), [page-to-Markdown workflows](/use-cases/web-page-to-markdown-for-llm/) and the [x402 glossary](/glossary/x402/). To cap retries in an agent loop, see [why agent retries cost more than you think](/how-to/agent-tool-retry-cost/).

## Reference

*   [FastAF documentation](/docs/): every parameter and response field
*   [Docs](/docs/): authentication, errors, MCP and [x402](/docs/#x402)
*   [Pricing](/pricing/): credit packs from $10, without expiry

## Other sources

*   [How to read public Amazon data when your requests fail](/how-to/read-amazon-data/)
*   [How to read public Google Search data when your requests fail](/how-to/read-google-data/)
*   [How to read public Walmart data when your requests fail](/how-to/read-walmart-data/)
*   [How to read LinkedIn data with an API](/how-to/read-linkedin-data/)
*   [How to read public eBay data when your requests fail](/how-to/read-ebay-data/)
*   [How to read public Booking.com data when your requests fail](/how-to/read-booking-data/)
*   [How to read X profile data with an API](/how-to/read-x-data/)
*   [How to read public Zillow data when your requests fail](/how-to/read-zillow-data/)
*   [Pay-per-call web scraping for AI agents with x402](/how-to/x402-pay-per-call-web-scraping/)
*   [MCP servers for Amazon, SERP and web scraping](/how-to/best-mcp-servers-amazon-serp-scraping/)
*   [Cost per agent: monthly SaaS vs x402 pay-per-call](/how-to/cost-per-agent-saas-vs-x402/)
*   [x402 endpoint discovery checklist: how agents find a paid API (and how FastAF passes it)](/how-to/x402-discovery-checklist/)
*   [Add FastAF to Claude Code, Codex and Cursor](/how-to/add-fastaf-claude-code-codex-cursor/)
*   [How to detect poisoned or incomplete SERP results in AI agents](/how-to/detect-poisoned-incomplete-serp-results/)
*   [Cap agent spend per call with fixed x402 prices](/how-to/agent-spend-caps-per-call-pricing/)
*   [Use FastAF from the Cloudflare Agents SDK](/how-to/fastaf-cloudflare-agents-sdk/)
*   [FastAF as a fallback search provider](/how-to/search-api-fallback-provider/)
*   [Budget a scraping job before you run it](/how-to/budget-scraping-job-fixed-prices/)
*   [Try FastAF for free, no card](/how-to/free-search-api-for-agents/)
*   [Too many MCP tools? Keep agent context small](/how-to/mcp-tool-schema-bloat/)
*   [How agents find an API (and where FastAF is)](/how-to/agent-discovery-files/)
*   [Why agent retries cost more than you think](/how-to/agent-tool-retry-cost/)
*   [All how-to guides](/how-to/)

## Compare

*   [FastAF vs SerpApi](/compare/serpapi/)
*   [FastAF vs Exa](/compare/exa/)
*   [FastAF vs Tavily](/compare/tavily/)
*   [FastAF vs Firecrawl](/compare/firecrawl/)
*   [FastAF vs Apify](/compare/apify/)
*   [FastAF vs toll402](/compare/toll402/)
*   [FastAF vs serp402](/compare/serp402/)
*   [FastAF vs AgentBIT](/compare/agentbit/)
*   [FastAF vs Amazon PA-API](/compare/amazon-pa-api/)
*   [FastAF vs Serper](/compare/serper/)
*   [FastAF vs ScrapingBee](/compare/scrapingbee/)
*   [FastAF vs ScraperAPI](/vs/scraperapi/)
*   [FastAF vs Bright Data](/vs/bright-data/)
*   [Benchmarks](/benchmarks/): latency and cost per 1,000 requests, measured

## Try it on your own request

500 free credits every month after email verification, no card.

[Start free](/signup/)[FastAF documentation](/docs/)

## Related

*   [Web Scraping API](/apis/web-scraping-api/)
*   [How to read public Amazon data when your requests fail](/how-to/read-amazon-data/)
*   [How to read public Google Search data when your requests fail](/how-to/read-google-data/)
