Skip to main content

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

Project description

中文 · Русский · 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 three 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.

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"

# 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 or exa-research-pro), --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

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

exa_search_cli-0.1.4.tar.gz (51.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

exa_search_cli-0.1.4-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file exa_search_cli-0.1.4.tar.gz.

File metadata

  • Download URL: exa_search_cli-0.1.4.tar.gz
  • Upload date:
  • Size: 51.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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}

File hashes

Hashes for exa_search_cli-0.1.4.tar.gz
Algorithm Hash digest
SHA256 08458ad06970ce5557b764fcd601e55334cbabbb5d1ab27ebc2695e039db60c5
MD5 f6166d4cf5f8828a4840f918f2894c14
BLAKE2b-256 fa77f21bf27a3215bfbada77bbcfc7772d55a5aadb3276038970b70667354508

See more details on using hashes here.

File details

Details for the file exa_search_cli-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: exa_search_cli-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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}

File hashes

Hashes for exa_search_cli-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 94e0420f2ab8e85dcadaac8014235a6b140f230a3fd5d018bcd8f4969e164f5f
MD5 1b93e29bf4c52374ec464c5d11c107da
BLAKE2b-256 3e42809245fe6843657488dd6f523045d6f741f8bf049e4c57708f07de290f40

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page