{"slug":"exa-api","name":"Exa API","category":"scraping-api","provider_slug":null,"publisher":"Exa","publisher_type":"official","website":"https://exa.ai/docs/reference/search","summary":"Use direct HTTP Search to discover source URLs or Contents when URLs or document IDs are known. Choose returned text deliberately, inspect per-item statuses and compare request versus content-type charges.","tools":["http-api"],"capabilities":["web-search","web-scraping"],"outputs":["json","text","highlights"],"connection":"http-api","billing_basis":"Current account pricing: /search instant is $4 per 1,000 requests; fast or auto is $7 per 1,000, including up to 10 results, with extra results billed separately. /contents is $1 per 1,000 returned pages per content type: requesting text and highlights for one page counts as two. AI page summaries have a separately listed $1 per 1,000 pages charge. Rates and account terms can change.","facts":[{"label":"Unknown source URL","value":"POST /search with query and numResults. type: instant targets low latency; auto is the default. A contents.text option can request page text in the same search response, so a second Contents call is not always needed for returned results.","source_ids":["search"]},{"label":"Known source URL or ID","value":"POST /contents accepts either urls or document ids from a prior Search, not both in the same request. Request text, highlights or summaries intentionally for the known items.","source_ids":["contents"]},{"label":"Response content","value":"Both endpoints return JSON. Contents results can include text, highlights or summary when requested. The text option is described as plain markdown-style text, but the reference does not promise a separate Markdown response format.","source_ids":["search","contents"]},{"label":"Per-item acceptance","value":"The Contents response has results and statuses. For each requested URL or ID, check statuses[].id, status (success or error), optional source (cached or crawled) and error details before accepting results. A 200 response does not by itself prove every item succeeded.","source_ids":["contents"]},{"label":"Freshness choice","value":"For Contents, maxAgeHours: 0 requests fresh content; -1 uses cache only; a positive value accepts cache younger than that many hours; omission allows fallback fetching. A fresh request is not a success guarantee.","source_ids":["contents"]},{"label":"Search request price","value":"At the checked rate, instant Search is $4 per 1,000 requests and fast/auto are $7 per 1,000 for up to 10 results. Each result beyond 10 is separately priced at $1 per 1,000 results; AI page summaries add a separate page charge.","source_ids":["pricing"]},{"label":"Contents content-type price","value":"At the checked rate, /contents is $1 per 1,000 returned pages per content type. One page requested as text and highlights counts as two content types; AI page summaries are separately listed at $1 per 1,000 pages. costDollars is an estimate, not an invoice.","source_ids":["pricing","contents"]},{"label":"Account request path","value":"The documented key path uses Authorization: Bearer EXA_API_KEY or x-api-key for https://api.exa.ai. Account credit or key-budget exhaustion can return 402; rate-limit exhaustion can return 429. Confirm current account terms before production use.","source_ids":["search","contents","billing"]}],"decision_rows":[{"when":"Source URL unknown","request":"POST /search with a query, type: instant and numResults: 5. Request contents.text in the same call if short page text helps evaluate results.","check":"Inspect each result URL and returned text; select a relevant source before using its contents. A result is a discovery lead, not a guaranteed fresh fetch.","billing":"At the checked rate, instant Search is $4 per 1,000 requests for up to 10 results; fast/auto are $7 per 1,000.","source_ids":["search","pricing"]},{"when":"URL or document ID known","request":"POST /contents with either urls or ids and only the content types needed. Set maxAgeHours: 0 when requesting a fresh crawl.","check":"Match statuses[].id and status to each requested item, inspect error and source, then accept text only for successful results.","billing":"At the checked rate, Contents is $1 per 1,000 returned pages per content type; text plus highlights counts as two types.","source_ids":["contents","pricing"]}],"setup":["If you need to discover a source, use Search; if you already have a URL or Search document ID, use Contents directly. Request text in Search only if it helps choose a result.","Send application/json POST requests to https://api.exa.ai/search or https://api.exa.ai/contents with a private Authorization: Bearer EXA_API_KEY header (or the documented x-api-key alternative). The examples below are JSON bodies, not live calls.","Use the five-result instant Search example for discovery. For a known-URL batch, pass urls rather than ids and request only text with a size limit; maxAgeHours: 0 asks Exa to fetch fresh content.","For a Contents batch, reconcile each input against statuses[].id/status before using results. Check source and error details; estimate cost by returned pages and requested content types, and inspect current billing terms."],"limitations":["Exa Search discovers web sources; this record does not promise positional Google SERP snapshots or classify the service as a dedicated SERP API.","The Contents text is described as markdown-style text. The reference does not document a standalone Markdown output contract, so this record is not in the Markdown API collection.","Contents requires either urls or ids in a request. maxAgeHours: 0 requests fresh content but does not guarantee that a target can be fetched or that returned text is complete or accurate.","The listed rates are published account prices, not a measured bill. costDollars is an estimated response field; billing is computed from usage counters. Summary and extra-result options can change total cost.","The examples were parsed locally against documented fields. No Exa account request, target fetch, performance comparison or payment was tested."],"request_examples":[{"label":"Discover sources and short text — POST /search JSON body","code":"{\n  \"query\": \"official documentation for a library API\",\n  \"type\": \"instant\",\n  \"numResults\": 5,\n  \"contents\": {\n    \"text\": {\n      \"maxCharacters\": 1200\n    }\n  }\n}","source_ids":["search","pricing"]},{"label":"Read a known-URL batch freshly — POST /contents JSON body","code":"{\n  \"urls\": [\n    \"https://example.com/docs\",\n    \"https://example.com/unavailable\"\n  ],\n  \"text\": {\n    \"maxCharacters\": 1200\n  },\n  \"maxAgeHours\": 0\n}","source_ids":["contents","pricing"]}],"response_examples":[{"label":"Illustrative status shape for that two-URL batch (placeholders, not a live response)","code":"{\n  \"results\": [\n    {\n      \"title\": \"Example docs\",\n      \"url\": \"https://example.com/docs\",\n      \"id\": \"example-doc-id\",\n      \"text\": \"Example extracted text.\"\n    }\n  ],\n  \"statuses\": [\n    {\n      \"id\": \"https://example.com/docs\",\n      \"status\": \"success\",\n      \"source\": \"crawled\"\n    },\n    {\n      \"id\": \"https://example.com/unavailable\",\n      \"status\": \"error\",\n      \"error\": {\n        \"tag\": \"<provider error tag>\",\n        \"httpStatusCode\": 404\n      }\n    }\n  ]\n}","interpretation":"Map every submitted URL or ID to statuses[].id. Use text from the matching successful result; report or retry error items separately. The example uses placeholder values from the documented response schema and does not report an observed Exa fetch.","source_ids":["contents"]}],"sources":[{"id":"search","label":"Exa Search endpoint and optional contents","url":"https://exa.ai/docs/reference/search","checked_at":"2026-09-29"},{"id":"contents","label":"Exa Contents endpoint, freshness and per-item statuses","url":"https://exa.ai/docs/reference/get-contents","checked_at":"2026-09-29"},{"id":"pricing","label":"Exa Search and Contents pricing units","url":"https://exa.ai/docs/admin/pricing","checked_at":"2026-09-29"},{"id":"billing","label":"Exa account billing and rate-limit errors","url":"https://exa.ai/docs/admin/billing","checked_at":"2026-09-29"}],"checked_at":"2026-09-29","review_due":"2026-10-29","evidence":"documented","url":"https://workingproxysites.info/tools/exa-api","provider_url":null,"review_overdue":false}