Scrape parameters
Body fields
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | yes | Target URL to fetch. |
format | string | no | Typical values: markdown, html, text. |
only_main_content | boolean | no | Uses Readability-style cleanup for article pages. |
premium | boolean | no | Opt into premium routing for harder targets. |
proxy_country | string | no | Two-letter ISO country code for proxy routing. |
query | string | no | Ask for a specific extraction focus from the page. |
render_js | boolean | no | Force a JS-rendered fetch path. |
screenshot | boolean | no | Attach a rendered screenshot URL in the response. |
pdf_mode | fast | auto | ocr | no | Control the PDF extraction path. |
max_pages | number | no | Maximum pages to parse in a PDF. |
Practical guidance
- start with
format: "markdown"for LLM pipelines - add
only_main_content: truefor articles, docs pages, and blogs - add
render_js: trueonly when static fetch misses meaningful content - use
querywhen you want the extractor to bias toward a specific answer - use
pdf_mode: "ocr"only for scanned documents
JS-heavy scrape with screenshot output
```bash
curl https://api.faircompany.ai/v1/crawl/web/scrape \
-X POST \
-H "Authorization: Bearer fc_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://app.linear.app/changelog",
"render_js": true,
"screenshot": true
}'
```
```ts
const page = await fc.scrape({
url: "https://app.linear.app/changelog",
render_js: true,
screenshot: true,
});
console.log(page.html);
console.log(page._meta.method);
```
```python
page = fc.scrape(
"https://app.linear.app/changelog",
render_js=True,
screenshot=True,
)
print(page.html)
print(page.meta.method)
```
```json
{
"tool": "faircrawl_scrape",
"arguments": {
"url": "https://app.linear.app/changelog",
"render_js": true,
"screenshot": true
}
}
```