Documentation
Seller Guide
Set up clawzam and start earning from your API subscriptions
Prerequisites
Before you begin, make sure you have the following installed on your machine:
- Node.js 20+ — runtime for the clawzam daemon
- cloudflared — Cloudflare Tunnel client for exposing your local daemon to the internet (free, no account needed)
- A ZAM API key — sign up at zeroclick.am to get your key (starts with
zam_) - An API key for a supported service — e.g. Brave Search (free tier, no phone required) or SerpAPI
Install prerequisites:
# Install cloudflared (macOS)
brew install cloudflared
# Install cloudflared (Linux)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 \
-o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflaredQuick Start
Get up and running in three commands. These adapters use free public APIs — no third-party keys needed.
# 1. Install the CLI
npm install -g @clawzam/cli
# 2. Initialize clawzam with your ZAM API key
clawzam init --zam-key zam_YOUR_KEY_HERE
# 3. Add adapters that don't require API keys
clawzam add academic-search --no-prompt
clawzam add hacker-news --no-prompt
clawzam add weather --no-prompt
clawzam add stock-quote --no-prompt
clawzam add reddit-search --no-prompt
# 4. Start the daemon
clawzam start
# 5. When you're done, stop the daemon
clawzam stopWhat happens: clawzam start starts a local HTTP server on port 3847, opens a Cloudflare Tunnel to give it a public URL, and automatically registers your adapters as listings on the ZeroClick Marketplace. Your terminal will show the tunnel URL and listing status. Use clawzam stop to shut down the daemon and pause your marketplace listings.
Want more? Adapters like brave-search and serpapi earn higher margins but require third-party API keys. See the Available Adapters table below for details, or browse the full catalog.
Available Adapters
clawzam ships with 83 adapters. Each wraps an API and exposes it as a Zam on the marketplace.
| Adapter | Keys | Price | Description |
|---|
| academic-search | None | 2¢ | Search academic papers via Semantic Scholar. Returns titles, abstracts, citation counts, authors, and open access status. No API key required. |
| company-enrich | None | 3¢ | B2B company enrichment from a domain. Returns company name, description, social links, tech stack hints, and domain age. No API key required. |
| company-financials | None | 3¢ | Structured financial data from SEC EDGAR XBRL filings. Revenue, net income, assets, liabilities, EPS, and more. No API key required. |
| crypto-prices | None | 1¢ | Real-time cryptocurrency prices, market cap, volume, and 24h changes via CoinGecko. Supports 10,000+ tokens. No API key required. |
| dns-lookup | None | 1¢ | DNS record lookups via Cloudflare DNS-over-HTTPS. Supports A, AAAA, MX, TXT, CNAME, NS, SOA, SRV, and CAA records. No API key required. |
| email-validator | None | 1¢ | Email validation via DNS MX lookup, disposable domain detection, free provider detection, and role account detection. No API key required. |
| hackernews | None | 1¢ | Search and browse Hacker News. Get top stories, search posts, read comments. No API key required. |
| insider-trading | None | 2¢ | Recent insider stock transactions (buys, sells, awards, exercises) from SEC Form 4 filings. See who is buying and selling their own company stock. |
| ip-geo | None | 1¢ | Geolocate any IP address. Returns country, city, ISP, timezone, coordinates, and proxy/VPN/hosting detection. No API key required. |
| npm-package | None | 1¢ | NPM package intelligence. Downloads, versions, dependencies, bundle size, license, and maintainers. No API key required. |
| page-extract | None | 2¢ | Extract clean article text from any web page. Returns title, author, publish date, and cleaned content. No API key required. |
| None | 2¢ | Search and browse Reddit. Get hot/top/new posts from any subreddit or the front page. No API key required. | |
| screenshot | None | 2¢ | Capture a screenshot of any URL. Returns a direct image URL. No API key required. |
| social-checker | None | 2¢ | Check if a username exists across 12+ social platforms. Covers Twitter, Instagram, TikTok, YouTube, GitHub, Reddit, and more. No API key required. |
| stock-fundamentals | None | 2¢ | Stock fundamentals from Yahoo Finance. P/E ratio, EPS, market cap, dividend yield, 52-week range, profit margins, and more. No API key required. |
| url-expand | None | 1¢ | Expand shortened URLs and trace redirect chains. Detects known URL shorteners and reports the final destination. No API key required. |
| weather | None | 1¢ | Current weather and forecasts for any location worldwide. Uses wttr.in — no API key required. |
| whois | None | 1¢ | Domain registration data via RDAP. Returns registrar, dates, nameservers, and status. No API key required. |
| youtube-transcript | None | 2¢ | Extract full transcripts from YouTube videos with timestamps. Supports auto-generated and manual captions in multiple languages. No API key required. |
| brave-search | BRAVE_API_KEY | 1¢ | Privacy-focused web search via Brave Search API. Returns web results, news, and videos. |
| google-maps-reviews | SERPAPI_KEY | 2¢ | Fetch customer reviews for any Google Maps listing. Returns reviewer info, ratings, text, and dates. Requires a data_id (get it from google-maps-search). |
| google-maps-search | SERPAPI_KEY | 2¢ | Search for businesses and places on Google Maps via SerpAPI. Returns names, addresses, ratings, hours, phone numbers, and GPS coordinates. |
| serpapi | SERPAPI_KEY | 2¢ | Google search results via SerpAPI. Returns organic results, knowledge graph, and related searches. |
| serpapi-amazon | SERPAPI_KEY | 2¢ | Search products on Amazon via SerpAPI. Returns product name, price, rating, and Prime status. |
| serpapi-amazon-product | SERPAPI_KEY | 2¢ | Get detailed Amazon product info via SerpAPI. Price, description, features, and reviews. |
| serpapi-apple-app-store | SERPAPI_KEY | 2¢ | Search apps on the Apple App Store via SerpAPI. |
| serpapi-apple-product | SERPAPI_KEY | 2¢ | Get detailed Apple App Store product info. |
| serpapi-apple-reviews | SERPAPI_KEY | 2¢ | Get reviews for an Apple App Store app. |
| serpapi-baidu | SERPAPI_KEY | 2¢ | Chinese web search results from Baidu via SerpAPI. |
| serpapi-bing | SERPAPI_KEY | 2¢ | Web search results from Bing via SerpAPI. Returns organic results and related searches. |
| serpapi-bing-images | SERPAPI_KEY | 2¢ | Image search from Bing via SerpAPI. Returns image URLs, thumbnails, and source pages. |
| serpapi-bing-news | SERPAPI_KEY | 2¢ | News search from Bing via SerpAPI. Returns headlines, sources, and dates. |
| serpapi-bing-shopping | SERPAPI_KEY | 2¢ | Shopping results from Bing via SerpAPI. Returns products, prices, and sellers. |
| serpapi-bing-videos | SERPAPI_KEY | 2¢ | Video search from Bing via SerpAPI. Returns titles, thumbnails, durations, and sources. |
| serpapi-duckduckgo | SERPAPI_KEY | 2¢ | Privacy-focused web search from DuckDuckGo via SerpAPI. Returns organic results. |
| serpapi-duckduckgo-maps | SERPAPI_KEY | 2¢ | Local map results from DuckDuckGo via SerpAPI. Returns businesses and places. |
| serpapi-duckduckgo-news | SERPAPI_KEY | 2¢ | News results from DuckDuckGo via SerpAPI. Returns headlines and sources. |
| serpapi-ebay | SERPAPI_KEY | 2¢ | Search products on eBay via SerpAPI. Returns listings, prices, and sellers. |
| serpapi-ebay-product | SERPAPI_KEY | 2¢ | Get detailed eBay product/listing info via SerpAPI. |
| serpapi-facebook-profile | SERPAPI_KEY | 2¢ | Get public Facebook profile info via SerpAPI. |
| serpapi-google-ai-overview | SERPAPI_KEY | 2¢ | Get Google's AI-generated overview/summary. Requires a page_token from a prior Google Search API response's ai_overview block (expires within 1 minute). |
| serpapi-google-autocomplete | SERPAPI_KEY | 2¢ | Get Google autocomplete/suggest results for any query. Returns search suggestions as you type. |
| serpapi-google-events | SERPAPI_KEY | 2¢ | Search for events near a location via Google. Returns event name, date, venue, and links. |
| serpapi-google-finance | SERPAPI_KEY | 2¢ | Stock quotes, company info, and financial data from Google Finance. Search by ticker symbol. |
| serpapi-google-finance-markets | SERPAPI_KEY | 2¢ | Market indices, trends, gainers/losers, and sector performance from Google Finance. |
| serpapi-google-flights | SERPAPI_KEY | 2¢ | Search flights with prices, airlines, durations, and layovers via Google Flights. |
| serpapi-google-hotels | SERPAPI_KEY | 2¢ | Search hotels with prices, ratings, amenities, and availability via Google Hotels. |
| serpapi-google-hotels-reviews | SERPAPI_KEY | 2¢ | Get reviews for a hotel from Google Hotels. |
| serpapi-google-images | SERPAPI_KEY | 2¢ | Search Google Images. Returns image URLs, thumbnails, source pages, and dimensions. |
| serpapi-google-jobs | SERPAPI_KEY | 2¢ | Search job listings aggregated by Google. Returns title, company, location, and description. |
| serpapi-google-lens | SERPAPI_KEY | 2¢ | Visual search using Google Lens. Identify objects, text, products from an image URL. |
| serpapi-google-local | SERPAPI_KEY | 2¢ | Local business results from Google's local pack. Returns business name, address, rating, phone. |
| serpapi-google-maps-contributor | SERPAPI_KEY | 2¢ | Get all reviews by a specific Google Maps contributor. |
| serpapi-google-maps-directions | SERPAPI_KEY | 2¢ | Get driving/walking/transit directions between two locations via Google Maps. |
| serpapi-google-maps-photos | SERPAPI_KEY | 2¢ | Get photos for a Google Maps listing by data_id. |
| serpapi-google-news | SERPAPI_KEY | 2¢ | Search Google News for articles and headlines. Returns title, source, date, and link. |
| serpapi-google-patents | SERPAPI_KEY | 2¢ | Search patents on Google Patents. Returns title, inventor, assignee, filing date. |
| serpapi-google-play | SERPAPI_KEY | 2¢ | Search apps on the Google Play Store. Returns app name, rating, downloads, and developer. |
| serpapi-google-play-product | SERPAPI_KEY | 2¢ | Get detailed Google Play app info including description, ratings, and screenshots. |
| serpapi-google-related-questions | SERPAPI_KEY | 2¢ | Get expanded 'People Also Ask' results from Google. Requires a next_page_token from a prior Google Search API response's related_questions block. |
| serpapi-google-reverse-image | SERPAPI_KEY | 2¢ | Reverse image search on Google. Find where an image appears and visually similar images. |
| serpapi-google-scholar | SERPAPI_KEY | 2¢ | Search academic papers on Google Scholar. Returns title, authors, citations, and links. |
| serpapi-google-scholar-author | SERPAPI_KEY | 2¢ | Get author profiles from Google Scholar. Publications, citations, h-index. |
| serpapi-google-scholar-cite | SERPAPI_KEY | 2¢ | Get citation formats for a Google Scholar paper. |
| serpapi-google-shopping | SERPAPI_KEY | 2¢ | Search products on Google Shopping with prices, ratings, and sellers. |
| serpapi-google-trends | SERPAPI_KEY | 2¢ | Interest over time, related topics, and queries from Google Trends. |
| serpapi-google-trends-trending | SERPAPI_KEY | 2¢ | Get currently trending searches on Google in a specific country. |
| serpapi-google-videos | SERPAPI_KEY | 2¢ | Search videos on Google. Returns title, source, duration, thumbnail, and link. |
| serpapi-home-depot | SERPAPI_KEY | 2¢ | Search products on Home Depot via SerpAPI. |
| serpapi-home-depot-product | SERPAPI_KEY | 2¢ | Get detailed Home Depot product info via SerpAPI. |
| serpapi-naver | SERPAPI_KEY | 2¢ | Korean web search results from Naver via SerpAPI. |
| serpapi-opentable-reviews | SERPAPI_KEY | 2¢ | Get restaurant reviews from OpenTable. |
| serpapi-tripadvisor | SERPAPI_KEY | 2¢ | Search places on TripAdvisor via SerpAPI. Hotels, restaurants, attractions. |
| serpapi-walmart | SERPAPI_KEY | 2¢ | Search products on Walmart via SerpAPI. Returns product name, price, and ratings. |
| serpapi-walmart-product | SERPAPI_KEY | 2¢ | Get detailed Walmart product info via SerpAPI. Price, description, reviews. |
| serpapi-yahoo | SERPAPI_KEY | 2¢ | Web search results from Yahoo via SerpAPI. Returns organic results. |
| serpapi-yandex | SERPAPI_KEY | 2¢ | Web search results from Yandex (Russian search engine) via SerpAPI. |
| serpapi-yelp | SERPAPI_KEY | 2¢ | Search businesses on Yelp via SerpAPI. Returns name, rating, reviews, and category. |
| serpapi-yelp-reviews | SERPAPI_KEY | 2¢ | Get reviews for a Yelp business. |
| serpapi-youtube | SERPAPI_KEY | 2¢ | Search videos on YouTube via SerpAPI. Returns titles, channels, views, and thumbnails. |
| serpapi-youtube-transcript | SERPAPI_KEY | 2¢ | Get transcripts from YouTube videos via SerpAPI. |
| serpapi-youtube-video | SERPAPI_KEY | 2¢ | Get detailed YouTube video info. Title, description, views, likes, comments. |
| sports-odds | ODDS_API_KEY | 3¢ | Live Vegas betting odds, spreads, and over/unders across major sportsbooks. Covers NFL, NBA, NCAA, MLB, NHL, soccer, and more. |
How It Works
clawzam uses a local daemon model to keep your API keys secure while making your adapters available to buyers worldwide.
- 1Local HTTP Server — The clawzam daemon starts a Hono-based HTTP server on port 3847. Each adapter registers three endpoints:
GET /<slug>,GET /<slug>/contract, andPOST /<slug>/run. - 2Cloudflare Tunnel — A free
cloudflaredtunnel exposes your local server to the internet with a public URL (e.g.https://random-words.trycloudflare.com). No port forwarding, no Cloudflare account needed. - 3ZeroClick Marketplace —
clawzam startautomatically registers your adapters as listings on the marketplace. When a buyer activates your Zam, the marketplace calls your tunnel URL, the daemon uses your stored API key to make the upstream call, and returns the result.
Pricing: Each adapter sets a per-call price in cents (e.g. Brave Search charges 2 cents/call). The built-in adapters use default prices that cover upstream API costs with a margin. You earn revenue on each successful call — the ZeroClick Marketplace handles billing, metering, and buyer authentication. See zeroclick.am for details on revenue splits and payouts.
Managing Adapters
The CLI provides commands to manage your adapters and their secrets.
List available adapters
clawzam listShows all available adapters and whether they are enabled or disabled.
Add an adapter
# Interactive mode (prompts for API key)
clawzam add brave-search
# Non-interactive mode (set the secret first, then add)
clawzam secret set brave-search BRAVE_API_KEY your-key-here
clawzam add brave-search --no-promptRemove an adapter
clawzam remove brave-searchDisables the adapter and deletes its stored secrets.
Set a secret
clawzam secret set <adapter> <key-name> <value>
# Example:
clawzam secret set brave-search BRAVE_API_KEY BSAxxxxxxxxxxxxxxxxxxxxxxxxStores a secret for a specific adapter. The value is encrypted at rest.
Start and stop the daemon
# Start the daemon (server + tunnel + marketplace registration)
clawzam start
# Stop the daemon (pauses listings, closes tunnel, stops server)
clawzam stopThe daemon runs in the foreground. Use clawzam stop from another terminal, or press Ctrl+C in the daemon terminal. Stopping pauses your marketplace listings automatically.
Retry marketplace registration
# Re-register adapters and publish (while daemon is running)
clawzam register --publishIf registration failed during clawzam start (e.g. due to a 502), the daemon keeps running. Use clawzam register --publish to retry without restarting.
Check status
clawzam statusShows daemon status, enabled adapters, tunnel URL, and marketplace listings. Example output:
clawzam Status
Daemon: running (PID: 12345)
Config file: /home/user/.clawzam/config.json
Port: 3847
Adapters: brave-search
Tunnel: https://random-words.trycloudflare.com
ZAM API key: zam_...b2d4
Listings:
brave-search: published (019cdf2e-433b-...)If the daemon is not running, you will see not running for the daemon and not active for the tunnel. If an adapter failed to register, its listing will not appear — run clawzam register --publish to retry.
View call metrics
# Show metrics for all adapters
clawzam logs
# Show metrics for a specific adapter
clawzam logs --adapter brave-search
# Reset all metrics
clawzam logs --resetShows per-adapter call metrics: total calls, errors, average latency, and daily breakdown. Example output:
Call Metrics
brave-search
Total calls: 47
Errors: 2 (4.3%)
Avg latency: 312ms
Last call: 2026-03-11T22:15:03.000Z
Recent days:
2026-03-11: 32 calls
2026-03-10: 15 callsMetrics are stored locally at ~/.clawzam/analytics.json and persist across daemon restarts.
Configuration
clawzam stores its configuration at ~/.clawzam/config.json. Here is the structure:
{
"zam": {
"apiKey": "zam_your_key_here"
},
"port": 3847,
"enabledAdapters": ["brave-search"],
"listings": {
"brave-search": {
"zamListingId": "019cdf2e-...",
"state": "published"
}
},
"tunnel": {
"name": "clawzam-1234567890",
"url": "https://random-words.trycloudflare.com"
}
}| Field | Description |
|---|---|
| zam.apiKey | Your ZAM API key for marketplace registration |
| port | Local port the daemon listens on (default 3847) |
| enabledAdapters | Array of adapter slugs that are currently enabled |
| listings | Map of adapter slug to ZAM listing ID and state (managed automatically by clawzam start) |
| tunnel | Current tunnel name and public URL (set automatically when the daemon starts) |
Secrets are stored separately at ~/.clawzam/secrets.json in encrypted form (AES-256-GCM) and are never included in the main configuration file.
Security
clawzam is designed with a secrets-never-leave architecture. Here is how your API keys are protected:
- Encrypted at rest — API keys are encrypted with AES-256-GCM before being written to
~/.clawzam/secrets.json. They are only decrypted in memory when making an outbound API call. - Never transmitted — Your keys never leave your machine. Buyer requests arrive via the tunnel, the daemon makes the upstream call locally, and only the result is sent back.
- Outbound only — API keys are used exclusively for outbound calls to upstream providers. They are never exposed in responses, logs, or error messages.
- Buyer authentication — Buyers authenticate with their ZAM API key against the marketplace, not directly with your daemon. The marketplace verifies buyer credentials and billing before forwarding requests to your tunnel URL.
- Rate limiting — The daemon enforces per-adapter rate limits (e.g. 15 requests/minute for Brave Search). Requests exceeding the limit receive a 429 response. This protects your upstream API quota from abuse.
Note on endpoint access: Your tunnel URL is publicly reachable and visible in your marketplace listing. The ZeroClick Marketplace does not currently support custom authentication headers on seller endpoints — this is consistent with how all ZAM sellers (including Cloudflare Workers-based ones) operate. The daemon enforces rate limits locally to protect your upstream API quota. The marketplace handles buyer billing and authentication on its side.
Creating Custom Adapters
You can create your own adapters to wrap any API and sell access on the marketplace. The CLI provides a scaffolding command:
clawzam generate my-weather-apiThis generates a new adapter package at packages/adapters/my-weather-api/. Your adapter extends BaseAdapter and must implement two methods:
getContract()— Returns aZamContractdescribing your adapter's name, input/output schemas, pricing, and metadata.execute(input, ctx)— Takes validated buyer input and anAdapterContext(containing your secrets), calls the upstream API, and returns the result.
import { BaseAdapter, type ZamContract, type AdapterContext } from "@clawzam/adapter-core";
export class MyWeatherApiAdapter extends BaseAdapter {
readonly slug = "my-weather-api";
readonly requiredSecrets = ["WEATHER_API_KEY"] as const;
getContract(): ZamContract {
return {
name: "My Weather API",
slug: "my-weather-api",
version: "1.0.0",
description: "Get current weather for a location",
category: "data",
tags: ["weather"],
provider: { name: "WeatherCo", url: "https://weather.example.com" },
pricing: { perCallCents: 1 },
input: {
schema: {
type: "object",
properties: {
city: { type: "string", description: "City name" },
},
required: ["city"],
},
examples: [{ city: "San Francisco" }],
},
output: {
schema: {
type: "object",
properties: {
temp: { type: "number" },
condition: { type: "string" },
},
},
},
};
}
async execute(
input: Record<string, unknown>,
ctx: AdapterContext,
): Promise<Record<string, unknown>> {
const city = input.city as string;
const res = await fetch(
`https://api.weather.example/v1?q=${encodeURIComponent(city)}&key=${ctx.secrets.WEATHER_API_KEY}`
);
return await res.json() as Record<string, unknown>;
}
}Once your adapter is ready, register it in packages/cli/src/adapters.ts and add it to the CLI package dependencies. Then build, and use clawzam add my-weather-api to enable it.
Troubleshooting
Port 3847 is already in use
Another process is using the default port. Find and stop it, or change the port in ~/.clawzam/config.json:
# Find what's using port 3847
lsof -i :3847
# Or change the port in config
# Edit ~/.clawzam/config.json and set "port": 3848Cloudflare Tunnel fails to start
Make sure cloudflared is installed and in your PATH. Run cloudflared --version to verify. clawzam uses free quick tunnels which require no account or configuration — just the cloudflared binary. If you're behind a corporate firewall, tunnel connections to Cloudflare may be blocked.
Tunnel URL changes on restart
Free quick tunnels get a new random URL each time. This is expected — clawzam start automatically updates your marketplace listings with the new URL.
Registration failed during start (502 or similar)
When clawzam start fails to register an adapter on the marketplace, the daemon keeps running and the tunnel stays open. The CLI will automatically retry up to 3 times, but if it still fails:
# Retry registration while daemon is running
clawzam register --publishThis is typically caused by the tunnel not being fully reachable when the ZAM marketplace tries to fetch your contract. The retry usually succeeds. If it persists, check that clawzam status shows a tunnel URL and that visiting it in a browser returns a response.
"No enabled adapters" error
You need to add at least one adapter before starting. Run clawzam list to see available adapters, set up the required API key with clawzam secret set, then clawzam add <adapter>.
Upstream API returns errors
Verify your API key is correct with clawzam secret set <adapter> <KEY> <new-value> and check that your upstream account is active and has remaining quota.