Skip to main content
The parallel-cli is a command-line tool for interacting with the Parallel API. It works interactively or fully via command-line arguments, making it the recommended way to use Parallel in standalone agents. For best results, pair the CLI with Agent Skills or Claude Code to give your agent structured access to search, extract, enrich, and research capabilities.
View the source and full README on GitHub.
Already have parallel-cli installed? Run parallel-cli update to get the latest features and improvements.

Installation

Authentication

# Interactive OAuth login
parallel-cli login

# Or set environment variable
export PARALLEL_API_KEY="your_api_key"

# Check auth status
parallel-cli auth
Get your API key from Platform.

Commands

Search the web with natural language objectives or keyword queries.
# Natural language search
parallel-cli search "What is Anthropic's latest AI model?" --json

# Keyword search with date filter
parallel-cli search -q "bitcoin price" --after-date 2026-01-01 --json

# Search specific domains
parallel-cli search "SEC filings for Apple" --include-domains sec.gov --json

# Set search mode
parallel-cli search "latest AI research" --mode one-shot --json
OptionDescription
-q, --queryKeyword search query (repeatable)
--modeone-shot or agentic (default)
--max-resultsMaximum results (default: 10)
--include-domainsOnly search these domains
--exclude-domainsExclude these domains
--after-dateOnly results after this date (YYYY-MM-DD)
--jsonOutput as JSON
-o, --outputSave results to file

Extract

Extract clean markdown content from URLs.
# Basic extraction
parallel-cli extract https://example.com --json

# Extract with a specific focus
parallel-cli extract https://company.com --objective "Find pricing info" --json

# Get full page content
parallel-cli extract https://example.com --full-content --json
OptionDescription
--objectiveFocus extraction on a specific goal
-q, --queryKeywords to prioritize (repeatable)
--full-contentInclude complete page content
--no-excerptsExclude excerpts from output
--jsonOutput as JSON
-o, --outputSave results to file

Research

Run deep research on open-ended questions.
# Run deep research
parallel-cli research run "What are the latest developments in quantum computing?" --json

# Use a specific processor tier
parallel-cli research run "Compare EV battery technologies" --processor ultra --json

# Read query from file
parallel-cli research run -f question.txt -o report

# Async: launch then poll separately
parallel-cli research run "question" --no-wait --json    # returns run_id
parallel-cli research status trun_xxx --json              # check status
parallel-cli research poll trun_xxx --json                # wait and get result

# List available processors
parallel-cli research processors --json
OptionDescription
-p, --processorProcessor tier: lite, base, core, pro (default), ultra, and -fast variants
--no-waitReturn immediately after creating task
--timeoutMax wait time in seconds (default: 3600)
-o, --outputSave results (creates .json and .md files)
--jsonOutput as JSON

Enrich

Enrich CSV or JSON data with AI-powered web research.
# Let AI suggest output columns
parallel-cli enrich suggest "Find the CEO and annual revenue" --json

# Run enrichment directly
parallel-cli enrich run \
    --source-type csv \
    --source companies.csv \
    --target enriched.csv \
    --source-columns '[{"name": "company", "description": "Company name"}]' \
    --intent "Find the CEO and annual revenue"

# Enrich with inline data (no file needed)
parallel-cli enrich run \
    --data '[{"company": "Google"}, {"company": "Apple"}]' \
    --target output.csv \
    --intent "Find the CEO"

# Enrich a JSON file
parallel-cli enrich run \
    --source-type json \
    --source companies.json \
    --target enriched.json \
    --source-columns '[{"name": "company", "description": "Company name"}]' \
    --enriched-columns '[{"name": "ceo", "description": "CEO name"}]'

# Run from YAML config
parallel-cli enrich run config.yaml

