API review

Exa API review

AI-native web search API with its own index: search, page contents, cited answers, scheduled monitors, async research Agent, and Websets for verified entity lists. Best for agent web search and RAG grounding with token-efficient contents.

Verified 25 Oct 2026 · 70 endpoints listed · Official MCP server

What a call costs

The actions you pay for, as Exa prices them.

ActionCostPer
/search lite or instant$41k requests (up to 10 results)
/search auto or fast$71k requests
/search deep-lite or deep$121k requests
/search deep-reasoning$151k requests
Results above 10$11k results
AI page summary$11k pages (docs pricing table shows no summary price for lite search; public pricing page lists $1 for Lite too)
/contents$11k pages per content type (text, highlights, summary billed separately)
/answer$51k requests
Show all 18 priced actionsHide the rest
ActionCostPer
/monitors$151k requests
Agent fixed effort$0.012 / $0.025 / $0.10 / $0.50 / $1.00run (minimal/low/medium/high/xhigh)
Agent metered compute$0.10ACU
Agent search tool call$0.005search
Agent email enrichment$0.02email found
Agent phone enrichment$0.07phone found
Exa Connect: Fiber.ai$0.02provider credit
Startup/education grantup to $1,000 free creditsone-off
Exa Connect: Baselayer$0.10-$4.00order, depending on operation
Keyless /search via x402 (USDC)$0.007search (HTTP 402 payment offer returned to a keyless call)

Pricing, plan by plan

US dollars, as Exa's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier DOCS: $10 credits available the day you sign up, reset to $10 on the 1st of each month (no rollover, first team only), plus a one-time $10 bonus for completing dashboard onboarding; 'No payment method required'. LIVE APP: plan reads 'Free $10 credits per month' but balance is $0.00 with banner 'Your free credits are pending payment verification. Add a non-prepaid payment method that hasn't been used to unlock another team's credits.' The live app wins for what a new user actually gets: in practice the free credits need a card. Free tier excludes Exa Snapshot.

Free

$0

Free

$10 credits/month (+$10 one-time onboarding bonus) per docs; live app holds them at $0 until a non-prepaid card is verified

API included
Plan details

402 Payment Required when exhausted

Pay as you go

One-off pack

Prepaid dollar credits via Stripe (card or bank account), no subscription or minimum; auto recharge $5-$10,000 per top-up with optional monthly cap

API included
Plan details

Per-request rates; auto recharge optional

Enterprise

Custom quote

Custom volume pricing, postpaid invoicing, up to 1,000 results/search, ZDR, SLAs

API included

Websets plans

Websets credits, separate from API credits; rates and plan prices only on logged-in websets.exa.ai/billing (exa.ai/websets/pricing and websets.exa.ai/pricing return 404 on 2026-10-25).

API included
Plan details

Free plan caps a webset at 25 verified results.

Rate limits

