Reference
Full HTTP contract for the Scrape API including endpoints, parameters, response shapes, and error codes.
Base URL
https://api.inndx.ioAuthentication
There is no API key. Every request is authenticated by attaching a signed MPP payment authorization. On the first unauthenticated request the server responds with 402 Payment Required and a payment challenge; your client signs the authorization from a funded Tempo wallet and retries. The SDKs and tempo request handle this exchange automatically. See How it works for the full flow.
Scrape URL
/v1/scrapeFetches a URL and returns its content in one or more formats. This is the primary endpoint for full control over output and proxy settings.
- url stringrequired
The page to fetch. Must be a valid absolute URL including scheme.
- formats Format[]
The output formats to return. Defaults to
[{ "kind": "markdown" }]when omitted. Each entry is a format object — see Output formats for the full list.- proxy string
Route the request through a proxy. Pass
"isp"to use an ISP residential proxy. Omit for a direct connection.- timeout_seconds number
Maximum time in seconds to wait for the page to load before returning an error. Applies per scrape call within a session.
- locale string
BCP 47 language tag sent with the request (e.g.
"en-US","fr-FR"). Influences the language of the returned content on pages that respectAccept-Language.
Format objects
Each entry in formats is an object with a kind field. The remaining fields depend on which kind you choose:
- kind "markdown"required
Selects markdown output.
- skip_tags string[]
HTML tags to strip from the output before converting to markdown.
- kind "html"required
Selects HTML output.
- kind "json"required
Selects structured JSON output.
- fields Field[]
The fields to extract from the page. See Output formats for the full field map syntax.
- url string
The URL that was fetched, after any redirects.
- results Result[]
One entry per requested format, in the same order as the
formatsinput.
Result objects
Each entry in results corresponds to one of the requested formats. The shape depends on the kind field:
- kind "markdown"required
Indicates markdown output.
- content string
The page content converted to markdown.
- kind "html"required
Indicates HTML output.
- content string
The raw HTML of the page after loading and rendering.
- kind "json"required
Indicates structured JSON output.
- data object
The structured data extracted from the page according to the requested field map.
- kind "binary"required
Indicates binary output.
- content string
The raw response bytes, base64-encoded.
- content_type string
The MIME type of the content (e.g.
"image/png"). Useful for handling the binary data appropriately.
Example
tempo request -X POST https://api.inndx.io/v1/scrape \
--json '{"url":"https://example.com","formats":[{"kind":"markdown"}],"locale":"en-US"}'Scrape URL Markdown
/v1/scrape/{url}Shortcut that fetches a URL and returns its content as markdown. No request body. Ideal for quick testing and for use with tempo request.
The {url} path segment is the full URL to fetch, including scheme.
- X-Scrape-Proxy string
Route the request through a proxy. Pass
"isp"to use an ISP residential proxy. Omit for a direct connection.- X-Scrape-Timeout-Seconds number
Maximum time in seconds to wait for the page to load before returning an error.
- X-Scrape-Locale string
BCP 47 language tag sent with the request (e.g.
"en-US","fr-FR"). Influences the language of the returned content on pages that respectAccept-Language.
Example
tempo request https://api.inndx.io/v1/scrape/https://example.comRate limits
See Pricing for rate limits and API limits.
HTTP status codes
| Status | Meaning |
|---|---|
200 OK | The request succeeded. |
402 Payment Required | No payment was attached. The response body contains an MPP payment challenge. |
422 Unprocessable Entity | The request body failed validation. |
429 Too Many Requests | Rate limit exceeded. |
500 Internal Server Error | An unexpected server error occurred. |
Error shapes
Validation error (422)
Returned when one or more request fields fail validation:
{
"error": "validation",
"fields": [
{
"field": "url",
"errors": ["must be a valid URL"]
}
]
}Generic error
Returned for all other non-2xx responses:
{
"error": "...",
"message": "A description of what went wrong."
}