Scrape response shape
The scrape response is a document-first payload with metadata plus a normalized _meta billing block.
{ "url": "https://stripe.com/pricing", "title": "Pricing & Fees", "description": "Stripe pricing details", "favicon": "https://stripe.com/favicon.ico", "language": "en", "meta": { "og:title": "Pricing & Fees" }, "links": [ { "url": "https://stripe.com/payments", "text": "Payments" } ], "images": [ { "url": "https://stripe.com/hero.png", "alt": "Stripe dashboard" } ], "text": "Plain-text extraction...", "html": "<main>...</main>", "statusCode": 200, "contentType": "text/html; charset=utf-8", "method": "direct-fetch", "_meta": { "requestId": "req_abc123", "platform": "web", "action": "scrape", "cost": 0.0005, "method": "direct-fetch", "responseTimeMs": 842 }}Fields to watch
text: safest universal output for downstream systemshtml: useful when you need DOM-rich outputlinksandimages: useful for follow-up crawl decisions_meta.cost: final billed amount for this request_meta.method: the path FairCrawl actually used to complete the scrape
Response-shape repro
```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://stripe.com/pricing",
"format": "markdown",
"only_main_content": true
}'
```
```ts
import FairCrawl from "faircrawl";
const fc = new FairCrawl({ apiKey: process.env.FAIRCRAWL_API_KEY || "fc_live_xxx" });
const result = await fc.scrape({
url: "https://stripe.com/pricing",
format: "markdown",
only_main_content: true,
});
console.log(result.text);
console.log(result._meta.cost);
```
```python
from faircrawl import FairCrawl
fc = FairCrawl()
result = fc.scrape(
"https://stripe.com/pricing",
format="markdown",
only_main_content=True,
)
print(result.text)
print(result.meta.cost)
```
```json
{
"tool": "faircrawl_scrape",
"arguments": {
"url": "https://stripe.com/pricing",
"format": "markdown",
"only_main_content": true
}
}
```