Web Scraping
Stealth Scrape
Scrape heavily protected sites using premium residential proxies and advanced browser fingerprinting.
POST
$0.03/call/v1/scrape/stealthUsage
const res = await fetch('https://api.yepapi.com/v1/scrape/stealth', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ url: 'https://protected-site.com/pricing' }),
});
const { data } = await res.json();
console.log(data.markdown);curl -X POST https://api.yepapi.com/v1/scrape/stealth \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://protected-site.com/pricing"}'Request Body
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
url | string | Yes | URL to scrape | — |
format | string | No | Output format: markdown, html, text | "markdown" |
waitFor | number | No | Wait for JS rendering (ms) | 2000 |
country | string | No | Proxy country code | "us" |
Response
{
"ok": true,
"data": {
"url": "https://protected-site.com/pricing",
"statusCode": 200,
"title": "Pricing - Protected Site",
"markdown": "# Pricing\n\n## Starter Plan\n$29/month...",
"metadata": {
"description": "View our pricing plans"
}
}
}Response Fields
| Field | Type | Description |
|---|---|---|
ok | boolean | Whether the request succeeded |
data | object | Response payload |
data.url | string | The URL that was scraped |
data.statusCode | number | HTTP status code returned by the target page |
data.title | string | Page title extracted from the <title> tag |
data.markdown | string | Page content converted to clean Markdown |
data.metadata | object | Extracted page metadata |
data.metadata.description | string | Meta description of the page |
Under the Hood
Uses a premium proxy network with residential IPs and stealth browser mode. Use this when standard scrape returns blocked or empty results.