Getting Started
Web search, crawling, extraction, and 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 Claude, Cursor, or Windsurf?
Connect Zipf in one command. 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"export ZIPF_API_KEY="wvr_your_token_here"1. Check Your Credit Balance
curl https://www.zipf.ai/api/v1 \
-H "Authorization: Bearer $ZIPF_API_KEY"curl https://www.zipf.ai/api/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://www.zipf.ai/api/v1/search \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "AI infrastructure startups 2026",
"max_results": 10
}'
# List your search history
curl https://www.zipf.ai/api/v1/search/jobs \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get a specific search job with full results
curl https://www.zipf.ai/api/v1/search/jobs/{search_job_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"# Run a search
curl -X POST https://www.zipf.ai/api/v1/search \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "AI infrastructure startups 2026",
"max_results": 10
}'
# List your search history
curl https://www.zipf.ai/api/v1/search/jobs \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get a specific search job with full results
curl https://www.zipf.ai/api/v1/search/jobs/{search_job_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://www.zipf.ai/api/v1/search \
-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
}'curl -X POST https://www.zipf.ai/api/v1/search \
-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://www.zipf.ai/api/v1/ask \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "Who is the CEO of NVIDIA?",
"depth": "quick"
}'curl -X POST https://www.zipf.ai/api/v1/ask \
-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://www.zipf.ai/api/v1/search \
-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 search jobs (includes comprehensive searches)
curl https://www.zipf.ai/api/v1/search/jobs \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get search job with decomposition and results
curl https://www.zipf.ai/api/v1/search/jobs/{search_job_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"# Create a comprehensive search with query decomposition
curl -X POST https://www.zipf.ai/api/v1/search \
-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 search jobs (includes comprehensive searches)
curl https://www.zipf.ai/api/v1/search/jobs \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get search job with decomposition and results
curl https://www.zipf.ai/api/v1/search/jobs/{search_job_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://www.zipf.ai/api/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"
}
}'# Sync crawl - returns full results in one request (no polling!)
curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/v1/crawls/{crawl_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"# Async crawl - returns immediately, poll for results
curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/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
}'curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/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
}'# 1. Preview the plan (FREE)
curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/v1/workflows \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get workflow details
curl https://www.zipf.ai/api/v1/workflows/{workflow_id}/details \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get execution timeline
curl https://www.zipf.ai/api/v1/workflows/{workflow_id}/timeline \
-H "Authorization: Bearer $ZIPF_API_KEY"
# AI-native diff — what changed between executions
curl https://www.zipf.ai/api/v1/workflows/{workflow_id}/diff \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Execute now (manual trigger)
curl -X POST https://www.zipf.ai/api/v1/workflows/{workflow_id}/execute \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Pause/Resume
curl -X PATCH https://www.zipf.ai/api/v1/workflows/{workflow_id} \
-H "Authorization: Bearer $ZIPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "paused"}'# List all workflows
curl https://www.zipf.ai/api/v1/workflows \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get workflow details
curl https://www.zipf.ai/api/v1/workflows/{workflow_id}/details \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get execution timeline
curl https://www.zipf.ai/api/v1/workflows/{workflow_id}/timeline \
-H "Authorization: Bearer $ZIPF_API_KEY"
# AI-native diff — what changed between executions
curl https://www.zipf.ai/api/v1/workflows/{workflow_id}/diff \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Execute now (manual trigger)
curl -X POST https://www.zipf.ai/api/v1/workflows/{workflow_id}/execute \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Pause/Resume
curl -X PATCH https://www.zipf.ai/api/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://www.zipf.ai/api/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://www.zipf.ai/api/v1/sessions \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get session details
curl https://www.zipf.ai/api/v1/sessions/{session_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Run search in session (filter_seen_urls removes duplicates)
curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/v1/sessions/{session_id}/timeline \
-H "Authorization: Bearer $ZIPF_API_KEY"# Create session
curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/v1/sessions \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Get session details
curl https://www.zipf.ai/api/v1/sessions/{session_id} \
-H "Authorization: Bearer $ZIPF_API_KEY"
# Run search in session (filter_seen_urls removes duplicates)
curl -X POST https://www.zipf.ai/api/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://www.zipf.ai/api/v1/sessions/{session_id}/timeline \
-H "Authorization: Bearer $ZIPF_API_KEY"MCP Integration — Connect AI assistants and agents
Use Zipf AI directly in your MCP-compatible assistant or coding agent. The Model Context Protocol lets AI assistants search and crawl the web through Zipf.
# Claude Code (Run in your terminal)
claude mcp add zipf -- npx -y mcp-remote https://www.zipf.ai/api/mcp/sse
# Cursor — add to ~/.cursor/mcp.json
# Windsurf — add to ~/.codeium/windsurf/mcp_config.json
# Claude Desktop — Settings → Integrations → Add → paste the SSE URL# Claude Code (Run in your terminal)
claude mcp add zipf -- npx -y mcp-remote https://www.zipf.ai/api/mcp/sse
# Cursor — add to ~/.cursor/mcp.json
# Windsurf — add to ~/.codeium/windsurf/mcp_config.json
# Claude Desktop — Settings → Integrations → Add → paste the SSE URL{
"mcpServers": {
"zipf": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://www.zipf.ai/api/mcp/sse"
]
}
}
}{
"mcpServers": {
"zipf": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://www.zipf.ai/api/mcp/sse"
]
}
}
}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
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.
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 | |
| 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://www.zipf.ai/api/v1
Header: Authorization: Bearer $ZIPF_API_KEYBase URL: https://www.zipf.ai/api/v1
Header: Authorization: Bearer $ZIPF_API_KEYPython Example
import requests
import os
API_KEY = os.environ["ZIPF_API_KEY"]
BASE_URL = "https://www.zipf.ai/api/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Basic search
response = requests.post(
f"{BASE_URL}/search",
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")import requests
import os
API_KEY = os.environ["ZIPF_API_KEY"]
BASE_URL = "https://www.zipf.ai/api/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Basic search
response = requests.post(
f"{BASE_URL}/search",
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://www.zipf.ai/api/v1";
async function search(query: string) {
const response = await fetch(`${BASE_URL}/search`, {
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`);const API_KEY = process.env.ZIPF_API_KEY;
const BASE_URL = "https://www.zipf.ai/api/v1";
async function search(query: string) {
const response = await fetch(`${BASE_URL}/search`, {
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 StartedGet Started