# Async: launch then poll
parallel-cli enrich run config.yaml --no-wait --json
parallel-cli enrich status tgrp_xxx --json
parallel-cli enrich poll tgrp_xxx --json
OptionDescription
--source-typecsv or json
--sourceSource file path
--targetTarget file path
--source-columnsSource columns as JSON
--enriched-columnsOutput columns as JSON
--intentNatural language description (AI suggests columns)
--processorProcessor tier (e.g. core-fast, pro, ultra)
--dataInline JSON data array
--no-waitReturn immediately
--dry-runPreview without making API calls
--jsonOutput as JSON
You can also define enrichment jobs in YAML:
source: input.csv
target: output.csv
source_type: csv
processor: core-fast

source_columns:
  - name: company_name
    description: The name of the company

enriched_columns:
  - name: ceo
    description: The CEO of the company
    type: str
  - name: revenue
    description: Annual revenue in USD
    type: float
Create YAML configs interactively or programmatically:
# Interactive
parallel-cli enrich plan -o config.yaml

# Non-interactive (for scripts/agents)
parallel-cli enrich plan -o config.yaml \
    --source-type csv \
    --source companies.csv \
    --target enriched.csv \
    --source-columns '[{"name": "company", "description": "Company name"}]' \
    --intent "Find the CEO and annual revenue"
YAML config files and the interactive planner require pip install parallel-web-tools[cli].

FindAll

Discover entities from the web using natural language.
# Discover entities
parallel-cli findall run "AI startups in healthcare" --json

# Control generator tier and match limit
parallel-cli findall run "Find roofing companies in Charlotte NC" -g base -n 25 --json

# Exclude specific entities
parallel-cli findall run "Find AI startups" \
    --exclude '[{"name": "Example Corp", "url": "example.com"}]' --json

# Preview schema before running
parallel-cli findall run "Find YC companies in developer tools" --dry-run --json

# Async workflow
parallel-cli findall run "AI startups" --no-wait --json
parallel-cli findall status frun_xxx --json
parallel-cli findall poll frun_xxx --json
parallel-cli findall result frun_xxx --json

# Cancel a running job
parallel-cli findall cancel frun_xxx
OptionDescription
-g, --generatorGenerator tier: preview, base, core (default), pro
-n, --match-limitMax matched candidates, 5-1000 (default: 10)
--excludeEntities to exclude as JSON array
--no-waitReturn immediately
--dry-runPreview schema without creating the run
--jsonOutput as JSON

Monitor

Continuously track the web for changes.
# Create a monitor
parallel-cli monitor create "Track price changes for iPhone 16" --json

# Set check frequency
parallel-cli monitor create "New AI funding announcements" --cadence hourly --json

# With webhook delivery
parallel-cli monitor create "SEC filings from Tesla" \
    --webhook https://example.com/hook --json

# Manage monitors
parallel-cli monitor list --json
parallel-cli monitor get mon_xxx --json
parallel-cli monitor update mon_xxx --cadence weekly --json
parallel-cli monitor delete mon_xxx

# View events
parallel-cli monitor events mon_xxx --json

# Test webhook
parallel-cli monitor simulate mon_xxx --json
OptionDescription
-c, --cadencehourly, daily (default), weekly, every_two_weeks
--webhookWebhook URL for event delivery
--output-schemaOutput schema as JSON string
--jsonOutput as JSON

Non-Interactive Mode

All commands support --json output and can be fully controlled via CLI arguments, making the CLI ideal for use in scripts and by AI agents.
# Structured JSON output
parallel-cli search "query" --json

# Read input from stdin
echo "What is the latest funding for Anthropic?" | parallel-cli search - --json
echo "Research question" | parallel-cli research run - --json

# Exit codes
# 0 = success, 2 = bad input, 3 = auth error, 4 = API error, 5 = timeout

Updating

The standalone binary automatically checks for updates and will notify you when a new version is available. To update:
# Standalone binary
parallel-cli update

# Check for updates without installing
parallel-cli update --check

# npm
npm update -g parallel-web-cli

# pip
pip install --upgrade parallel-web-tools
To disable automatic update checks:
parallel-cli config auto-update-check off