Live on Base โ€” X402 Payments

Web intelligence
for AI agents

Stealth rendering, structured extraction, domain search, and multi-source research. Pay per request. No API keys.

7
Endpoints
17
Extractors
0.1ยข
Starting price
2
Official SDKs

Everything agents need from the web

Most AI agents can't run a browser. ClawFetch gives them eyes.

๐Ÿ›ก๏ธ

Stealth Rendering

Puppeteer with anti-detection beats Cloudflare, CAPTCHAs, and JS-heavy SPAs that basic HTTP can't touch.

๐Ÿงฉ

Structured Extractors

17 site-specific parsers: Twitter, GitHub, CoinGecko, NPM, PyPI, crates.io, Hacker News, YouTube, Wikipedia, Product Hunt, IMDb, Amazon, Crunchbase, SEC EDGAR, Zillow, Redfin, and news articles. Clean typed JSON, not messy HTML.

๐Ÿ”

Domain Search

Check domain availability via WHOIS. Single names, bulk TLD checks, or keyword-based suggestions with auto-check.

๐Ÿ“ก

Multi-Source Research

Send a topic, get structured results from 5+ sources. One request replaces a dozen fetches.

โšก

Warm Browser Pool

Pre-warmed Puppeteer instances. No cold starts, sub-second for cached content, under 2s for fresh renders.

๐Ÿ’ฐ

X402 Micropayments

USDC on Base. No API keys, no accounts, no subscriptions. Standard X402 protocol โ€” any agent can pay.

Official SDKs

Full-featured clients for TypeScript and Python. Auto-payment, retry logic, typed errors. Get started in 30 seconds.

$ npm install @clawfetch/sdk ๐Ÿ“‹
โœ“ Automatic x402 payment flow
โœ“ Typed error hierarchy
โœ“ Exponential backoff retry
โœ“ Configurable timeout
โœ“ ESM & CJS exports
โœ“ Zero dependencies beyond viem

Quick Start

import { ClawFetch } from '@clawfetch/sdk';

const cf = new ClawFetch({
  privateKey: '0x...',  // Wallet with USDC on Base
});

// Fetch any URL as clean markdown ($0.001)
const page = await cf.fetch('https://example.com');

// Extract structured data ($0.003)
const btc = await cf.extract('https://coingecko.com/en/coins/bitcoin');
console.log(btc.data); // { name, price, market_cap, ... }

// JS-rendered pages ($0.002)
const rendered = await cf.render('https://app.uniswap.org');

// Multi-source research ($0.01)
const report = await cf.research('latest AI agent frameworks');

// Domain availability check ($0.002)
const domains = await cf.domainsCheck(['coolstartup.com', 'coolstartup.ai']);

// Domain suggestions ($0.002)
const ideas = await cf.domainsSuggest('ai coding assistant');

Configuration

const cf = new ClawFetch({
  // Required
  privateKey: '0x...',

  // Optional
  baseUrl: 'https://api.clawfetch.ai',  // Default
  timeoutMs: 30000,                    // Request timeout (default: 30s)
  debug: false,                         // Console debug logging

  // Retry configuration
  retry: {
    maxRetries: 3,            // Max retry attempts
    initialDelayMs: 500,      // Initial backoff delay
    maxDelayMs: 10000,        // Maximum backoff delay
    backoffMultiplier: 2,     // Exponential factor
  },
});

Error Handling

import {
  ClawFetch,
  ClawFetchError,    // Base class for all errors
  PaymentError,      // 402 โ€” insufficient USDC, invalid signature
  NetworkError,      // Connection refused, DNS failure, timeout
  RateLimitError,    // 429 โ€” too many requests (includes retryAfterMs)
  ApiError,          // 4xx/5xx server errors
} from '@clawfetch/sdk';

try {
  const result = await cf.fetch('https://example.com');
} catch (err) {
  if (err instanceof PaymentError) {
    console.error('Payment failed:', err.message);
  } else if (err instanceof RateLimitError) {
    console.error(`Rate limited. Retry after ${err.retryAfterMs}ms`);
  } else if (err instanceof NetworkError) {
    console.error('Network issue:', err.message);
  }
}

Retry Behavior

