API review

Parallel AI API review

Pay-as-you-go web APIs for AI agents on Parallel's own index: Search, Extract, Task (deep research and structured enrichment with citations), Responses, Monitor, FindAll and Entity Search, plus a free anonymous Search MCP. Best for row-level account/contact research and enrichment with per-field citations and confidence.

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

What a call costs

The actions you pay for, as Parallel AI prices them.

ActionCostPer
Search turbo$11k requests (10 results); +$1 per 1k additional results
Search fast$11k requests (10 results); +$1 per 1k additional results
Search basic$51k requests (10 results); +$1 per 1k additional results
Search advanced (API default mode)$51k requests (10 results); +$1 per 1k additional results
Image Search fast / advanced$1 / $51k requests (up to 20 results)
Extract$11k URLs (docs) = '1,000 results' (pricing page and in-app rate card); measured 1 URL = $0.001
Task lite$51k successful runs
Task base$101k successful runs
Show all 25 priced actionsHide the rest
ActionCostPer
Task core$251k successful runs
Task core2x$501k successful runs
Task pro$1001k successful runs
Task ultra$3001k successful runs
Task ultra2x$6001k successful runs
Task ultra4x$1,2001k successful runs
Task ultra8x$2,4001k successful runs
Responses low / medium (default) / high$10 / $50 / $2501k successful requests
Chat API (beta, legacy page)$51k requests
Monitor lite / base$3 / $101k executions (checks)
FindAll preview$0.10 fixed + $0.00/matchrun
FindAll base$0.25 fixed + $0.03/matchrun
FindAll core$2.00 fixed + $0.15/matchrun
FindAll pro$10.00 fixed + $1.00/matchrun
FindAll enrichmentTask processor priceper match per enrichment
Entity Search$5 per 1k requests (100 results) + $0.05 per 1k additional resultsrequest
Data Connectors pay-per-useper successful invocation (provider-specific); bioRxiv, ClinicalTrials.gov, ChEMBL, CMS Coverage, medRxiv, NPI Registry, PubMed freeinvocation

Pricing, plan by plan

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

Free tier PUBLIC PAGES: 'Run up to 5,000 requests per month for free' and 'Earn up to $80 at signup + $5 in free credits per month'; 'up to 80,000 free search requests'; $5/month needs a card, expires month end, one org per card, marketplace/postpaid excluded. LIVE APP (new org, 2026-10-25): plan named 'Free', 'No card needed'; the full $80.00 signup credit landed at once with no card or survey and 'Expires Dec 24' (about 60 days); 'Add a card to unlock monthly credits'; 'Requests stop when your credit runs out'. The live app wins for what a new user gets: $80 immediately, expiring ~60 days after signup. Startups: up to $250 by application. Search MCP free without an account.

Pay as you go

One-off pack

Prepaid dollar balance, priced per request; optional auto-reload

API included
Plan details

Billed at standard rates beyond free credit; monthly spend limits are notify-only and never block requests

Free

$0

Free

$80 signup credit granted immediately, no card, expires ~60 days after signup (in-app 'Expires Dec 24' for a 25 Oct signup); +$5/month once a card is added

API included
Plan details

Requests stop when credit runs out unless a card is added; then standard rates

Startup program

Up to $250 in free credits for qualified startups (application)

API included

Enterprise

Custom quote

Custom; ZDR, DPA, SSO, custom rate limits, EU data residency

API included

Rate limits

Defaults per product, rolling 60-second window, only POSTs that create resources count (GETs and polling are free of limits).

LimitSearch (POST /v1/search)Image SearchExtractTasks / Task Groups (per run created)Chat (/v1beta/chat/completions)ResponsesFindAll run creationEntity SearchMonitor creationSearch MCP anonymousEnterprise
Limit600 per min600 per min600 per min2,000 per min300 per min300 requests / min (pricing page only; not on rate-limits page)300 per hour (docs) vs 25 / hr (pricing page): conflicting600 per min300 per min'lower rate limits', exact cap not published; API key or OAuth unlocks higherCustom rate limits
More on limitsLess

429 on breach. Higher limits No rate-limit headers are returned (only x-request-id), per hands-on.

