Skip to main content

中文 · Русский · Português · Español · 日本語 · 한국어

exa-search-cli

CLI for Exa — neural web search, URL crawling, and AI deep research from the terminal.

PyPI Python 3.11+ License: MIT Stars


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 --json output for every command

Installation

uv tool install exa-search-cli

No uv? Run curl -LsSf https://astral.sh/uv/install.sh | sh, or use pip 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.

→ Full documentation

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)

Source distribution for exa-search-cli 0.1.5
File Size Uploaded
exa_search_cli-0.1.5.tar.gz 52.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for exa-search-cli 0.1.5
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page