The page goes in.
Only the signal
comes out.
Nav, ads, cookie walls and tracking are the noise of a web page. WellMarked drives them out and returns clean Markdown with typed metadata — about ~94% fewer tokens than raw HTML. One endpoint, one Bearer token, no credit multipliers.
Strip the noise. Keep the signal.
Cookie banners, ads, nav, popups, related-article rails, newsletter modals. We send back the main content only, as clean Markdown, with typed metadata included.
React Server Components represent a fundamental shift in how we build applications — rendering on the server, streaming to the client…
…without shipping the component code in the client bundle at all.
# Understanding React Server Components React Server Components represent a fundamental shift in how we build applications — rendering on the server, streaming to the client, without shipping the component code in the client bundle. ## Streaming by default - No client bundle cost - Progressive HTML delivery - Works with existing Suspense boundaries [Read the RFC](/rfc/server-components)
"metadata": {
"title": "Understanding RSC",
"author": null,
"date": "2026-03-14",
"url": "https://example.com/rsc",
"retrieved_at": "2026-03-14T09:41:02Z"
},
"metrics": {
"input_tokens": 18402,
"output_tokens": 1104,
"tokens_saved": 17298,
"reduction_pct": 94.0
}Illustrative values. To see the real thing — run a live extraction on any URL, and get the rendered Markdown, the complete JSON response body and the token count. No account required.
One call. Nothing to wire up.
A single HTTP POST with a Bearer token, or a typed SDK that wraps every endpoint with automatic job polling and typed errors. Both return the same shape.
curl -X POST https://api.wellmarked.io/extract \ -H "Authorization: Bearer wm_your_api_key_here" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/article", "format": "markdown"}'
from wellmarked import WellMarked wm = WellMarked(api_key="wm_...") result = wm.extract("https://example.com/article") print(result.markdown) # clean, structured print(result.metadata) # typed: title, author, retrieved_at
import { WellMarked } from "wellmarked"; const wm = new WellMarked({ apiKey: "wm_..." }); const result: ExtractResult = await wm.extract( "https://example.com/article" ); console.log(result.markdown);
The web-content layer for modern AI.
RAG pipelines
Reliable Markdown for vector ingestion. Predictable per-request pricing makes budget projection a spreadsheet formula rather than a guess.
AI agents
llms.txt-friendly, with polymorphic job polling and typed errors. A compact endpoint surface, fully programmable from a Bearer token alone.
No-code workflows
The official n8n community node ships every endpoint as a typed action. Submit-and-wait fans results out, one item per URL.
Research & monitoring
JS rendering for single-page apps. Robots-respecting crawl with truncation flags. retrieved_at gives you cache freshness for free.
More than a Markdown endpoint.
Pay-per-call without an account, live search that arrives already extracted, a native agent connector, and output your pipeline can ingest as-is.
- No account
- Point a crypto wallet at any extraction endpoint and pay $0.01 per unit — no signup, no key. A keyless request comes back with an x402 challenge — the HTTP
402 Payment Requiredhandshake — and once you settle it in USDC on Base, the job runs. Unearned units are refunded. - Search
POST /searchruns a live web search and returns each result page as clean Markdown — search and extraction in one call. Pro and up.- MCP
- Claude Desktop, Cursor and Claude.ai connect to the hosted MCP server over OAuth, with no key to paste. Extract, search, bulk and crawl become native agent tools.
- Output shape
- One
formatparameter:markdown,html,links, typedjsonblocks, or embedding-readychunkswith token offsets.
One unit, one page. No multipliers, ever.
Start free, scale predictably. The same Bearer token works from your first request on Free to your millionth on Enterprise.
Free
For evaluation and side projects.
$0/mo
- 1,000 requests / month
- Hard cap — no overage charges
- Standard extraction
- Bulk extraction (up to 5 URLs/job)
Pro
For shipping production AI pipelines.
$29/mo
or $299/yr
- 10,000 requests / month
- JS rendering
- Bulk extraction (up to 50 URLs/job)
- Crawl up to 2,000 pages/job
- Web search (POST /search)
- $0.0035/req overage
Growth
For teams scaling their pipelines.
$79/mo
or $799/yr
- 40,000 requests / month
- JS rendering
- Bulk extraction (up to 200 URLs/job)
- Crawl up to 10,000 pages/job
- Up to 4 team members
- $0.0020/req overage
Enterprise
For teams running at scale.
$199/mo
or $1,999/yr
- 250,000 requests / month
- Unlimited bulk extraction
- Unlimited crawl pages
- Unlimited team members
- Priority request queue
- $0.0012/req overage
What the bill actually looks like.
Each figure below is the vendor's published entry tier. The difference is not the headline number — it is whether one page costs one unit.
| Capability | WellMarked | Firecrawl | Jina Reader | Diffbot |
|---|---|---|---|---|
| Entry paid price | $29/mo | $16/mo | Token top-ups (opaque) | $299/mo |
| Pricing model | Flat per-request | Credits, 1–9× multipliers | Per-token, shared across APIs | Credits, 1–100× |
| Effective overage | $0.0035/req on Pro$0.0020 Growth · $0.0012 Enterprise | $0.009–$0.045/req | Unpredictable | $0.0012/req (Startup) |
| Bulk requests | Yes5/job Free · 50 Pro · 200 Growth · unlimited Enterprise | Std+ only ($83/mo) | No | No |
| Site crawl | Yes2k pages Pro · 10k Growth · unlimited Enterprise | Std+ only | No | Yes |
| Web search + extract | YesPOST /search · 5 results Free · 50 Growth | No | Yes | No |
| Pay-per-request, no account | Yesx402 · $0.01/unit, USDC on Base | No | No | No |
| Python + JS/TS SDKs | Yes | Both | Python only | No |
| n8n community node | Yes | Yes | No | No |
| Priority request queue | YesEnterprise → Growth → Pro → Free | No | No | No |
| JS rendering | Yes | Yes | Yes | Yes |
Frequently asked.
How does your pricing actually compare to Firecrawl or Jina?
Flat per-request — one page is one unit. No credit multipliers, no token math. Pro covers 10,000 requests for $29/mo and any overage is $0.0035/req. The same 1,000-page workload runs about $3.50 here against roughly $9–$45 on Firecrawl depending on request type. The full comparison article has the worked arithmetic.
Do I have to install an SDK?
No — the API is one HTTP POST with a Bearer token. We publish official SDKs (pip install wellmarked, npm install wellmarked) that wrap every endpoint with typed responses, automatic job polling and typed errors. Use whichever you prefer.
Can I crawl a whole site?
Yes. POST /crawl does breadth-first traversal from a root URL, same-site only (eTLD+1), respecting robots.txt. Pro caps at depth 5 and 2,000 pages; Enterprise is unlimited. Only successfully-extracted pages count against your quota — timeouts, robots-disallowed and no-content responses are free.
What about JS-heavy single-page apps?
Pass render_js: true. We spin up Playwright, wait for hydration, then extract. Available on Pro and Enterprise, against the same per-request quota — no separate plan, no premium tier.
What happens if I hit my monthly quota?
On Free, requests return 429 with retry_after — a hard cap, so there are no surprise charges. On Pro, Growth and Enterprise, overages bill at $0.0035, $0.0020 and $0.0012 per request at the end of the month via Stripe.
Is there an n8n, Zapier or Make integration?
n8n today — n8n-nodes-wellmarked is an official community node on npm, with every endpoint exposed as a typed action. Zapier and Make are on the roadmap.
Don’t take the number on faith.
Paste a URL you already know and read what comes back — the Markdown, the JSON response body, and the token count against the raw HTML. No account, no key, no card.