The SDK automatically retries on 429 (rate limit) and 5xx (server error) with exponential backoff and ยฑ25% jitter. 400, 401, 402, and 404 errors are never retried.

How Payment Works

The SDK sends a request โ†’ gets 402 with USDC amount โ†’ auto-signs an EIP-3009 gasless transfer on Base โ†’ retries with payment header. No gas fees. No ETH needed.

$ pip install clawfetch ๐Ÿ“‹
โœ“ Automatic x402 payment flow
โœ“ Sync + Async clients
โœ“ Typed error hierarchy
โœ“ Exponential backoff retry
โœ“ Context manager support
โœ“ Python 3.9+

Quick Start (Sync)

from clawfetch import ClawFetch

with ClawFetch(private_key="0x...") as cf:
    # Fetch any URL as clean markdown ($0.001)
    page = cf.fetch("https://example.com")

    # Extract structured data ($0.003)
    btc = cf.extract("https://coingecko.com/en/coins/bitcoin")
    print(btc["data"])  # { name, price, market_cap, ... }

    # Multi-source research ($0.01)
    report = cf.research("latest AI agent frameworks")

    # Domain availability ($0.002)
    domains = cf.domains_check(["coolstartup.com", "coolstartup.ai"])

    # Domain suggestions ($0.002)
    ideas = cf.domains_suggest("ai coding assistant")

Async Client

import asyncio
from clawfetch import AsyncClawFetch

async def main():
    async with AsyncClawFetch(private_key="0x...") as cf:
        # All 7 endpoints available as async/await
        page = await cf.fetch("https://example.com")
        btc = await cf.extract("https://coingecko.com/en/coins/bitcoin")
        report = await cf.research("latest AI agent frameworks")

asyncio.run(main())

Configuration

from clawfetch import ClawFetch, RetryOptions

cf = ClawFetch(
    private_key="0x...",
    base_url="https://api.clawfetch.ai",  # default
    timeout=30.0,                          # seconds
    retry=RetryOptions(
        max_retries=3,
        initial_delay_ms=500,
        max_delay_ms=10000,
        backoff_multiplier=2.0,
    ),
    debug=False,
)

Error Handling

from clawfetch import (
    ClawFetch,
    ClawFetchError,    # Base class for all errors
    PaymentError,      # 402 โ€” insufficient USDC
    NetworkError,      # Connection/timeout failures
    RateLimitError,    # 429 โ€” includes retry_after_ms
    ApiError,          # Other 4xx/5xx errors
)

try:
    result = cf.fetch("https://example.com")
except PaymentError as e:
    print(f"Payment failed: {e}")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after_ms}ms")
except NetworkError as e:
    print(f"Network issue: {e}")

Sync vs Async

Both ClawFetch and AsyncClawFetch have identical APIs โ€” all 7 endpoints, full x402 payment, retry with backoff, and typed errors. Pick whichever fits your runtime.

Requirements

Python 3.9+ with httpx and eth_account. A wallet with USDC on Base โ€” even $1 gives you 1,000+ requests.

All endpoints

JSON in, JSON out. Every response is token-efficient and structured for agent consumption.

Method Endpoint Price Description
POST /fetch $0.001 URL โ†’ clean markdown. No JS rendering.
POST /render $0.002 Headless browser render with stealth anti-detection.
POST /extract $0.003 Structured data from 17 supported sites.
POST /research $0.010 Multi-source topic research with citations.
POST /domains/check $0.002 Domain availability via WHOIS.
POST /domains/suggest $0.002 Domain name suggestions + availability check.
GET /extractors $0.001 List all available extractors with schemas.
GET /health Free Service status and browser pool stats.
POST /fetch $0.001

Basic HTTP fetch โ†’ clean markdown. Fast, no JS rendering. Best for static pages, docs, and blog posts.

curl -X POST https://api.clawfetch.ai/fetch \
  -H "Content-Type: application/json" \
  -d '{"url": "https://docs.example.com", "maxChars": 5000}'
POST /render $0.002

Full Puppeteer render with stealth anti-detection. Handles Cloudflare, bot detection, and JS-heavy SPAs. Optional CSS selector wait.

curl -X POST https://api.clawfetch.ai/render \
  -H "Content-Type: application/json" \
  -d '{"url": "https://app.uniswap.org", "waitFor": ".swap-page"}'
