Works with the best tools:
Works with the best tools:
Have a question?
Contact usThe Raw HTML endpoint fetches the fully rendered HTML of any public webpage. ScrapingBot handles proxy rotation and CAPTCHA bypassing automatically — you only need to pass the target URL.
For pages that require JavaScript rendering (React, Vue, Angular…), enable useChrome or see the Advanced Options section.
Authentication required. All requests use HTTP Basic Auth. Your credentials are your username and API key, both available in your dashboard. The header value must be base64-encoded as username:apiKey.
| Parameter | Type | Default | Description |
|---|---|---|---|
| url | string | — | RequiredThe full URL of the page to scrape (must include http:// or https://). |
| useChrome | boolean | false | OptionalSet to true to enable JavaScript rendering via headless Chrome. Consumes 10 credits. |
| premiumProxy | boolean | false | +9 creditsResidential proxy for harder-to-scrape websites. Consumes 10 credits instead of 1. |
| proxyCountry | string | null | Requires premiumProxyISO 3166-1 country code to route through a specific country (e.g. "FR", "US"). Consumes 25 credits. |
For a full description of all available options, see the Advanced Options section.
| Code | Name | Description |
|---|---|---|
| 200 | OK | Request successful. HTML returned as plain text. |
| 400 | Bad Request | Missing or invalid url parameter. Make sure the URL includes https://. |
| 401 | Unauthorized | Invalid or missing credentials. Check your dashboard. |
| 429 | Too Many Requests | You have exceeded your plan's rate limit. Upgrade or add a delay between requests. |
| 500 | Server Error | The target website returned an error or is temporarily unavailable. Retry after a few seconds. |
| Usage | Credits | Notes |
|---|---|---|
| Standard request | 1 credit | Default mode, shared datacenter proxy. |
With premiumProxy: true | 10 credits | Residential proxy, higher success rate on protected sites. |
| Timeout | — | Requests time out after 60 seconds. |
| Response size | — | Maximum response size is 5 MB. |
JS-rendered pages: If the page uses React, Vue, or Angular to load its content dynamically, the raw HTML response may be empty or incomplete. Use useChrome: true or see the Advanced Options section.
const username = "yourUsername";
const apiKey = "yourApiKey";
const url = "https://www.scraping-bot.io/rawHtmlPage.html";
const auth = "Basic " + Buffer.from(`${username}:${apiKey}`).toString("base64");
async function scrape() {
const response = await fetch("http://api.scraping-bot.io/scrape/raw-html", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: auth,
},
body: JSON.stringify({ url }),
});
// the Raw HTML endpoint returns the page's HTML as plain text, not JSON
const html = await response.text();
console.log(html);
}
scrape();Each request will return the raw HTML content of the page
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Sample title</h1>
<p>
Sample content
</p>
</body>
</html>You are using ScrapingBot solution for a basic usage?
You only need to give us the website URL you want to scrape and you will get the fully rendered HTML of that page avoiding captcha and blocking.
If you need javascript rendering look at advanced options right here