Team-wide QPS across all keys (docs): /search, /answer, /chat/completions 10 QPS; deep-lite/deep/deep-reasoning 5 QPS; /contents 100 QPS; /agent/runs and /responses 5 QPS + 50 active runs (each run start counts as 2 requests; polling GETs free); /websets/* 20 QPS.

LimitFreePay as you goEnterpriseMCP keyless
Limit10 QPS search/answer, 50 concurrent agent runs; dashboard shows Contents 110 QPS (docs: 100)10 QPS; auto-raised to 25 QPS for 90 days after PURCHASING $1,000 credits within any 30 days (pricing page: 'Up to 25 Search QPS')Custom QPS and concurrency3 QPS and 150 calls/day (changelog entry 'Highlights, content freshness, and MCP updates'); agent_run not available keyless
More on limitsLess

The live dashboard Usage page shows Contents 110 QPS (docs say 100). 429 with RATE_LIMIT_EXCEEDED or CONCURRENCY_LIMIT_REACHED; honour Retry-After.

How to get an API key

Exa uses API key. The steps below follow Exa's own docs.

  1. Create a Exa account. The Free plan includes API access.
  2. Create at dashboard.exa.ai/api-keys. Creating a key needs no card (docs), but on a new account the free credits stay at $0.00 'pending payment verification' until a non-prepaid card not used by another Exa team is added. Team Management API (admin-api.exa.ai) uses a separate service key from the 'Service keys' tab, enabled per team on request
  3. Send it with every request: header: x-api-key: <key> or Authorization: Bearer <key> (core spec securitySchemes apiKey + bearer); Websets and Team Management specs declare x-api-key only.
  4. Make a first call: Web search (types: lite, auto, fast/instant legacy, deep-lite, deep, deep-reasoning); optional contents, categories company/people/news/etc. Keep the key in an environment variable, never in the command.
    curl -X POST "https://api.exa.ai/search" \
      -H "Authorization: Bearer $EXA_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationexa.ai/docs
API referenceexa.ai/docs/reference
OpenAPI specexa.ai/docs/exa-spec.yaml
llms.txtdocs.exa.ai/llms.txt
Changelogexa.ai/docs/changelog
Base URLhttps://api.exa.ai
MCP serverhttps://mcp.exa.ai/mcp
SDKsexa-py (Python), exa-js (JavaScript/TypeScript), OpenAI SDK compatibility, Agent skill: npx skills add exa-labs/agent-skills

Strengths and limits

Where it fits

  • Agent web search and RAG grounding with token-efficient contents
  • Company and people search via category=company / category=people (1B+ public profiles claimed)
  • Async list building and enrichment via Exa Agent with fixed per-run price
  • Scheduled web monitoring with webhooks (Monitors)

Where it falls short

  • Verified B2B contact data at scale (contact enrichment is a paid Agent add-on, $0.02/email, $0.07/phone)
  • Google-SERP-exact rank tracking (own index, not a Google wrapper)
  • Websets via API without a separate paid Websets plan

Worth knowing

  • Websets API needs a separate paid Websets plan; Websets credits are separate from API credits and their rates are not public.
  • /contents bills each content type separately: text + highlights on one page = 2 billable units.
  • numResults above 10 adds $1/1k results; 25+ results per request is Enterprise-only.
  • Rate limits are per team across all keys, not per key.
  • 25 QPS is triggered by credits purchased ($1,000 in 30 days), not credits spent, and lasts 90 days.
8 moreShow fewer
  • Free $10/month does not roll over; only a user's first team receives it.
  • Agent auto mode can bill up to a $5 cap per run, ultra up to $20, unless you set a fixed effort.
  • Changelog: category 'linkedin' was replaced by 'people'; instant/fast/deep-reasoning are legacy types.
  • Free credits are not usable on a new account until a non-prepaid card (not used by another Exa team) is added: the dashboard shows $0.00 'pending payment verification', although the docs and pricing page say 'No payment method required'.
  • Dashboard usage lags: 'Recent usage can take a few hours to show up here.' Track live cost from costDollars in each API response.
  • type=lite accepts only a fixed parameter subset (query, category, numResults, contents.text/highlights, domain/date filters, userLocation, moderation, compliance...); any other parameter returns 400 naming it.
  • Team Management API is enabled per team on request and needs a service key from the 'Service keys' tab, not a normal API key.
  • Websets paths are listed with their /websets prefix, so join them to base_url api.exa.ai only; Team Management endpoints are listed as full URLs on admin-api.exa.ai.

Who should use it

Use Exa for
Agent web search and RAG grounding with token-efficient contents
Look elsewhere for
Verified B2B contact data at scale (contact enrichment is a paid Agent add-on, $0.02/email, $0.07/phone)

If Exa is not the answer

Other Research and scraping tools in this directory, each with its own review.

Compare Exa with

Before you build

Four things to settle first, each read off Exa's own pages.

  • Confirm the API is on your planThe Free plan includes API access. Free tier: DOCS: $10 credits available the day you sign up, reset to $10 on the 1st of each month (no rollover, first team only), plus a one-time $10….
  • Keep the key out of your codeAPI key. It is sent as: header: x-api-key: <key> or Authorization: Bearer <key> (core spec securitySchemes apiKey + bearer); Websets and Team Management specs declare x-api-key only.
  • Design around the rate limitTeam-wide QPS across all keys (docs): /search, /answer, /chat/completions 10 QPS; deep-lite/deep/deep-reasoning 5 QPS; /contents 100 QPS; /agent/runs and /responses 5 QPS + 50 active runs (each run start counts as 2 requests; polling GETs free); /websets/* 20 QPS.
  • Know the catch before you scaleWebsets API needs a separate paid Websets plan; Websets credits are separate from API credits and their rates are not public.

Want us to build it for you?

Tell us what you want Exa to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from exa.ai/docs/admin/pricing, exa.ai/docs/reference and exa.ai/docs/admin/billing. Verified 25 Oct 2026.

All 70 endpointsFor developers: method, path, what it does and what it costs.

Base URL: api.exa.ai

Bulk and async: Batch API (beta): submit many /search or /agent/runs requests, poll, download JSONL; header Exa-Beta: batches-2026-06-06

Webhooks: Yes: Websets webhooks (/websets/v0/webhooks with attempts log) and Monitors deliver to webhooks

70 endpoints
MethodPathWhat it doesCost
POST/searchWeb search (types: lite, auto, fast/instant legacy, deep-lite, deep, deep-reasoning); optional contents, categories company/people/news/etc.lite/instant $4 per 1k requests; auto/fast $7 per 1k; deep-lite/deep $12 per 1k; deep-reasoning $15 per 1k; base covers 10 results, +$1 per 1k extra results; AI summaries +$1 per 1k pages
POST/contentsPage contents for known URLs (text, highlights, summary)$1 per 1k pages per content type; summary +$1 per 1k pages
POST/answerLLM answer with citations$5 per 1k requests
POST/findSimilarFind links similar to a URLNot stated
POST/monitorsCreate a scheduled search monitor (webhook delivery)$15 per 1k monitor runs, +$1 per 1k results above 10, +$1 per 1k summaries
GET/monitorsList monitorsNot stated
POST/monitors/batchBatch action on monitorsNot stated
GET/monitors/{id}Get a monitorNot stated
PATCH/monitors/{id}Update a monitorNot stated
DELETE/monitors/{id}Delete a monitorNot stated
POST/monitors/{id}/triggerTrigger a monitor run now$15 per 1k requests
GET/monitors/{id}/runsList monitor runsNot stated
GET/monitors/{id}/runs/{runId}Get a monitor runNot stated
POSTasync/agent/runsStart an async Exa Agent run (research, list building, enrichment)Fixed effort: minimal $0.012, low $0.025, medium $0.10, high $0.50, xhigh $1.00 per run; auto/ultra metered: $0.10/ACU, $0.005/search call, $0.02/email, $0.07/phone; default caps $5 (auto) / $20 (ultra)
GET/agent/runsList agent runsNot stated
GETasync/agent/runs/{id}Get an agent runNot stated
DELETE/agent/runs/{id}Delete an agent runNot stated
POST/agent/runs/{id}/cancelCancel an agent runNot stated
POST/agent/runs/{id}/stopStop an agent runNot stated
GETasync/agent/runs/{id}/eventsList agent run eventsNot stated
POSTasync/batchesCreate a batch of /search or /agent/runs requests, results as JSONL (beta, header Exa-Beta: batches-2026-06-06)Not stated
GET/batchesList batchesNot stated
GETasync/batches/{id}Get a batchNot stated
DELETE/batches/{id}Delete a batchNot stated
POST/batches/{id}/cancelCancel a batchNot stated
GET/websets/v0/teams/meGet team info (incl. Websets concurrency limits)Not stated
POSTasync/websets/v0/websetsCreate a WebsetWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
GET/websets/v0/websetsList WebsetsNot stated
GET/websets/v0/websets/{id}Get a WebsetNot stated
POSTasync/websets/v0/websets/{id}Update a WebsetWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
DELETE/websets/v0/websets/{id}Delete a WebsetNot stated
POST/websets/v0/websets/{id}/cancelCancel a running WebsetWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
POSTasync/websets/v0/websets/previewPreview a WebsetWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
POSTasync/websets/v0/websets/{webset}/searchesCreate a Webset searchWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
GET/websets/v0/websets/{webset}/searches/{id}Get a Webset searchNot stated
POST/websets/v0/websets/{webset}/searches/{id}/cancelCancel a Webset searchWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
POSTasync/websets/v0/websets/{webset}/enrichmentsCreate an enrichmentWebsets credits (separate from API credits); rates only on logged-in websets.exa.ai/billing
PATCH/websets/v0/websets/{webset}/enrichments/{id}Update an enrichmentNot stated
GET/websets/v0/websets/{webset}/enrichments/{id}Get an enrichmentNot stated
DELETE/websets/v0/websets/{webset}/enrichments/{id}Delete an enrichmentNot stated