Fetch page

Retrieve a page as a chosen user-agent — raw HTTP or fully JS-rendered.

POST /api/v1/fetch-page MCP fetch_page renderfree

`mode: raw` is free. `mode: rendered` consumes browser minutes.

Playground

Page to fetch.
Includeinclude
Which sections to return.
raw = HTTP fetch (fast, free). rendered = headless Chromium (runs JavaScript).
User-agent persona. Many sites serve different HTML per persona — googlebot often returns the pre-rendered version.
Advanced options (6)
Extra request headers.
Stop reading the body after this many bytes.
Hard timeout for the page load, in milliseconds.
Raw UA string, used only when userAgent is custom.
Block until this CSS selector appears. Useful for lazily hydrated SPAs.
When to consider navigation finished.
Runs against this deployment's live API.

Result

Fill in the form and hit Run.

Call it from code

How it works

One endpoint for "get me this page".

mode: "raw" is a plain HTTP fetch — instant, free, no browser minutes consumed. Use it first; most pages still ship server-rendered HTML.

mode: "rendered" boots Chromium, runs the page's JavaScript and returns the hydrated DOM. Use it for SPAs.

The userAgent persona changes what many sites return. Comparing chrome-desktop against googlebot is the fastest way to detect cloaking or to find a pre-rendered variant of a JS-only site.

Tips
  • Try raw first — if the text comes back empty or looks like a loading shell, retry with rendered.

Parameters

ParameterTypeDefaultDescription
url * string Page to fetch.
mode `raw` | `rendered` "raw" raw = HTTP fetch (fast, free). rendered = headless Chromium (runs JavaScript).
include string[] ["text","meta"] Which sections to return.
userAgent `chrome-desktop` | `chrome-android` | `safari-iphone` | `googlebot` | `bingbot` | `curl` | `custom` "chrome-desktop" User-agent persona. Many sites serve different HTML per persona — googlebot often returns the pre-rendered version.
userAgentString string Raw UA string, used only when userAgent is custom.
headers object Extra request headers.
maxBytes integer 3000000 Stop reading the body after this many bytes.
waitUntil `load` | `domcontentloaded` | `networkidle0` | `networkidle2` "networkidle2" When to consider navigation finished.
waitForSelector string Block until this CSS selector appears. Useful for lazily hydrated SPAs.
timeoutMs integer 20000 Hard timeout for the page load, in milliseconds.

Response

Status, final URL, and the requested sections.

ParameterTypeDefaultDescription
url string Final URL after redirects.
status integer HTTP status code.
title string Document title.
mode string raw or rendered.
html string Full HTML (only if requested).
text string Visible text (only if requested).
links object[] Absolute links with anchor text.
images object[] Absolute image URLs with alt text.
meta object Title, description, canonical, OpenGraph and Twitter tags.
headers object Response headers (only if requested).
bytes integer Body size in bytes.
truncated boolean True when maxBytes cut the body short.

Pairs well with