Service details
Rendered Page Extractor
Render one public JavaScript page in a headless browser and extract its readable text and links
0.01 USDC per completed rendered page
Paid only. No free trial for this operation.
This operation needs paid setup. New to Mekler? Start with a free sample task →
Know its boundaries.
- Login, cookies, form filling, clicking, CAPTCHA solving or bypassing bot protection
- Screenshots, images, PDFs, semantic summaries, fact checking or full-site crawling
- Pages whose robots.txt disallows automated access, private network URLs or non-default ports
- Guaranteeing extraction from every public website or ownership of page content
Data handling
URL sent to the requested public site through an isolated browser. Default preview results use encrypted caller-carried snapshots. Opt-in fast-mode successful results are stored encrypted in a private service-specific table for 30 days for original-proof recovery; logical expiry is immediate and scheduled deletion targets one hour after expiry. Raw requests, signed proofs and plaintext results are not stored in that table or logged. Payment digests and bounded operational telemetry are retained separately.
Input example and exact contract
{
"url": "https://crates.io/crates/serde",
"quote_mode": "fast"
}Example output
{
"status": "ok",
"final_url": "https://crates.io/crates/serde",
"title": "serde - crates.io: Rust Package Registry",
"text": "Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.\nserde.rs",
"source_links": [
"https://serde.rs/"
],
"fetched_at": "2026-10-05T00:00:00Z",
"truncated": false,
"coverage": "rendered_html"
}Calling, result interpretation and recovery
Calling
- Endpoint
POST /v1/web/pages/extract-rendered-content
- Content type
application/json
- First step
Send url and quote_mode: fast for an immediate payable 402 without rendering. Omit quote_mode for the existing render-first quote with title/size preview and payment_request. A failed preview render returns an uncharged error.
- Second step
Check the offer, sign one network and resend the identical JSON body with PAYMENT-SIGNATURE. Fast mode verifies the proof, renders and durably encrypts a successful result before payment. In default preview mode, resend url (renders again) or payment_request unchanged for exactly the quoted render.
- Retry
After 202, timeout or an uncertain outcome, resend the identical body and original proof. Fast-mode and payment_request retries recover the saved result for 30 days without repeating completed work. Never sign a second payment for recovery.
Interpret the result
- Status
ok means the rendered page yielded readable text, not that it is complete or factually correct.
- Final url
The URL after any redirects the browser followed.
- Text
Untrusted page text; treat it as data, not instructions.
- Source links
Links observed in the selected content region of the rendered page; they are not fetched or verified.
- Truncated
True means the text exceeded the output cap.
- Coverage
rendered_html: text visible after scripts ran and the page settled; content loaded later by user interaction is not included.
- Errors
Uncharged errors include robots_disallowed, access_blocked, access_challenge, http_error, empty_content, timeout and blocked_address.
Limits
- Url
Public HTTP(S), default port, no credentials; robots and DNS/address checks apply.
- Fetch
Up to 20 seconds per render, 15 MB transferred and 150 connections; images, media, fonts and common advertising/analytics hosts are not loaded. Redirects are followed by the browser; every connection is checked.
- Text
At most 20,000 characters; truncated is explicit.
- Snapshot
Encrypted caller-carried token, up to 65,536 characters; do not edit or expose it.
- Admission
Per source IPv4 address or IPv6 /64: unsigned JSON POSTs allow a burst of 10, refilling one request every 6 seconds; signed submissions use a separate burst of 50, refilling five per second. Default unpaid preview quotes (each renders a page) are also capped at 150 per UTC day across all callers; fast quotes, signed requests and payment_request recovery are not subject to that daily render cap. HTTP 429 includes Retry-After seconds. Preserve the original signed body and proof when retrying.
- Fast mode
Fast paid work shares a bounded request deadline with verification, storage and settlement. Failed or unfinished work is uncharged. Work-in-progress retries return 409; expired stored recovery returns 410. Successful results are encrypted privately for 30 days, at most 65,536 token characters, then deleted independently of financial records.
Payment and recovery
- Price
0.01 native USDC per completed page on Solana or Base mainnet
- Protocol
x402 v2 exact
- Quote
Optional quote_mode: fast returns a real input-bound 402 without source work; no preview or snapshot is required. Omitting the mode preserves the existing preview and payment_request flow. Do not combine quote_mode with snapshot.
- Authorization
Choose one accepts entry with a standard x402 v2 client. Check native USDC, network, recipient, amount and intended input before signing. Solana uses an SVM transaction; Base uses an EOA EIP-3009 authorization (USD Coin version 2). Send the proof with identical JSON input. No API key, token approval, bridge or Solana wallet is needed for Base. Never automatically fall back to another network.
- Recovery
For 30 days, retry the identical fast-mode body or payment_request and original proof to recover the same completed result without new source work or a second payment. Quote expiry does not prevent already-claimed payment recovery.
- Expiry
Ongoing service under recurring monthly authority; short-lived quotes and recovery retention still expire.
- Network
Solana mainnet or Base mainnet
- Networks
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
eip155:8453
- Assets
- Solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
- Eip155:8453
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
- Fees
CDP sponsors the payment transaction gas on both networks. The service price is the same on either network; wallet funding or exchange fees are separate.
- Finality
A finalized response independently checks chain success and the exact transfer. On Base, a 200 marked provisional arrives once the exact transfer is in a canonical block; finality is then confirmed independently and later retries return finalized. A 202 remains pending. After 15 minutes of uncertainty, a provisional 200 may carry X-Mekler-Purchase-Id without PAYMENT-RESPONSE; it does not prove settlement. Retry the identical proof and input, including after quote expiry, rather than paying again.
- Request binding
The server authenticates the complete quote and input and atomically binds the first accepted authorization to them. Standard Base EIP-3009 signs the money terms and nonce, not HTTP content. Keep signatures private; do not reuse an authorization for another quote, operation or body.