POST /extract $0.003

Structured extraction via site-specific parsers. Returns typed fields โ€” not raw text. Zero hallucinations.

curl -X POST https://api.clawfetch.ai/extract \
  -H "Content-Type: application/json" \
  -d '{"url": "https://github.com/anthropics/claude-code"}'
Response
{
  "type": "github",
  "name": "claude-code",
  "owner": "anthropics",
  "stars": "24.1k",
  "forks": "1,892",
  "language": "TypeScript",
  "topics": ["ai", "agents", "cli"]
}
POST /research $0.010

Multi-source topic research. Searches the web, fetches top results, returns structured summaries from 5+ sources in one call.

curl -X POST https://api.clawfetch.ai/research \
  -H "Content-Type: application/json" \
  -d '{"query": "Casper Network DeFi ecosystem", "maxResults": 5}'
POST /domains/check $0.002

Check domain availability via WHOIS. Returns registrar, expiry, and creation dates for taken domains.

curl -X POST https://api.clawfetch.ai/domains/check \
  -H "Content-Type: application/json" \
  -d '{"name": "myproject", "tlds": ["com", "ai", "io", "dev"]}'
Response
{
  "checked": 4, "available": 2, "taken": 2,
  "results": [
    {"domain": "myproject.com", "available": false, "registrar": "GoDaddy"},
    {"domain": "myproject.ai", "available": true},
    {"domain": "myproject.io", "available": true},
    {"domain": "myproject.dev", "available": false, "registrar": "Google LLC"}
  ]
}
POST /domains/suggest $0.002

Generate domain name ideas from keywords, then check availability.

curl -X POST https://api.clawfetch.ai/domains/suggest \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["agent", "fetch"], "tlds": ["com", "ai"]}'
GET /extractors $0.001

List all structured extractors with supported domains and output fields.

Available extractors (17)
twitter      x.com, twitter.com        โ†’ author, text, likes, reposts, views, media
coingecko    coingecko.com              โ†’ name, price, marketCap, volume, rank
github       github.com                 โ†’ name, stars, forks, language, readme
news         any article (public)       โ†’ title, author, date, body, source
npm          npmjs.com                  โ†’ name, version, downloads, dependencies
pypi         pypi.org                   โ†’ name, version, author, license, requires_python
crates       crates.io                  โ†’ name, version, downloads, features
hackernews   news.ycombinator.com       โ†’ title, author, score, comments, url
youtube      youtube.com, youtu.be      โ†’ title, channel, duration, views
wikipedia    wikipedia.org              โ†’ title, summary, sections, references
producthunt  producthunt.com            โ†’ name, tagline, votes, topics, makers
edgar        sec.gov                    โ†’ name, cik, ticker, filings, financials
imdb         imdb.com                   โ†’ title, rating, cast, plot, genres, runtime
amazon       amazon.com                 โ†’ title, price, rating, reviews, features
crunchbase   crunchbase.com             โ†’ name, funding, founders, categories
zillow       zillow.com                 โ†’ address, price, zestimate, beds, baths, sqft
redfin       redfin.com                 โ†’ address, price, estimate, beds, baths, sqft
๐Ÿ“„ OpenAPI Spec (YAML) ๐Ÿ“„ OpenAPI Spec (JSON) ๐Ÿค– llms.txt

10โ€“55ร— cheaper than LLM parsing

Raw HTML + GPT costs $0.03โ€“$0.38 per extraction. ClawFetch does it for $0.003. Deterministic, no hallucinations.

๐Ÿค–

LLM Parsing (GPT-4)

$167

per 1,000 extractions

Fetch HTML (~50k tokens) โ†’ send to LLM โ†’ parse response โ†’ hope it doesn't hallucinate fields

๐Ÿฆž

ClawFetch /extract

$3

per 1,000 extractions

One API call โ†’ deterministic typed JSON โ†’ same output every time โ†’ we fix breakage, not you

โœ…

Deterministic Output

Same URL โ†’ same structured JSON. No hallucinated fields, no varying formats. Test once, trust always.

๐Ÿšซ

Zero Hallucinations

Every field comes from the actual page โ€” parsed, not generated. No LLM in the extraction loop means no invented data, ever.

๐Ÿ”’

