# SocialFetch Web to Markdown Converter

> SocialFetch Web to Markdown Converter is a paid API for AI agents from api.socialfetch.dev, paid per call via x402, $0.014/call, status unknown (last checked 2026-09-15).

Fetches a web page URL and returns its content as clean, filtered markdown text.

## Facts

- Endpoint: GET https://api.socialfetch.dev/v1/web/markdown
- Price: $0.014/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/socialfetch-web-to-markdown-converter-1a149a9d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_q2_7g_d_DLn88EE47BCit

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 socialfetch-web-to-markdown-converter-1a149a9d
```

Example prompt: Can you fetch this article and convert it to clean markdown so I can read it without all the noise? Use the 'fit' filter on https://example.com/some-article.

## When to prefer this

Choose this endpoint when you need to convert any publicly accessible web page into clean, LLM-ready markdown, especially when you want control over content filtering strategies (fit, raw, or BM25 relevance ranking). Ideal for ingesting articles, documentation pages, or any web content into an AI pipeline. Prefer over general-purpose browser automation when a lightweight, cost-effective REST call suffices.

## Known failure modes

- URL is invalid or malformed — returns a 400-level error
- Target page is behind a login wall or bot protection — returns incomplete or empty markdown
- URL times out or is unreachable — returns a timeout or 5xx error
- BM25 filter used without a query string — may return poorly ranked content
- Cached version is stale if cache mode is 'enabled' — use 'bypass' to force fresh fetch
- Page has no meaningful text content (e.g. purely image-based) — returns sparse or empty markdown

## How this service works

Convert a web page URL into clean markdown.

## Output

Returns the content of the requested web page as clean markdown text. Depending on the filter chosen ('fit', 'raw', or 'bm25'), the markdown may be trimmed and ranked for relevance. The response includes the converted markdown body ready for downstream processing, summarization, or display.

## 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",
       "maxLength": 2083,
       "minLength": 1,
       "description": "Web page URL to fetch."
      },
      "query": {
       "type": "string",
       "maxLength": 500,
       "description": "Optional query string used by the bm25 filter to rank relevant content."
      },
      "filter": {
       "enum": [
        "fit",
        "raw",
        "bm25"
       ],
       "type": "string",
       "default": "fit",
       "description": "Markdown extraction filter. `fit`: strip boilerplate and extract the main readable content. `raw`: full unfiltered page markdown, no content pruning. `bm25`: rank and return only the content most relevant to `query`, using the BM25 keyword-relevance algorithm — requires `query` to be set."
      },
      "waitFor": {
       "type": "string",
       "maxLength": 200,
       "description": "Wait for a CSS selector before extraction. Must be prefixed with \"css:\" (e.g. css:main). JavaScript wait conditions are not supported."
      },
      "cacheMode": {
       "enum": [
        "enabled",
        "bypass",
        "write_only"
       ],
       "type": "string",
       "default": "enabled",
       "description": "Cache behavior. `enabled`: read from cache if present, else fetch and write to cache. `bypass`: always fetch fresh, ignoring and not updating the cache. `write_only`: always fetch fresh, but write the result to cache without reading from it first. Default: `enabled`."
      },
      "scanFullPage": {
       "anyOf": [
        {
         "type": "boolean"
        },
        {
         "enum": [
          "0",
          "1",
          "true",
          "false"
         ],
         "type": "string"
        }
       ],
       "description": "When true, scroll the page to load dynamically appended content (infinite scroll). Default false."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type"
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/socialfetch-web-to-markdown-converter-1a149a9d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.socialfetch.dev](https://www.zero.xyz/host/api.socialfetch.dev/llms.txt)
