Fetch any URL and return its article content with the clutter stripped — nav, ad
Fetch any URL and return its article content with the clutter stripped — nav, ads, sidebars, footers, scripts, styles, comments removed via heuristic extraction (<article> / <main> / role=main / densest block). Choose the output with `format`: markdown (default), text, both (JSON envelope), html (a self-contained readable reader-view page, raw text/html), or pdf (a clean typeset reading document, raw application/pdf). html/pdf are built from the same cleaned content, so they carry no live page, no third-party assets, no trackers. SSRF-guarded, 512KB body cap, 8s timeout, 5 redirects max. JSON formats return { url, finalUrl, title, markdown?, text?, wordCount, sourceBytes }. This uses a raw HTTP fetch (no JavaScript) — for client-rendered / SPA pages whose content only appears after JS runs, use /api/url/render (same formats, headless-rendered). For a pixel-perfect image of the live page use /api/ai/screenshot; to enumerate a page or sitemap into its links use /api/url/map.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://2s.io/api/url/clean
| Category | Image and media |
|---|---|
| Provider host | 2s.io |
| Networks | eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 40 from 3 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.0027 | 339 ms |
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"format": "markdown",
"url": "https://example.com"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"properties": {
"method": {
"const": "GET"
},
"queryParams": {
"additionalProperties": false,
"properties": {
"format": {
"default": "markdown",
"enum": [
"markdown",
"text",
"both",
"html",
"pdf"
],
"type": "string"
},
"url": {
"maxLength": 2048,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"type": {
"const": "http"
}
},
"required": [
"type",
"method",
"queryParams"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}