中文 · Русский · Português · Español · 日本語 · 한국어
exa-search-cli
CLI for Exa — neural web search, URL crawling, and AI deep research from the terminal.
What it does
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.
Who it is for
- 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
Features
- 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
Installation
uv tool install exa-search-cli
No
uv? Runcurl -LsSf https://astral.sh/uv/install.sh | sh, or usepip install exa-search-cli.
Quick start
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"
Usage
# 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 '.results[].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 | Raw 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
AI agent usage
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 '.results[].url'
# Search → crawl first result
exa-search "topic" --json \
| jq -r '.results[0].url' \
| 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> --json
JSON 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.
Project metadata
- 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.
Metadata
Release files for exa-search-cli 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| exa_search_cli-0.1.5.tar.gz | 52.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| exa_search_cli-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.9 kB
Release files / exa_search_cli-0.1.5.tar.gz
| Download URL | exa_search_cli-0.1.5.tar.gz |
|---|---|
| Size | 52.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62a69a70bd8327c6a73d3c5854207b2fb1df5f060e9b5b8bbfb74203371a5bbb
|
|
BLAKE2b-256 checksum How to use checksums |
8905abbcb2dcf0a556c250220ec7a348508268303bbda3d05dcdf92ae67ab388
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / exa_search_cli-0.1.5-py3-none-any.whl
| Download URL | exa_search_cli-0.1.5-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a398f384d6f19cb35492d41d552df5ca378deaab0a1eb6ac3744fcacd5a0983f
|
|
BLAKE2b-256 checksum How to use checksums |
348c504d3686146743387dd1caa3fba011a2ecf3d57f79174edc566710929a68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|