page-render

POST /api/v1/page-render 1 credits/call web catalog

Load a URL in a real browser and return its visible text, title, and full-size image URLs. Handles JavaScript-rendered supplier and retailer pages that return an empty shell to a plain fetch.

Sign in + create an API key on the keys page to authenticate calls.

curl -X POST https://api.fulcrumgo.com/api/v1/page-render \
  -H "Authorization: Bearer mcpsk_<your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "",
  "min_image_width": 300,
  "scroll": true,
  "max_text_chars": 60000,
  "nav_timeout_seconds": 25.0
}'

Add this server to Claude Desktop's claude_desktop_config.json. The endpoint becomes a callable tool inside Claude. See the MCP setup guide for the full walk-through.

{
  "mcpServers": {
    "this-api": {
      "url": "https://api.fulcrumgo.com/mcp",
      "transport": "http",
      "auth": {
        "type": "bearer",
        "token": "mcpsk_<your_api_key>"
      }
    }
  }
}

Inside Claude this endpoint surfaces as the tool page-render.

Standard requests — no custom SDK needed. pip install requests first.

import requests

r = requests.post(
    "https://api.fulcrumgo.com/api/v1/page-render",
    headers={"Authorization": "Bearer mcpsk_<your_api_key>"},
    json={
  "url": "",
  "min_image_width": 300,
  "scroll": true,
  "max_text_chars": 60000,
  "nav_timeout_seconds": 25.0
},
)
r.raise_for_status()
print(r.json())

Plain fetch. Works in Node 18+, Deno, Bun, and any modern browser.

const r = await fetch("https://api.fulcrumgo.com/api/v1/page-render", {
  method: "POST",
  headers: {
    "Authorization": "Bearer mcpsk_<your_api_key>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "url": "",
  "min_image_width": 300,
  "scroll": true,
  "max_text_chars": 60000,
  "nav_timeout_seconds": 25.0
}),
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());

Input

Field Type Required Default Description
url string required Public page to render. http/https only.
maxLength=2083 minLength=1 format=uri
min_image_width integer optional 300 Skip images narrower than this as rendered, which is how logos, icons and tracking pixels get dropped. Lower it if a page returns no images.
maximum=4000 minimum=1
scroll boolean optional True Scroll to the bottom before reading. Required for pages that only load photos as you reach them. Off is faster.
max_text_chars integer optional 60000
maximum=200000 minimum=500
nav_timeout_seconds number optional 25.0
maximum=45.0 minimum=5.0

Output

Field Type Required Default Description
url string required Final URL after redirects, which may differ from the input.
status integer required HTTP status of the main document. 0 if unknown.
title string required
text string required Visible text of the rendered page.
images array<string> optional
image_count integer required
blocked boolean required True when the site served an anti-bot challenge or a login page instead of content. The text and images are then NOT the page that was asked for — do not build products from them.
blocked_reason string optional
warnings array<string> optional

Try it

Fires a real POST /api/v1/page-render from your browser. Charges 1 credit per call against your account.

Sign in to use Try it. You'll need an API key from the keys page to authenticate the call.