/scraping-api/ — Jina Reader API
Choose Jina Reader’s main-content or full-page Markdown, JSON response wrapper and cache controls. Check URL fragments, selectors and output-token billing.
documented capabilities
HTTP API- Known URL first
- Prefix a complete URL with https://r.jina.ai/ to read that page, for example https://r.jina.ai/https://example.com. The separately authenticated s.jina.ai search endpoint has its own terms.[1][2]
- Main content or full page
- The default content mode extracts readable page content as Markdown. X-Respond-With: markdown returns full-page Markdown without the readability filter. Use the default for an article body; choose full-page mode when surrounding page text matters.[2][3]
- JSON wrapper versus fields
- Accept: application/json requests a JSON response with page URL, title and content. It does not ask Reader to extract your own JSON Schema fields. X-Respond-With selects the content representation inside the response.[1][2][3]
- HTML and text choices
- Set X-Respond-With: html for HTML or X-Respond-With: text for plain text. Select the representation your application will process before comparing output size or token usage.[2][3]
- Freshness
- Use X-No-Cache: true or X-Cache-Tolerance: 0 when cached output is unsuitable. Published sources give different cache lifetimes, so do not rely on one universal default TTL.[1][2][3]
- Missing dynamic content
- For a page that needs browser rendering, explicitly choose X-Engine: browser. X-Wait-For-Selector waits for an expected element; X-Target-Selector limits returned content and X-Remove-Selector removes unwanted elements.[1][2][3]
- Hash-based routes
- A URL fragment after # is normally kept by the HTTP client. For a route such as https://example.com/#/route, POST the full URL in the request body to https://r.jina.ai/ so Reader receives the fragment.[2][3]
Billing: Basic anonymous URL reading is rate-limited. Keyed Reader usage draws from the supplied API key’s output-token balance; optional modes can change token usage. Jina documents no token deduction for failed requests. Check the current key quota and rate table.
Outputs: markdown, text, html, json
Documented for: HTTP API
getting started
documentation reviewed- Choose a known public URL and whether the application needs main-content Markdown, full-page Markdown, HTML or plain text.
- Start with the simple GET example. Add Accept: application/json for a machine-readable wrapper; add Authorization: Bearer YOUR_JINA_API_KEY in your private client if using that key’s quota.
- Use the POST example for hash-based routes. If content is missing, check the target and cache first, then choose browser rendering or an appropriate wait/target selector.
- Inspect the returned URL, content and any error before storing the response. Set a token budget when oversized output should be rejected; do not treat truncated text as a complete page.
Requirements & limitations
- This record covers known-URL reading through hosted r.jina.ai. Jina’s search, embeddings, self-hosted Reader and specialized OCR paths have different requirements.
- A JSON response wrapper or CSS content selection does not establish arbitrary schema-guided field extraction.
- Rendering and selection controls are documented capabilities, not a measured success rate for protected or dynamic pages. A paid key does not guarantee access to a blocked target.
- The request examples were checked against documentation and parsed locally; no target-page fetch, paid API request or performance test was run.
We reviewed the linked documentation. No live service connection, checkout or performance test is claimed for this listing.
request examples
adapt to your targetRead a known page — curl
curl --fail-with-body 'https://r.jina.ai/https://example.com'[2] Official Reader guide: formats, selectors and URL fragments
Fresh full-page Markdown in JSON — curl
curl --fail-with-body 'https://r.jina.ai/https://example.com' \
-H 'Accept: application/json' \
-H 'X-Respond-With: markdown' \
-H 'X-No-Cache: true'[2] Official Reader guide: formats, selectors and URL fragments[3] Live Reader OpenAPI: headers and request schema
Preserve a hash route — curl
curl --fail-with-body 'https://r.jina.ai/' \
--data-urlencode 'url=https://example.com/#/route'[2] Official Reader guide: formats, selectors and URL fragments[3] Live Reader OpenAPI: headers and request schema
primary sources
3 references- Jina Reader: product options, rates and billing FAQChecked 2026-09-28
- Official Reader guide: formats, selectors and URL fragmentsChecked 2026-09-28
- Live Reader OpenAPI: headers and request schemaChecked 2026-09-28