Fetch Bytes . com

Simple, Powerful Web Automation and Scraping

Everything you need in one API: hosted headless Chrome, anti-bot and CAPTCHA solutions, proxies, and browser automation—all made simple and scalable to meet your needs.

What is included

  • Simple yet powerfull API
  • Hosted fully managed headless Chrome instances
  • Antibot bypass set up
  • Automatic CAPTCHA solving with humans and AI on backend
  • Rotating Datacenter and Residential Proxies network
  • Access to CDP to connect puppeteer, playwright or remote debugging session

Why Us

We value your time and offer a straightforward solution that works and delivers exactly what it promises. We believe that your time is far more valuable than the cost of our services.

We offer a generous free trial (available after your business profile is approved). Use our service with a completely free trial subscription for as long as you need to ensure it works for your use case. Subscribe to a paid plan when you are ready.

With eight years of experience running a rotating proxy network and over six billion headless Chrome sessions, we've mastered running Chrome in the cloud. Trust us — you don't want to do it yourself.

Pricing

Starter

$100 / month

  • 5 concurrent sessions
  • $50.00 pre paid usage

  • $12.00 extra concurrency
  • $1.00/GB DC proxy traffic
  • $6.00/GB residential traffic
Sign Up

Prod

$300 / month

  • 20 concurrent sessions
  • $200.00 pre paid usage

  • $10.00 extra concurrency
  • $0.80/GB DC proxy traffic
  • $5.00/GB residential traffic
Sign Up

Custom

Let's talk

  • Custom conditions
  • Only available to clients who have been on Prod with us for a while
Contact Us

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
Buy now with PayPal

Examples

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"
}

Simple Python client:

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("configure", 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) for complete information on available methods and parameters.

Still have questions?

Contact Us