Render any URL and extract clean text — no external APIs required
The TinyFish Fetch API renders web pages using a real browser (including JavaScript-heavy sites) and returns clean extracted text in your preferred format. Submit a URL, get back structured content.
POST https://api.fetch.tinyfish.ai
api.fetch.tinyfish.ai is the public Fetch API endpoint.
Control the format of the text field with the format parameter. When omitted, the default is markdown.
html
markdown
json
Semantic HTML.
{ "format": "html", "text": "<h1>Async Fn in Traits Are Now Available</h1><p>Starting with Rust 1.75, you can use <code>async fn</code> directly inside traits.</p><h2>What Changed</h2><ul><li>Works in all stable traits</li><li>No heap allocation for simple cases</li></ul>"}
Clean Markdown. Ideal for LLM consumption and readable storage.
{ "format": "markdown", "text": "# Async Fn in Traits Are Now AvailableStarting with Rust 1.75, you can use `async fn` directly inside traits.## What ChangedPreviously, writing async functions in traits required the `async-trait` crate...- Works in all stable traits- No heap allocation for simple cases- Compatible with `Send` bounds"}
Structured document tree. Useful for programmatic content processing.
{ "format": "json", "text": { "type": "document", "children": [ { "type": "heading", "level": 1, "text": "Async Fn in Traits Are Now Available" }, { "type": "paragraph", "text": "Starting with Rust 1.75, you can use async fn directly inside traits." }, { "type": "heading", "level": 2, "text": "What Changed" }, { "type": "list", "ordered": false, "items": ["Works in all stable traits", "No heap allocation for simple cases"] } ] }}