Getting Started
Search, crawl, extract, and monitor — persistent web monitoring for your apps and AI agents.
Connect your AI assistant via MCP, use the API directly, or build a workflow in the UI.
Using Codex, Claude, Gemini CLI, or Cursor?
Pick your client and connect Zipf in one command or config line. Your agent gets web search, crawl, and monitoring tools instantly.
0. Set Your API Key
After signing up, create a token at /dashboard/tokens and export it:
export ZIPF_API_KEY="wvr_your_token_here"1. Check Your Credit Balance
curl https://api.zipf.ai/v1 \
-H "Authorization: Bearer $ZIPF_API_KEY"2. Run Your First Search
Basic search costs 1 credit. Results are returned immediately.
# Run a search
curl -X POST https://api.zipf.ai/v1/searches \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "AI infrastructure startups 2026",
"max_results": 10
}'
# List your searches
curl https://api.zipf.ai/v1/searches \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get a specific search with full results
curl https://api.zipf.ai/v1/searches/{search_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"3. Search with AI Features
Enable query rewriting and reranking for better results (+1 credit).
curl -X POST https://api.zipf.ai/v1/searches \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "best practices for fine-tuning LLMs in 2026",
"max_results": 20,
"interpret_query": true,
"rerank_results": true,
"generate_suggestions": true
}'More APIs
Ask API — Get Answers, Not Links
Direct answers with source citations. Designed for AI agents.
curl -X POST https://api.zipf.ai/v1/asks \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "Who is the CEO of NVIDIA?",
"depth": "quick"
}'Comprehensive Search — Query Decomposition
AI decomposes your intent into multiple searches, runs them in parallel, deduplicates results.
# Create a comprehensive search with query decomposition
curl -X POST https://api.zipf.ai/v1/searches \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "comprehensive analysis of quantum computing progress in 2026",
"query_decomposition": true,
"max_sub_queries": 5
}'
# List your searches (includes comprehensive searches)
curl https://api.zipf.ai/v1/searches \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get search with decomposition and results
curl https://api.zipf.ai/v1/searches/{search_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"Crawl API — Extract Structured Data
Crawl websites and extract custom fields using AI. Use processing_mode: "sync" to get results in a single request.
# Sync crawl - returns full results in one request (no polling!)
curl -X POST https://api.zipf.ai/v1/crawls \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://www.zipf.ai/about"],
"max_pages": 1,
"processing_mode": "sync",
"extraction_schema": {
"founder": "Extract the name of the founder or CEO",
"angels": "Extract the names of angel investors or advisors",
"company_description": "Extract the company description or mission"
}
}'# Async crawl - returns immediately, poll for results
curl -X POST https://api.zipf.ai/v1/crawls \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com"],
"max_pages": 5
}'
# Poll for results
curl https://api.zipf.ai/v1/crawls/{crawl_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"Workflow API — Composable Monitoring Pipelines
Build scheduled monitoring with three modes: Simple (single operation), Multi-Step (explicit pipelines), and AI-Planned (let AI design your workflow).
curl -X POST https://api.zipf.ai/v1/workflows \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Monitor for GPT-6 announcement",
"mode": "simple",
"workflow_type": "search",
"operation_config": {
"query": "GPT-6 release announcement OpenAI 2026",
"max_results": 20
},
"stop_condition": {
"type": "natural_language",
"description": "Stop when GPT-6 is officially announced by OpenAI",
"confidence_threshold": 0.8
},
"interval_minutes": 60,
"max_executions": 168
}'curl -X POST https://api.zipf.ai/v1/workflows \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "AI News Pipeline",
"mode": "multi_step",
"steps": [
{
"step_id": "search_news",
"step_name": "Search AI News",
"step_type": "search",
"config": {"query": "AI breakthroughs 2026", "max_results": 30}
},
{
"step_id": "crawl_top",
"step_name": "Crawl Top Results",
"step_type": "crawl",
"depends_on": ["search_news"],
"config": {"max_pages": 5}
},
{
"step_id": "summarize",
"step_name": "Summarize Findings",
"step_type": "aggregate",
"depends_on": ["crawl_top"],
"config": {"aggregation_type": "summary"}
}
],
"stop_condition": {"type": "always"},
"interval_minutes": 1440
}'# 1. Preview the plan (FREE)
curl -X POST https://api.zipf.ai/v1/workflows/plan \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"intent": "Track competitor product launches and pricing changes",
"name": "Competitor Monitor",
"max_credits_per_execution": 30
}'
# 2. Create with AI planning
curl -X POST https://api.zipf.ai/v1/workflows \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Competitor Monitor",
"mode": "ai_planned",
"intent": "Track competitor product launches and pricing changes",
"max_credits_per_execution": 30,
"stop_condition": {"type": "always"},
"interval_minutes": 720
}'# List all workflows
curl https://api.zipf.ai/v1/workflows \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get workflow details
curl https://api.zipf.ai/v1/workflows/{workflow_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"
# List executions
curl https://api.zipf.ai/v1/workflows/{workflow_id}/executions \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Execute now (manual trigger)
curl -X POST https://api.zipf.ai/v1/workflows/{workflow_id}/execute \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Pause/Resume
curl -X PATCH https://api.zipf.ai/v1/workflows/{workflow_id} \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "paused"}'Sessions API — Multi-Step Workflows
Group related operations together. Auto-deduplicates URLs across searches.
# Create session
curl -X POST https://api.zipf.ai/v1/sessions \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "AI Safety Research Project 2026",
"session_config": { "auto_deduplicate": true }
}'
# List all your sessions
curl https://api.zipf.ai/v1/sessions \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get session details
curl https://api.zipf.ai/v1/sessions/{session_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Run search in session (filter_seen_urls removes duplicates)
curl -X POST https://api.zipf.ai/v1/sessions/{session_id}/search \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "AI alignment techniques 2026",
"max_results": 20,
"filter_seen_urls": true
}'
# Get session timeline (all operations)
curl https://api.zipf.ai/v1/sessions/{session_id}/timeline \
-H "Authorization: Bearer $ZIPF_API_KEY"MCP Integration — Connect in seconds, no API keys needed
Connect MCP-compatible AI assistants like Claude Desktop, Codex, Claude Code, Gemini CLI, Cursor, and Windsurf. Just add the server URL and log in — OAuth handles authentication automatically.
Connect your AI assistant
No API keys to copy. Pick your client and use the matching one-line setup.
Command
OpenAI Codex CLI
Command
codex mcp add zipf --url https://api.zipf.ai/mcpRuns the hosted MCP server and opens browser login.
Advanced: Manual JSON Config (optional)
{
"mcpServers": {
"zipf": {
"url": "https://api.zipf.ai/mcp"
}
}
}zipfai_statusCheck credits (FREE)
zipfai_searchAI-enhanced web search (1-2 credits)
zipfai_askGet answers with sources (2-5 credits)
zipfai_crawlExtract content from URLs (1-2 credits/page)
zipfai_researchSearch + auto-crawl combo
Need help? Visit the MCP Integration Dashboard for guided setup and key management.
Quick Reference
Credits
| Operation | Basic | Advanced |
|---|---|---|
| Ask | 2-5 credits | — |
| Search | 1 credit | 2 credits |
| Crawl (per page) | 1 credit | 2 credits |
| Comprehensive Search | 1 + N credits | — |
| Workflow (simple) | 1 credit/exec | 2 credits (NL condition) |
| Workflow (multi-step) | Sum of step costs per execution | |
| Workflow Plan Preview | FREE | |
Advanced triggers: interpret_query, rerank_results, generate_suggestions, extraction_schema, classify_documents, natural_language condition
Authentication
Base URL: https://api.zipf.ai/v1
Header: Authorization: Bearer $ZIPF_API_KEYPython Example
import requests
import os
API_KEY = os.environ["ZIPF_API_KEY"]
BASE_URL = "https://api.zipf.ai/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Basic search
response = requests.post(
f"{BASE_URL}/searches",
headers=headers,
json={
"query": "AI infrastructure startups 2026",
"max_results": 10
}
)
results = response.json()
print(f"Found {results['results']['total_found']} results")
for url in results['results']['urls'][:5]:
print(f" - {url['title']}: {url['url']}")
# Sync crawl - get results in one request
crawl = requests.post(
f"{BASE_URL}/crawls",
headers=headers,
json={
"urls": ["https://example.com"],
"max_pages": 3,
"processing_mode": "sync" # No polling needed!
}
).json()
print(f"Crawled {crawl['stats']['pages_crawled']} pages")TypeScript/Node Example
const API_KEY = process.env.ZIPF_API_KEY;
const BASE_URL = "https://api.zipf.ai/v1";
async function search(query: string) {
const response = await fetch(`${BASE_URL}/searches`, {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ query, max_results: 10 })
});
return response.json();
}
async function crawl(urls: string[]) {
const response = await fetch(`${BASE_URL}/crawls`, {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
urls,
max_pages: 5,
processing_mode: "sync" // Returns full results, no polling!
})
});
return response.json();
}
// Usage
const results = await search("AI infrastructure startups 2026");
console.log(`Found ${results.results.total_found} results`);
const crawlResults = await crawl(["https://example.com"]);
console.log(`Crawled ${crawlResults.stats.pages_crawled} pages`);Resources
100 free credits/month. No credit card required.
Get Started