Typed & Validated

17 extractors return strictly typed schemas. Prices are numbers, dates are dates, lists are lists. Your agent gets clean data it can act on without guessing.

Pay per request

No accounts. No subscriptions. No minimums. Just USDC on Base.

/fetch
0.1ยข
Basic HTTP โ†’ markdown
/render
0.2ยข
JS rendering + stealth
/extract
0.3ยข
Structured JSON extraction
/domains/*
0.2ยข
Domain availability + suggest
/research
1ยข
Multi-source research
/extractors
0.1ยข
List available extractors

$1 gets you

1,000 fetches ยท 500 renders ยท 333 extractions ยท 100 researches

$0 to start

No signup, no API keys, no credit card. Just USDC in a wallet on Base.

How payment works

Standard X402 โ€” the HTTP 402 status code, finally used as intended.

1

Make a request

Call any endpoint. Server responds with 402 Payment Required and the exact USDC amount in the X-PAYMENT header.

2

Gasless payment

The SDK signs an EIP-3009 transferWithAuthorization. No ETH needed โ€” just USDC in your wallet on Base.

3

Get your data

The facilitator verifies the signature, settles on-chain, and you get your response. One round-trip.

Network Base (Chain ID 8453)
Token USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Protocol X402 with EIP-3009 (gasless transfers)

Install as a Skill

Drop SKILL.md into your agent's skills directory. Works with OpenClaw, Claude Code, Codex, and any agent that supports the AgentSkills format.

Download SKILL.md
SKILL.md AgentSkills Format
---
name: clawfetch
description: Web intelligence API for AI agents. Stealth rendering, 17 structured
  extractors (Twitter, GitHub, CoinGecko, NPM, PyPI, crates.io, Hacker News,
  YouTube, Wikipedia, Product Hunt, IMDb, Amazon, Crunchbase, SEC EDGAR, Zillow,
  Redfin, news), domain search, and multi-source research. Gasless USDC payments
  on Base via standard X402 protocol.
metadata:
  author: jean-clawd
  version: "2.0"
  website: https://clawfetch.ai
  twitter: "@ClawFetchAI"
compatibility: Requires HTTP client, ethers.js or viem for signing, USDC on Base.
---

# ClawFetch.ai โ€” Web Intelligence for AI Agents

Base URL: `https://api.clawfetch.ai`

## Quick Start

### 1. Install an SDK
- **TypeScript:** `npm install @clawfetch/sdk`
- **Python:** `pip install clawfetch`

### 2. Get USDC on Base
Send USDC to your wallet on Base. Even $0.50 covers hundreds of calls.
No ETH needed โ€” X402 is gasless!

### 3. Make Requests (Payment is Automatic)
```typescript
import { ClawFetch } from '@clawfetch/sdk';
const cf = new ClawFetch({ privateKey: '0x...' });

const page = await cf.fetch('https://example.com');
const data = await cf.extract('https://coingecko.com/en/coins/bitcoin');
const report = await cf.research('latest AI agent frameworks');
```

```python
from clawfetch import ClawFetch
with ClawFetch(private_key="0x...") as cf:
    page = cf.fetch("https://example.com")
    data = cf.extract("https://coingecko.com/en/coins/bitcoin")
    report = cf.research("latest AI agent frameworks")
```

## Endpoints & Pricing

| Endpoint              | Price  | Description                    |
|-----------------------|--------|--------------------------------|
| POST /fetch           | $0.001 | URL โ†’ clean markdown           |
| POST /render          | $0.002 | JS rendering with stealth      |
| POST /extract         | $0.003 | Structured JSON extraction     |
| POST /research        | $0.010 | Multi-source topic research    |
| POST /domains/check   | $0.002 | Domain availability via WHOIS  |
| POST /domains/suggest | $0.002 | Generate + check domain names  |
| GET /extractors       | $0.001 | List available extractors      |
| GET /health           | Free   | Service status                 |

## Available Extractors (17)

twitter, coingecko, github, news, npm, pypi, crates, hackernews,
youtube, wikipedia, producthunt, edgar, imdb, amazon, crunchbase,
zillow, redfin

## Cost Estimates

$1 USDC = 1,000 fetches, 500 renders, 333 extractions, or 100 researches.