Self-hosted web page reader. Convert any webpage to clean, LLM-friendly markdown.
⚠️ API Key Required - All endpoints require authentication.
Provide your API key via:
X-API-Key headerAuthorization: Bearer header?apiKey= or ?api_key= query parametercurl -H "X-API-Key: rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/api/read?url=https://example.com"
curl -H "Authorization: Bearer rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/api/read?url=https://example.com"
curl "https://api.fast-researcher.com/api/read?url=https://example.com&apiKey=rj_live_YOUR_KEY_HERE"
import requests
response = requests.get(
"https://api.fast-researcher.com/api/read",
params={"url": "https://example.com"},
headers={"X-API-Key": "rj_live_YOUR_KEY_HERE"}
)
print(response.json())
const response = await fetch(
"https://api.fast-researcher.com/api/read?url=https://example.com",
{
headers: {
"X-API-Key": "rj_live_YOUR_KEY_HERE"
}
}
);
const data = await response.json();
curl -H "X-API-Key: rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/r/https://example.com"
curl -H "X-API-Key: rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/api/read?url=https://example.com"
curl -X POST -H "X-API-Key: rj_live_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com", "https://github.com"]}' \
"https://api.fast-researcher.com/api/batch"
curl -H "X-API-Key: rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/api/pdf?url=https://arxiv.org/pdf/2301.00234.pdf"
curl -H "X-API-Key: rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/api/screenshot?url=https://example.com"
curl -H "X-API-Key: rj_live_YOUR_KEY_HERE" \ "https://api.fast-researcher.com/api/search?q=best+react+frameworks"
format - Output format: markdown (default), text, or htmlmetadata - Include metadata: true (default) or falsemaxLength - Truncate content to N characterstimeout - Request timeout in ms (default: 15000)renderJS or js - Use JavaScript rendering (Playwright): true or false (default)waitFor - CSS selector to wait for (only with renderJS=true)networkIdle - Wait for network idle: true (default) or falserenderJS=true for SPAs (React, Vue, etc.)