Browser fleets
Headless browsers to provision, patch, and scale.
ByteKit turns public pages into markdown, HTML, raw HTML, links, images, and metadata, with protected-site handling, country controls, retries, and caching built in.
curl -X POST https://api.bytekit.com/v1/scrape \ -H "Authorization: Bearer sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/product", "formats": ["markdown", "links", "images"] }'
{ "formats": { "markdown": "# Wireless Headphones\n\n$149.00 · In stock…", "links": [ "https://example.com/cart", "https://example.com/reviews" ], "images": [ "https://example.com/img/headphones.jpg" ] }, "metadata": { "title": "Wireless Headphones — Example Store", "status": 200, "contentType": "text/html", "contentLength": 41822, "retrievedAt": "2026-07-01T14:22:07Z" } }
Example response · not a full schema. Default format is raw_html.
Pages redirect, render late, show different content by country, hide useful text behind layout chrome, and break simple HTTP fetches. ByteKit handles the capture layer so your product can work with clean page content instead of scraping infrastructure.
Headless browsers to provision, patch, and scale.
IP blocks, regional differences, and retries to manage.
Nav, banners, and footers buried in markup.
Timeouts, redirects, and empty responses.
Ask for the formats your workflow needs. Every response keeps source metadata so you can trace where the content came from.
markdown | Clean text for agents, RAG, and LLM context. |
html | Cleaned article HTML when structure matters. |
raw_html default | The full page response as received. |
links | Discovered links for navigation, indexing, and follow-up jobs. |
images | Image URLs and metadata from the page. |
Metadata included with every scrape — status, final URL, title, content type, content length, and retrieval time.
Works on protected public sites, with no proxy setup or IP management on your side.
Use country and mobile options when pages vary by location or device.
Control freshness, cost, and long-running jobs without changing your integration.
Strip page chrome, keep useful structure, and reduce noisy context before it reaches your app.
Give agents current page content before they answer or act.
Build cleaner corpora from public docs, articles, and knowledge pages.
Capture product pages, pricing pages, availability, and regional variants.
Add page capture to your product without running Playwright, queues, or proxies.
Scrape usage is billed by bandwidth, with a 50% cache discount and zero cost for failed captures. Every plan supports the same API — start on PAYG with a one-time free balance, then pay for usage.
| PAYG free balance | 50 MB + 100 credits |
| PAYG bandwidth | $8 / GB |
| Monthly plans | from $29 / mo |
| Cache hits · failed | 50% · $0 |
The formats you request — markdown, html, raw_html, links, and images — plus metadata: status, final URL, title, content type, content length, and retrieval time. The default format is raw_html; list the others you want in the formats array.
Yes. Pages that render client-side are captured after they load. Use delay_ms to wait for late content, and ByteKit does more work to retrieve pages that need it.
No. Protected-site handling, country controls, and retries are built in. You send a URL and get page content back — no browsers, IP management, or queues to run.
Yes. Set country to route the request through a region, and mobile to capture the mobile version when a page varies by location or device.
Yes. Set async and provide a webhook_url. ByteKit fetches the page and POSTs the result to your endpoint when it is ready, so you never hold a request open for slow jobs.
A cache TTL serves recent captures from cache at a 50% discount instead of re-fetching. Lower the TTL when you need fresher content, or bypass it for time-sensitive pages.
The response returns a clear failure with a status instead of a false success, so you can tell blocked, invalid, and unsupported pages apart. Failed zero-byte captures are not billed.
Scrape is for public pages and pages you are authorized to access with provided headers or cookies. It is not for paywalled content, walled-garden social platforms, or multi-step login workflows.
Paste a real public URL into the Scrape playground and see the output before you write integration code.
PAYG starts with a one-time free balance. No card required.