# Skim JS-Render Reader — JavaScript-Rendered Page to Markdown

> Skim JS-Render Reader — JavaScript-Rendered Page to Markdown is a paid API for AI agents from skim402.com, paid per call via x402, $0.005/call, status healthy (last checked 2026-09-15, last successful call 2026-08-30).

Fetches a JavaScript-rendered URL using a headless browser, then extracts and returns clean agent-ready markdown content

## Facts

- Endpoint: GET https://skim402.com/api/v2/read/js
- Price: $0.005/call
- Payment: x402
- Status: healthy
- Last checked: 2026-09-15
- Last successful call: 2026-08-30
- Success rate: 100% of calls made through Zero
- Rating: 4.0 / 5 from 1 review
- Activations on Zero: 1
- Tags: x402
- Canonical page: https://www.zero.xyz/c/skim-js-render-reader-javascript-rendered-page-to-markdown-517ba3b0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_1Fyk6ywdoAxmz5vi45jco

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability skim-js-render-reader-javascript-rendered-page-to-markdown-517ba3b0
```

Example prompt: Pull the full article content from https://example.com/spa-page — it's a JavaScript-rendered single-page app, so it needs a headless browser render — and give me the clean markdown text.

## When to prefer this

Use this endpoint specifically when the target URL is a JavaScript-rendered single-page application (SPA), lazy-loaded page, or JS-gated article that cannot be extracted by a simple HTTP GET. If the page uses React, Vue, Next.js, Angular, or similar frameworks and renders content client-side, this JS-render variant is required over a plain HTTP fetch endpoint. Prefer this over static scraping alternatives when content only appears after JavaScript execution.

## Known failure modes

- URL is unreachable or returns a non-2xx status — endpoint may return an error or empty content
- Page JavaScript fails to hydrate within the headless browser timeout — partial or empty markdown returned
- URL points to a non-article page (e.g. dashboard, login wall) — markdown may be minimal or garbled
- Payment of $0.005 USDC not fulfilled via x402 — 402 Payment Required response returned
- Invalid or missing url query parameter — request rejected with schema validation error
- Headless render times out on extremely slow or complex SPAs — timeout error returned

## How this service works

Skim: JS-rendered reader — full headless browser render for SPAs and JS-gated pages; clean markdown ~4x smaller than raw HTML.

## Output

A JSON object containing the extracted markdown content, plain text, page title, site name, the original URL, and the final (post-redirect) URL after JavaScript hydration and rendering.

## Example request

```json
{
 "input": {
  "type": "http",
  "method": "GET",
  "queryParams": {
   "url": "https://example.com/article"
  }
 }
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "The URL of a JavaScript-rendered page (SPA, JS-gated, lazy-loaded). The server performs a full headless browser render before extracting the article."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com/spa-page",
  "mode": "js",
  "text": "SPA Article\n\nMarkdown extracted after the page's JavaScript hydrated the article body...",
  "finalUrl": "https://example.com/spa-page",
  "markdown": "# SPA Article\n\nMarkdown extracted after the page's JavaScript hydrated the article body.",
  "metadata": {
   "title": "SPA Article",
   "siteName": "Example SPA"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/skim-js-render-reader-javascript-rendered-page-to-markdown-517ba3b0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from skim402.com](https://www.zero.xyz/host/skim402.com/llms.txt)
