中文 · Русский · Português · Español · 日本語 · 한국어
CLI for Exa — neural web search, URL crawling, and AI deep research from the terminal.
exa-search-cli wraps the Exa API in four terminal commands. Exa is a search API built for AI applications — it searches by meaning, not keywords, which means it finds relevant pages even when the exact words are not present in the content.
exa-search searches the web. exa-crawl extracts clean readable text from any URL without HTML. exa-research submits a deep research task where Exa AI reads the web and synthesizes a structured answer; exa-research-status checks on that task and returns the result once it's ready.
Every command outputs clean --json for use in scripts, pipelines, and AI agent workflows.
- Developers who want web search access from shell scripts and automation pipelines
- AI agent developers who need structured, parseable web search output
- Researchers collecting, filtering, and crawling web content programmatically
- Anyone using Claude Code, Codex, Cursor, or Windsurf who wants to give their agent web access
- Neural (semantic) search — finds pages by meaning, not keyword matching
- Find pages similar to any URL
- Filter by content type:
news,tweet,github,research paper,pdf, and more - Filter by date range and domain
- Full page text extraction from any URL (no HTML)
- AI deep research tasks with synthesized answers
- Clean
--jsonoutput for every command
uv tool install exa-search-cliNo
uv? Runcurl -LsSf https://astral.sh/uv/install.sh | sh, or usepip install exa-search-cli.
Get your API key at exa.ai (free tier available):
export EXA_API_KEY=your-key-here
exa-search "how do transformers work" --category "research paper"# Neural search
exa-search "vision language models 2025" -n 10
# Find similar pages to a URL
exa-search --similar https://github.com/astral-sh/uv
# Filter by content type and date
exa-search "AI papers" --category "research paper" --start-date 2025-01-01
# Only specific domains
exa-search "documentation" --include-domain docs.python.org,docs.rs
# Exclude noisy domains
exa-search "tutorial" --exclude-domain medium.com,dev.to
# Crawl a page, get clean text
exa-crawl https://example.com -c 8000
# Deep research task
exa-research "current state of quantum error correction"
exa-research-status <research-id> # check progress / fetch the result
# JSON output for pipelines
exa-search "topic" --json | jq -r '(if type=="array" then . else (.results // []) end)[] | .url'All flags — exa-search:
| Flag | Default | Description |
|---|---|---|
-n / --num-results |
8 |
Number of results |
-t / --type |
auto |
auto · keyword · neural |
--text |
off | Fetch and show full page text |
--category |
— | news · tweet · github · research paper · pdf · company · personal site · linkedin profile · financial report |
--start-date |
— | Published on or after YYYY-MM-DD |
--end-date |
— | Published on or before YYYY-MM-DD |
--include-domain |
— | Comma-separated domains to include only |
--exclude-domain |
— | Comma-separated domains to exclude |
--similar |
— | Find pages similar to this URL |
--json |
off | Structured JSON output |
All flags — exa-crawl: -c / --max-chars (default 5000), --json
All flags — exa-research: -m / --model (exa-research-fast · exa-research · exa-research-pro), --json
All flags — exa-research-status: --json
exa-search-cli is stateless, read-only, and exits cleanly — designed to be called by AI coding assistants.
# Search and extract URLs (most common agent pattern)
exa-search "topic" --json | jq -r '(if type=="array" then . else (.results // []) end)[] | .url'
# Search → crawl first result
exa-search "topic" --json \
| jq -r '(if type=="array" then . else (.results // []) end)[0].url // empty' \
| xargs exa-crawl -c 6000
# Find similar pages to a reference URL
exa-search --similar https://example.com --json
# Deep research, get synthesized answer
exa-research "topic" --json
exa-research-status <research-id> --jsonJSON schema for exa-search --json:
{
"results": [
{
"title": "...",
"url": "...",
"published_date": "2025-01-15T00:00:00.000Z",
"author": "...",
"highlights": ["excerpt..."],
"text": "full text if --text was passed"
}
]
}See AGENTS.md for full schemas, exit codes, and environment reference.
Spec first, then a plan, then implementation with AI coding agents (Claude Code, Codex). Every diff gets reviewed before merge, and releases go through tests and basic security checks. More on the process on the Nolan Vale profile.
- Author: Nolan Vale
- Brand: Nolan Vale Tools
- Focus: search automation, CLI workflows, AI-agent tooling, developer productivity
- License: MIT
Built by Nolan Vale
Part of Nolan Vale Tools — practical open-source utilities for search, automation, AI agents, and developer workflows.