Scrape page content as Markdown, text, or HTML
scrape_pageLoads JavaScript-rendered pages in a real browser and extracts clean Markdown, text, HTML, or image URLs for reading and summarizing content that plain HTTP fetches cannot access.
Instructions
Loads a page in a real browser (JavaScript executed) and extracts its content: clean Markdown (best for reading and summarizing), plain text, the fully rendered HTML, and/or every image URL on the page. Extracted files are fetched and returned inline, truncated to max_content_chars. Works on JavaScript-heavy sites that plain HTTP fetches can't read. A screenshot is captured as part of the same request and counts as one credit.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| js | No | JavaScript executed in the page before capture, e.g. "document.querySelector('.popup').remove();". | |
| css | No | CSS injected before capture, e.g. '.header { display: none; }'. | |
| url | No | Website URL to render, including the protocol, e.g. 'https://example.com'. Either url or custom_html is required. | |
| block | No | Resources to block while rendering. For a clean capture use ['ads', 'cookie_banners', 'chat_widgets']. 'tracking' blocks analytics. 'javascript', 'stylesheets', 'xhr', and 'fetch' can break pages or hide content — use only when needed. Others: images, media (audio/video), fonts, text_tracks, event_source, websockets, manifest. | |
| delay | No | Extra wait in milliseconds after the page loads, before capture. Default 0. Use 1000-5000 for animations, charts, or late-loading content. | |
| proxy | No | Proxy to route the request through: 'address:port' or 'username:password@address:port' (an http:// prefix is accepted). Useful for geo-specific content or CAPTCHA-prone sites. | |
| width | No | Browser viewport width in pixels (max 7680). Default 1680. Use ~390 to emulate a phone, ~768 for a tablet. | |
| height | No | Browser viewport height in pixels (max 4320). Default 876. | |
| js_url | No | URL of an external JavaScript file to execute before capture. | |
| cookies | No | Cookies to set before loading, as 'name=value; other=value;'. Use for pages behind a login. | |
| css_url | No | URL of an external stylesheet to inject before capture. | |
| extract | No | What to extract. Default ['markdown']. Options: markdown, text, html, image_urls. | |
| headers | No | Extra HTTP headers as 'Name: value;' pairs separated by semicolons, e.g. 'Authorization: Bearer abc; X-Test: 1;'. | |
| timeout | No | Maximum milliseconds the API waits for the page to load before aborting. Default 100000. | |
| latitude | No | Latitude reported by the browser Geolocation API. | |
| timezone | No | IANA timezone to emulate, e.g. 'America/New_York', 'Asia/Karachi'. Default is the server timezone. | |
| dark_mode | No | Render with the dark color scheme (for sites that support it). Default false. | |
| grayscale | No | Desaturate the output, 0 (full color, default) to 100 (fully grayscale). | |
| lazy_load | No | Scroll through the whole page first so lazy-loaded images and sections render. Default false. | |
| longitude | No | Longitude reported by the browser Geolocation API. | |
| adjust_top | No | Scroll the viewport down this many pixels before capture. Default 0. Not supported for PDFs. | |
| user_agent | No | Custom User-Agent string, e.g. a mobile Safari UA to get the mobile site. | |
| custom_html | No | Raw HTML to render instead of loading a URL. Takes precedence over url. Inline CSS and JavaScript in the HTML are applied. Useful for pages that are not publicly reachable. | |
| template_id | No | ID of a saved cookie template from the ScreenshotAPI dashboard to apply before navigation. | |
| scroll_delay | No | Milliseconds to wait between scroll steps when lazy_load is true. Default 500. High values on long pages can hit the timeout. | |
| blur_selector | No | CSS selector(s) of elements to blur, comma-separated — for redacting emails, account numbers, or other sensitive data. | |
| wait_for_event | No | Page lifecycle event to wait for before capture. 'load' (default) waits for all resources; 'domcontentloaded' is faster but may miss images; 'networkidle' waits until no network requests for 500ms — best for SPAs and dashboards. | |
| click_recursion | No | How many times to click selector_to_click in sequence. Requires selector_to_click. Default 0. | |
| include_content | No | Fetch the extracted files and return their contents inline. Default true. false returns only the file URLs. | |
| remove_selector | No | CSS selector(s) of elements to remove from the page before capture, comma-separated, e.g. '.ad-banner, #sidebar'. Non-matching selectors are ignored. | |
| accept_languages | No | Accept-Language header for localized content, e.g. 'fr-FR,fr;q=0.9'. Default 'en-US,en;q=0.8'. | |
| enable_incognito | No | Render in an isolated incognito session with no persisted cookies or storage. Default false. | |
| max_content_chars | No | Truncate each extracted file to this many characters. Default 50000. | |
| scroll_to_element | No | CSS selector of an element to scroll into view before a viewport capture. | |
| selector_to_click | No | CSS selector of an element to click before capture, e.g. to open a tab, dropdown, or accordion. | |
| block_specific_requests | No | Specific request URLs or patterns to block, separated by commas, spaces, or newlines, e.g. 'https://example.com/api/data, https://ads-domain.com'. |