fetchOne call. The page. Nothing else.
/fetch is the lean HTTP endpoint. Body is the content. Metadata in response headers. No JSON envelope, no async polling, no browser.
curl -G https://api.bytekit.com/v1/fetch \ -H "Authorization: Bearer $BYTEKIT_API_KEY" \ --data-urlencode "url=https://stg.bytekit.com" \ --data-urlencode "format=markdown"
Sometimes you do not need a browser. You need an HTTP client that already knows about proxies, geo, and clean output formats — and that returns what you asked for as the response body, not buried in a JSON field.
/fetch is that client. One round trip,
sub-second on most public pages.
fetch or scrape?
/fetch | /scrape | |
|---|---|---|
| Shape | body = content | JSON envelope |
| Metadata | response headers | response fields |
| Browser features | no | yes |
wait_for_selector | no | yes |
actions (click, etc.) | no | yes |
| Typical latency | ~500 ms | 1–15 s |
| Best for | simple pages, agents, tool calls, curl scripts | dynamic pages, protected sites with render requirements |
Rule of thumb: start with /fetch. Escalate to
/scrape when a page needs JavaScript to
render or interactive steps before capture.
output formats
Pick one. Set it with ?format= (GET) or "format": (POST).
markdown | LLM-ready text. Content-Type: text/markdown |
html | Sanitized HTML. Content-Type: text/html |
(none) | Raw passthrough. Upstream Content-Type preserved. |
metadata in headers
Every response carries X-Fetch-* headers. The body stays
clean for pipes, curl | jq, and agent tool calls.
X-Fetch-ID | Stable ID for support and reruns |
X-Fetch-Status | Upstream HTTP status |
X-Fetch-Content-Length | Wire bytes used for billing |
X-Fetch-Duration-Ms | End-to-end fetch time |
X-Fetch-Cache / Cache-Age | Cache hit/miss and age in seconds |
X-Fetch-Credits-Charged | What this call cost |
what you give up
/fetch is fast because it does not run a
browser. So no wait_for_selector, no actions,
no waiting for network_idle. If the page needs JavaScript
to render, you want /scrape.
Anti-bot coverage still applies — fingerprints and proxies are part of every fetch — but a page that only renders client-side will return empty
content. We tell you in X-Fetch-Status and X-Fetch-Waf-Vendor.
cost
Same byte-based billing as /scrape. Fewer
features means fewer bytes.
| 30 KB markdown fetch | about 0.00003 GB |
| 1 GB | roughly 33,000 fetches at that size |
| Cache hit | half cost |
| Zero-byte failure | $0 |