Stop wrestling with blocked requests and complex Chrome setups. Our all-in-one solution lets you bypass restrictions, skip the maintenance, and focus on getting the data you need.
Time-Saving Simplicity: With our all-in-one solution, you spend less time fighting technical hurdles and more time putting your data to work. Start with a free trial and stay only when you’re sure it delivers exactly what you need.
Try Before You Commit: Your trust is earned, not assumed. Once your business profile is approved, take advantage of our generous free trial for as long as needed. Only subscribe to a paid plan when you’re confident it’s the perfect fit.
Backed by Proven Expertise: With eight years of experience and over six billion headless Chrome sessions, we’ve mastered the art of cloud-based Chrome management. Lean on our know-how, and leave the complexity behind.
Each plan includes a fixed price part for allocated concurrency and prepaid usage, which can be used to purchase extra concurrency or make requests. Each request is priced individually based on actual traffic used in real time. You can view all your requests and add funds to your current billing period usage through the account dashboard. Usage limit is reset every billing cycle.
Taxes not included. 10% off for annual subscription (set up via support).
We accept payments via PayPal
Getting rendered page content:
$ curl "https://api.fetchbytes.com/navigate?key=YOUR_API_KEY&url=https://httpbin.org/anything&content=True"
{
"url": "https://httpbin.org/anything",
"status": 200,
"content": "<html><head><meta ...</div></body></html>",
"actions": [],
"data": {
},
"transferSize": 1178,
"session": "cwJyBV930X"
}
Generating PDF:
$ curl "https://api.fetchbytes.com/pdf?key=YOUR_API_KEY&url=https://example.com" > res.pdf
Taking page screenshot:
$ curl "https://api.fetchbytes.com/screenshot?key=YOUR_API_KEY&url=https://example.com" > res.png
Navigating to web page, interacting and extracting data:
$ curl -X POST "https://api.fetchbytes.com/navigate?key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)",
"actions": [
{
"action": "click",
"element": ".wikitable > thead:nth-child(2) > tr:nth-child(1) > th:nth-child(1)"
}
],
"extract": {
"table": "table.wikitable"
},
"content": false
}'
{
"url": "https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)",
"status": 200,
"content": null,
"actions": [
{
"selector": ".wikitable > thead:nth-child(2) > tr:nth-child(1) > th:nth-child(1)",
"verbose": "Element \".wikitable > thead:nth-child(2) > tr:nth-child(1) > th:nth-child(1)\" clicked"
}
],
"data": {
"table": [
{
"tag": "table",
"value": null,
"text": null,
"options": null,
"html": "<table ...<content omitted for the sake of examaple>"
"rows": [
[
"Afghanistan",
"14,467",
"2022",
"14,266",
"2021",
"14,174",
"2022"
],
....<rows omitted for the sake of example>
],
"headers": [
[
"Country/Territory",
"IMF[1][13]",
"World Bank[14]",
"United Nations[15]"
],
...
]
}
]
},
"transferSize": 412998,
"session": "GQpC7BO3xD"
}
Use it with your existing Puppeteer or Playwright code directly:
import puppeteer from 'puppeteer';
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://api.fetchbytes.com/ws?api_key=xxxxxx',
});
const page = await browser.newPage();
await page.goto('https://botproxy.com/');
await page.screenshot({ path: 'puppeteer_test.png' });
await browser.close();
Implement Python client in just 10 lines of code:
import requests
import time
import os
API_URL = "https://api.fetchbytes.com/"
API_KEY = os.environ.get("FETCHBYTES_API_KEY", "password1")
def fetch_bytes(method, json=True, **kwargs):
start = time.time()
res = requests.post(API_URL + method + "?key=" + API_KEY, json=kwargs)
print(f"API call <{method}> took {time.time() - start:.2f} seconds")
if res.status_code != 200:
print("Error:", res.status_code, res.text)
res.raise_for_status()
if json:
return res.json()
return res.content
# Example client usage
import pprint
def test_residential_proxy():
res = fetch_bytes("session", keep_alive=2, enable_adblock=True, proxy_country="rs-fr")
session_id = res["session"]
res = fetch_bytes(
"navigate",
session=session_id,
url="https://ipinfo.io/json",
content=False,
)
pprint(res, indent=2)
print("Taking screenshot")
res = fetch_bytes("screenshot", json=False, session=session_id)
with open("test_proxy.png", "wb") as out:
out.write(res)
def test_extract():
res = fetch_bytes(
"navigate",
url="https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)",
)
session_id = res["session"]
res = fetch_bytes(
"data",
session=session_id,
extract={"table": "table.wikitable"},
)
pprint(res, indent=2)
View the API documentation (GitHub) and usage examples for complete information on available methods and parameters.