Endpoint
X-API-Key header. See Authentication.
Request
Parameters
URLs to fetch and extract. Maximum 10 URLs per request.All URLs must use
http or https. Private IP addresses, localhost, and cloud metadata endpoints are rejected.Output format for the
text field in each result. One of:html— semantic HTMLmarkdown— clean Markdown, recommended for LLMs (default)json— structured document tree
When
true, include all <a href> URLs found on the page in the links field.When
true, include all <img src> URLs found on the page in the image_links field.Response
results[]
One entry per successfully fetched URL.
The original requested URL.
The URL after any redirects. May differ from
url.Page title, preferring
og:title over <title>. null if not found.Meta description, preferring
og:description over <meta name="description">. null if not found.Detected page language (e.g.
"en"). null if undetectable.Author from meta tags.
null if not found.Publication date, if detectable.
null if not found.Extracted page content. Format depends on the
format request parameter:stringwhenformatis"html"or"markdown"object(document tree) whenformatis"json"
All
<a href> URLs on the page, resolved to absolute URLs. Only present when links: true was requested.All
<img src> URLs on the page, resolved to absolute URLs. Only present when image_links: true was requested.Time to fetch and extract this URL, in milliseconds.
null if unavailable.Output format used for the
text field. Echoes the request format parameter ("markdown", "html", or "json").Fields that could not be extracted (
title, description, language, author, published_date) are omitted from the response when null rather than returned explicitly as null.errors[]
One entry per URL that could not be fetched. Always present, may be empty. Per-URL failures do not affect the rest of the batch.
The URL that failed.
Structured error code identifying the failure type. One of:
timeout, bot_blocked, empty_content, invalid_url, proxy_error, fetch_error.SDK Methods
Error Codes
HTTP-level errors apply to the entire request.| Status | Meaning |
|---|---|
400 | Invalid request — missing urls, too many URLs (max 10), or bad parameter value |
401 | Missing or invalid API key |
429 | Rate limit exceeded |
500 | Internal server error |
errors[] alongside a 200 response. The error field is one of these codes:
| Error code | Meaning |
|---|---|
timeout | Page did not finish loading within the request deadline |
bot_blocked | Site returned a bot-protection challenge (Cloudflare, Incapsula) |
empty_content | Browser returned HTML but no extractable text found |
invalid_url | URL rejected before fetch (private IP, invalid scheme, disallowed host) |
proxy_error | Proxy tunnel failed — site may be reachable directly |
fetch_error | Catch-all for other failures |
Per-URL fetch failures are not HTTP errors. They appear as entries in
errors[] alongside a 200 response.Each URL has a 240-second backend timeout. If the page doesn’t respond within 240 seconds, that URL returns a
timeout error in errors[] while the rest of the batch continues. Set your client-side timeout to at least 500 seconds for batch requests with multiple URLs.Rate Limits
Limits apply per API key, measured in URLs per minute across all requests.| Plan | URLs / minute |
|---|---|
| Free Trial | 25 |
| Pay As You Go | 50 |
| Starter | 100 |
| Pro | 250 |
HTTP 429. Implement exponential backoff before retrying.
Billing
1 credit = 15 URL fetches. Failed URLs (those that appear inerrors[]) are not charged.
Supported Content Types
| Content Type | Behavior |
|---|---|
| HTML | Full text extraction with formatting |
| Text content extracted | |
| JSON | Raw JSON returned as text |
| Plain text | Full text returned |
| Images (PNG, JPG) | Not supported — returns an error indicating no extractable content |
Usage Endpoint
Retrieve a paginated history of your fetch operations.X-API-Key header. See Authentication.
Query Parameters
Filter results created after this timestamp. Example:
2026-01-01T00:00:00ZFilter results created before this timestamp. Example:
2026-02-01T00:00:00ZFilter by result status. One of:
completed, failed.Maximum number of items per page. Range: 1-1000.
Page number for pagination.
Response
items[]
Unique identifier for the fetch result.
The original requested URL.
The URL after any redirects.
Page title, if detected.
Meta description, if detected.
Detected page language (e.g.
"en").Page author, if detected.
Published date, if detected.
The format used for extraction:
markdown, html, or json.Result status:
completed or failed.Where the request originated:
api, cli, python-sdk, js-sdk, mcp, etc.The request ID that grouped this URL with others in a batch.
Length of the extracted text content in characters. The full text is not included in usage responses.
Number of links found on the page.
Number of image links found on the page.
Time taken to fetch and extract the page, in milliseconds.
Timestamp when the fetch was executed.
Error message if the fetch failed.
null for successful fetches.Error Codes
| Status | Meaning |
|---|---|
400 | Invalid query parameters |
401 | Missing or invalid API key |
403 | Fetch API access is not enabled for this account |
500 | Internal server error |
Related
Fetch Overview
First request, response shape, and product routing
Authentication
API key setup and troubleshooting
Error Codes
Full list of API error codes