How to get an API key

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

  1. Create a Parallel AI account. The Free plan includes API access.
  2. Sign up at platform.parallel.ai (magic-link email or Google; SSO on login; no password, no card, no captcha). A Default App + Default API Key are created at signup; more under Settings > API Keys, grouped by App. Full keys stay re-viewable by admins (eye icon), and per-user 'Account Keys' are created automatically for Platform/CLI sign-ins.
  3. Send it with every request: header x-api-key: <key> for every product endpoint (spec ApiKeyAuth; the EU host eu.parallel.ai takes the same header). Account API (api.parallel.ai/account...) needs Authorization: Bearer <access_token> minted by Parallel OAuth (device / jwt-bearer grants); an API key gets 401 'Missing bearer token' (live test). MCP servers take Authorization: Bearer <api key>.
  4. Make a first call: Web search returning ranked URLs with LLM-ready compressed excerpts (GA). Keep the key in an environment variable, never in the command.
    curl -X POST "https://api.parallel.ai/v1/search" \
      -H "Authorization: Bearer $PARALLEL_AI_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationdocs.parallel.ai
API referencedocs.parallel.ai/api-reference/search/search
OpenAPI specdocs.parallel.ai/public-openapi.json
llms.txtdocs.parallel.ai/llms.txt
Changelogdocs.parallel.ai/resources/changelog
Base URLhttps://api.parallel.ai
MCP serverhttps://search.parallel.ai/mcp
SDKsparallel-web (Python, PyPI), parallel-web (TypeScript, npm), parallel-cli (pipx/uv 'parallel-web-tools[cli]' or brew parallel-web/tap/parallel-cli), parallel-web-tools (Python data integrations: Polars, DuckDB, Spark), OpenAI SDKs (Responses and Chat are OpenAI-compatible), Parallel Agent Skills (npx skills add parallel-web/parallel-agent-skills), Claude Code plugin, Cursor plugin, OpenCode plugin, Pi extension

Strengths and limits

Where it fits

  • Row-level account/contact research and enrichment with per-field citations and confidence (Task API, $5-$2,400 per 1k runs)
  • Batch enrichment of lists via Task Groups (up to 1,000 runs per request)
  • Building verified entity lists from a natural-language ICP (FindAll, $0.25 + $0.03/match on base)
  • Cheap agent web search ($1 per 1k on turbo/fast) and URL-to-markdown extraction ($1 per 1k URLs)
  • Scheduled web monitoring for signals with webhooks (Monitor, $3 per 1k executions on lite)
  • Free zero-setup web search inside Claude Code / Cursor via the anonymous Search MCP

Where it falls short

  • Pages behind a login (public web only, per FAQ)
  • Verified emails/phones or static firmographic databases
  • Reselling outputs or building a database / data-selling product from outputs (Customer Terms 2(c)(vi))
  • Production-critical FindAll / Entity Search pipelines that cannot absorb breaking changes (public beta, 30 days notice)

Worth knowing

  • Search API default mode is 'advanced' at $5 per 1k; 'fast' is $1 per 1k and the docs call it the right choice for most agents. Set mode explicitly.
  • Search prices include 10 results; every extra result costs $1 per 1k, so max_results=50 on basic/advanced is $0.045 per call, not $0.005.
  • Task is billed per successful run regardless of field count, but processors cap fields (~2 lite, ~5 base, ~10 core/core2x, ~20 pro/ultra, ~25 ultra2x/4x/8x per pricing page and in-app); spec+input over 25,000 chars errors.
  • Prepaid balance with in-flight reservations: running pro/ultra tasks and whole Task Group batches reserve credit upfront, so a positive balance can still return 402.
  • Monthly spend limits are notify-only and never block requests.
16 moreShow fewer
  • Monitor bills per execution: an hourly lite monitor is ~720 executions a month, about $2.16, and 'core' monitor processor exists in the API with no published price.
  • FindAll fixed fee is charged per run even with few matches (pro $10 fixed); enrichments multiply Task price by matches; FindAll and Entity Search are public beta with 30 days notice of breaking changes.
  • FindAll rate limit conflicts: 300 per hour on the docs rate-limits page vs 25 / hr on parallel.ai/pricing.
  • /v1/extract moved full_content, fetch_policy, excerpt_settings under advanced_settings; sending v1beta top-level fields to /v1 returns 422.
  • Rate-limits page still names POST /v1alpha/monitors although Monitor is GA on /v1/monitors.
  • Customer Terms 2(b)/2(c)(vi): outputs are for the querying user / one end customer, may not be cached or shared across end customers, and may not be used to create databases, data brokerage or data selling products, or to train models. Matters for agencies storing results for reuse across clients.
  • Standard terms let Parallel train on inputs and outputs (de-identified); only enterprise ZDR and EU endpoint traffic are excluded.
  • AUP forbids building similar or competitive products and orchestrating usage across multiple accounts to dodge rate limits.
  • Public web only: no login-gated pages; Turbo search supports English and Japanese only.
  • The '-fast' Task processors (lite-fast, base-fast, core-fast, pro-fast, ultra-fast) announced Dec 2025 are no longer listed on today's processors or pricing pages; status not stated.
  • The Account API (balance, apps, keys) lives under api.parallel.ai/account and refuses API keys (401 'Missing bearer token'); it needs an OAuth access token. With a plain API key you cannot read your balance.
  • In-app balance and Usage round to the cent; Settings > Usage > EXPORT CSV gives exact per-call cost ($0.001 search fast, $0.001 extract, $0.005 task lite).
  • POST /account/service/v1/balance/add charges the org's default card immediately (amount_cents + idempotency_key); treat it as a paid call.
  • EU endpoint eu.parallel.ai (enterprise agreement only): Search requires mode 'basic' and Extract only; same x-api-key; about 1 hour to activate on a new key.
  • Search MCP caps excerpts at roughly 25,000 characters per tool call; anonymous calls run fast mode and ignore search overrides.
  • Latency bands differ by page: Task core is 60s-5min (docs pricing) vs 1-5min (pricing page/in-app); ultra8x 5min-2hr (docs) vs 8-30min (pricing page/in-app); lite 10-60s (docs) vs 5-60s (pricing page/in-app).

