services / web-scrape
weboperational · 64 ms
Web Scrape (URL to Markdown)
Fetch any public URL and return the page as clean Markdown for LLM consumption (title, meta description, main content with headings/lists/links preserved). Pass render:true to execute JavaScript in a real browser for SPAs (slower, returns plain text). Use this instead of raw fetch when a site blocks bots or when you want token-efficient content. Params: url (required), max_chars (default 8000, max 60000), include_links boolean, render boolean.
Run free trial ↗1 free call per day with the example input. Paid: $0.004 USDC, no limit.
Call it
Input
| Field | Type | Description |
|---|---|---|
| url * | string | Public http(s) URL to scrape |
| max_chars | integer = 8000 | Truncate Markdown after this many characters |
| include_links | boolean = false | Also return up to 100 absolute links found on the page |
| render | boolean = false | Render with a headless browser (for JavaScript-heavy pages). Returns plain text instead of Markdown. |
Output
| Field | Type | Description |
|---|---|---|
| url | string | Final URL after redirects |
| status | integer | HTTP status of the fetched page |
| title | string | |
| description | string | Meta description if present |
| markdown | string | Page content as Markdown |
| word_count | integer | |
| truncated | boolean | |
| rendered | boolean | True if a headless browser was used |
| links | array | |
| fetch_ms | integer | |
| fetched_at | string |
Example response (data)
{
"url": "https://example.com/",
"status": 200,
"title": "Example Domain",
"description": "",
"markdown": "# Example Domain\n\nThis domain is for use in illustrative examples in documents.\n\n[More information...](https://www.iana.org/domains/example)",
"word_count": 21,
"truncated": false,
"rendered": false,
"fetch_ms": 312,
"fetched_at": "2026-09-09T12:00:00.000Z"
}