Our take

For an AI workforce startup client we ran the Task API on the base processor to find the top executive at each of 108 small companies: it returned a name for 76 and found nobody for 24. On a 181-contact research run for the same client, 14 Task runs did not finish within our polling window. We have also run pro-processor research reports for our own work.

Who should use it

Use Parallel AI for
Row-level account/contact research and enrichment with per-field citations and confidence (Task API, $5-$2,400 per 1k runs)
Look elsewhere for
Pages behind a login (public web only, per FAQ)

If Parallel AI is not the answer

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

Before you build

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

  • Confirm the API is on your planThe Free plan includes API access. Free tier: PUBLIC PAGES: 'Run up to 5,000 requests per month for free' and 'Earn up to $80 at signup + $5 in free credits per month'.
  • Keep the key out of your codeAPI key. It is sent as: header x-api-key: <key> for every product endpoint (spec ApiKeyAuth; the EU host eu.parallel.ai takes the same header). Account API (api.parallel.ai/account...) needs Authorization: Bearer <access_token> minted by Parallel OAuth (device / jwt-bearer grants); an API key gets 401 'Missing bearer token' (live test). MCP servers take Authorization: Bearer <api key>..
  • Design around the rate limitDefaults per product, rolling 60-second window, only POSTs that create resources count (GETs and polling are free of limits).
  • Know the catch before you scaleSearch API default mode is 'advanced' at $5 per 1k; 'fast' is $1 per 1k and the docs call it the right choice for most agents. Set mode explicitly.

Want us to build it for you?

Tell us what you want Parallel AI 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 docs.parallel.ai/getting-started/pricing, docs.parallel.ai/api-reference/search/search and docs.parallel.ai/getting-started/rate-limits. Verified 25 Oct 2026.

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

Base URL: api.parallel.ai

Bulk and async: Task Group API: up to 1,000 runs per add-runs request, balance checked for the full batch upfront; Extract takes up to 20 URLs per call; FindAll runs up to 1,000 matches with exclude_list up to 10,000; SQL/DataFrame integrations for BigQuery, Snowflake, Spark, DuckDB, Polars

Webhooks: Yes: Task runs (event task_run.status), FindAll runs and candidates, Monitor (monitor.event.detected, monitor.execution.completed, monitor.execution.failed). Standard Webhooks format with webhook-id, webhook-timestamp, webhook-signature (HMAC v1) using an account secret from Settings > Webhooks. Task webhook not available via the Python SDK.

46 endpoints
MethodPathWhat it doesCost
POST/v1/searchWeb search returning ranked URLs with LLM-ready compressed excerpts (GA)turbo/fast $1 per 1k requests; basic/advanced $5 per 1k requests; 10 results included, each additional result $1 per 1k; measured fast = $0.001. The response usage reports the same SKU (sku_search) for fast and advanced.
POST/v1/images/searchImage search from keyword queries plus optional objectivefast $1 per 1k requests; advanced $5 per 1k; up to 20 results per request at no extra cost
POST/v1/extractExcerpts or full markdown content from given URLs (GA)$1 per 1k URLs ($0.001 per URL) per docs; in-app rate card and pricing page say '$1 per 1,000 results'; measured 1 URL = $0.001
POST/v1beta/searchLegacy beta Search, kept only for existing integrationsNot stated
POST/v1beta/extractLegacy beta Extract, kept only for existing integrations; top-level excerpts/full_content/fetch_policyNot stated
POSTasync/v1/tasks/runsCreate a Task Run: web research or structured enrichment with Basis (citations, reasoning, confidence)Per successful run, by processor: lite $5/1k ($0.005), base $10/1k, core $25/1k, core2x $50/1k, pro $100/1k, ultra $300/1k, ultra2x $600/1k, ultra4x $1,200/1k, ultra8x $2,400/1k ($2.40/run). Failed runs not billed; measured lite = $0.005
GETasync/v1/tasks/runs/{run_id}Retrieve Task Run statusNot stated
GETasync/v1/tasks/runs/{run_id}/resultRetrieve Task Run result, blocking until completeNot stated
GETasync/v1/tasks/runs/{run_id}/inputRetrieve Task Run inputNot stated
GETasync/v1/tasks/runs/{run_id}/eventsStream Task Run progress events (SSE)Not stated
POSTasync/v1/tasks/groupsCreate a Task Group to batch and track many runsNot stated
POSTasync/v1/tasks/groups/{taskgroup_id}/runsAdd runs to a Task Group (batch enrichment)Each run billed at its processor's Task price (see /v1/tasks/runs)
GETasync/v1/tasks/groups/{taskgroup_id}Retrieve aggregated Task Group statusNot stated
GETasync/v1/tasks/groups/{taskgroup_id}/runsFetch Task Group runs, optionally with inputs and outputsNot stated
GETasync/v1/tasks/groups/{taskgroup_id}/runs/{run_id}Retrieve one Task Group runNot stated
GETasync/v1/tasks/groups/{taskgroup_id}/eventsStream Task Group events (SSE)Not stated
POST/v1/responsesResponses API: OpenAI Responses-compatible cited answers from live web research (replaces Chat in pricing tables)low $10/1k, medium $50/1k (default), high $250/1k successful requests
POST/v1beta/chat/completionsChat API (beta): OpenAI ChatCompletions-compatible web-grounded chat; can also use Task processors$5 per 1,000 requests per product page parallel.ai/products/chat; Chat is no longer listed on the docs pricing page or parallel.ai/pricing
POST/v1beta/findall/ingestTurn a natural-language objective into a structured FindAll spec (entity_type, match_conditions)Not stated
POSTasync/v1beta/findall/runsCreate a FindAll run: discover, verify and optionally enrich all entities matching criteria (public beta)Fixed + per match: preview $0.10 + $0.00; base $0.25 + $0.03/match; core $2.00 + $0.15/match; pro $10.00 + $1.00/match. Enrichments billed per match at Task processor price
GETasync/v1beta/findall/runs/{findall_id}Retrieve FindAll run statusNot stated
GETasync/v1beta/findall/runs/{findall_id}/resultFindAll run result at time of requestNot stated
GETasync/v1beta/findall/runs/{findall_id}/schemaGet FindAll run schemaNot stated
GETasync/v1beta/findall/runs/{findall_id}/eventsStream FindAll events (SSE)Not stated
POSTasync/v1beta/findall/runs/{findall_id}/enrichAdd an enrichment (non-boolean fields) to a FindAll runTask API processor price x number of matches
POSTasync/v1beta/findall/runs/{findall_id}/extendRaise match limit of an existing runFixed cost not charged again; only per-match cost for new matches
POSTasync/v1beta/findall/runs/{findall_id}/cancelCancel a FindAll runCharged for work completed before cancellation
POST/v1beta/findall/entity-searchEntity Search (public beta): fast synchronous people or company search from a natural-language objective$5 per 1k requests incl. 100 results; additional results $0.05 per 1k
POSTasync/v1/monitorsCreate a monitor (GA): event_stream (query) or snapshot (task output) on a schedulePer execution: lite $3 per 1k, base $10 per 1k; core is in the API enum but has no published price
GET/v1/monitorsList monitorsNot stated
GET/v1/monitors/statsAggregate monitor countsNot stated
GET/v1/monitors/{monitor_id}Retrieve a monitorNot stated
POST/v1/monitors/{monitor_id}/updateUpdate a monitorNot stated
POST/v1/monitors/{monitor_id}/cancelCancel a monitorNot stated
POSTasync/v1/monitors/{monitor_id}/triggerTrigger an immediate monitor runNot stated
GET/v1/monitors/{monitor_id}/eventsList monitor events, newest firstNot stated
POST/v1beta/memory/retrieveRetrieve relevant or recent past Task/Monitor/FindAll runs from memoryNot stated
POST/v1beta/memory/evictRemove one run from memoryNot stated
POST/v1beta/memory/clearClear a memory scopeNot stated
GET/account/service/v1/balanceAccount API: prepaid credit balancefree