# Exa

Exa focuses on data extraction and search, helping teams gather, analyze, and visualize information from websites, APIs, or internal databases

- **Category:** ai web scraping
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 18
- **Triggers:** 0
- **Slug:** `EXA`
- **Version:** 20260316_00

## Tools

### Generate an answer

**Slug:** `EXA_ANSWER`

Generates a direct, citation-backed answer to a clear natural language question or topic using Exa's search, adept at both specific answers and detailed summaries for open-ended queries. Response contains an `answer` field (summary) and a `citations` field (supporting URLs). Citations may include low-credibility sources; verify authoritative references for factual use.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | boolean | No | Set to `true` to include the full text content of the cited source documents in the `citations` part of the response. Defaults to `false`. |
| `model` | string ("exa" | "exa-pro") | No | Specifies the search model to use. 'exa' uses a single, direct query. 'exa-pro' uses two expanded queries for potentially more comprehensive results. Allowed values are 'exa' or 'exa-pro'. Defaults to 'exa'. |
| `query` | string | Yes | The natural language question or search query for which an answer is sought. The query should be specific enough to guide the search effectively. Include concrete entities, dates, locations, or jurisdictions to avoid ambiguous results. For time-sensitive data, include explicit time framing (e.g., 'as of 2024') since results may reflect stale information. |
| `stream` | boolean | No | Set to `true` to receive the response as a stream of server-sent events (SSE). This is useful for displaying results incrementally. Defaults to `false`. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Import

**Slug:** `EXA_CREATE_IMPORT`

Tool to create a new import to upload data into a Webset. Use when you need to initialize an import before uploading the data file.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `csv` | object | No | CSV-specific settings for the import. |
| `size` | integer | No | Size of the import in bytes. |
| `count` | integer | No | Number of items in the import. |
| `title` | string | No | Title of the import. |
| `entity` | object | Yes | Entity information for the import. |
| `format` | string | Yes | Format of the import file (e.g., 'csv'). |
| `metadata` | object | No | Additional metadata for the import. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create a Monitor

**Slug:** `EXA_CREATE_MONITOR`

Tool to create a new Monitor. Use when you need to schedule automated updates for a Webset without manual runs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cadence` | object | Yes | How often the monitor will run. |
| `behavior` | object | Yes | Behavior to perform when monitor runs. |
| `metadata` | object | No | Key-value pairs to associate with the Monitor. |
| `websetId` | string | Yes | The ID of the Webset to attach this Monitor to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Research Task

**Slug:** `EXA_CREATE_RESEARCH`

Creates an asynchronous research task that explores the web, gathers sources, synthesizes findings, and returns results with citations. The API responds immediately with a researchId for polling completion status. Use this when you need to generate: 1. Structured JSON matching an outputSchema you provide 2. A detailed markdown report when no schema is provided After creation, poll the research task status using the researchId to retrieve the final results when completed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `model` | string ("exa-research" | "exa-research-pro") | No | Research models available for Exa research tasks. |
| `instructions` | string | Yes | Instructions for what research should be conducted. This is the natural language prompt describing the research question or topic to explore. |
| `outputSchema` | object | No | Optional JSON schema to structure the research output. If provided, the API will return structured JSON matching this schema. If omitted, the API returns a detailed markdown report. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Webset

**Slug:** `EXA_CREATE_WEBSET`

Tool to create a new Webset with search, import, and enrichment setup. Use when you need to configure and seed a Webset in one call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `import` | array | No | Import data from existing Websets or Imports. |
| `search` | object | Yes | Initial search configuration for the Webset. |
| `metadata` | object | No | Arbitrary key-value pairs to associate with this Webset. |
| `externalId` | string | No | External identifier to reference the Webset in your system. |
| `enrichments` | array | No | Enrichments to apply to Webset items. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete import

**Slug:** `EXA_DELETE_IMPORT`

Tool to delete an existing import. Use when you need to permanently remove an import by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the import to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete webset

**Slug:** `EXA_DELETE_WEBSET`

Tool to delete a Webset. Use after confirming the Webset ID to permanently remove the Webset and all its items.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The id or externalId of the Webset to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Find similar

**Slug:** `EXA_FIND_SIMILAR`

Finds web pages semantically similar to a given URL using embeddings-based search, optionally retrieving full text, highlights, or summaries for results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | The URL for which to find semantically similar web pages. This must be a valid and accessible web address. Must be fully qualified (include scheme and domain); do not pass partial paths, redirect stubs, or snippet text. Specific, content-rich URLs yield more diverse results than generic landing pages. |
| `text` | boolean | No | Set to true to request the full text content of each similar page. Defaults to false. Combining text=true with large num_results produces very large payloads; prefer highlights or summary when processing size is constrained. |
| `summary` | boolean | No | Set to true to request a generated summary for each similar page. Defaults to false. |
| `highlights` | boolean | No | Set to true to request relevant text snippets (highlights) from each similar page. Defaults to false. |
| `num_results` | integer | No | The desired number of similar web pages to return. Must be an integer between 1 and 100, inclusive. Defaults to 10. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get API Key

**Slug:** `EXA_GET_API_KEY`

Tool to retrieve details of a specific API key by its ID. Use when you need to fetch information about an API key in the team management context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `apiKeyId` | string | Yes | The unique identifier of the API key to retrieve. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get contents from URLs or document IDs

**Slug:** `EXA_GET_CONTENTS_ACTION`

Retrieves configurable text and highlights from a list of Exa document IDs or publicly accessible URLs. Calls may partially succeed — always inspect the per-item `statuses` array for errors like CRAWL_NOT_FOUND, CRAWL_LIVECRAWL_TIMEOUT, CRAWL_UNKNOWN_ERROR, or SOURCE_NOT_AVAILABLE. Retrieved text is nested under `results[i].text`, not a top-level field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | Yes | A list of document IDs (strings obtained from Exa search results) or fully qualified URLs (e.g., 'https://example.com/article') for which to retrieve content. At least one ID or URL must be provided. |
| `text` | string | No | Controls text extraction. Accepts a boolean or a `TextOptions` object. If `True` (the default), extracts full-page text using default settings. If `False`, no text is extracted. Provide a `TextOptions` object to customize text extraction (e.g., `max_characters`, `include_html_tags`). |
| `highlights` | string | No | Controls highlight extraction. Accepts a boolean or `HighlightOptions`. If `True`, extracts AI highlights (default settings); if `False`, no highlights. Use `HighlightOptions` for custom settings (e.g., `num_sentences`, `query`). Default is `None` (no highlights extracted). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Event

**Slug:** `EXA_GET_EVENT`

Tool to get details of a specific event by its ID. Use when you have an event ID and need its full details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the event to retrieve. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Research Task

**Slug:** `EXA_GET_RESEARCH`

Tool to retrieve the status and results of a previously created research task. Use the unique researchId returned from POST /research/v1 to poll until the task is finished.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `events` | boolean | No | Set to 'true' to include the detailed event log of all operations performed. Defaults to false. |
| `stream` | boolean | No | Set to 'true' to receive real-time updates via Server-Sent Events (SSE). Defaults to false. |
| `researchId` | string | Yes | The unique identifier of the research task to retrieve. This ID is returned when creating a research task via POST /research/v1. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List events

**Slug:** `EXA_LIST_EVENTS`

Tool to list all events that have occurred in the system. Use when you need to paginate through the event history.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | The number of results to return (1–200, default 25). |
| `types` | array | No | Filter events by one or more event types. |
| `cursor` | string | No | The cursor to paginate through the results. |
| `createdAfter` | string | No | Filter events created at or after this UTC timestamp (inclusive). Must be a valid ISO 8601 datetime string. |
| `createdBefore` | string | No | Filter events created at or before this UTC timestamp (inclusive). Must be a valid ISO 8601 datetime string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List imports

**Slug:** `EXA_LIST_IMPORTS`

Tool to list all imports for the Webset. Use when you need to paginate through and monitor import jobs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | The number of results to return (1–200, default 25). |
| `cursor` | string | No | The cursor to paginate through the results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List research tasks

**Slug:** `EXA_LIST_RESEARCH`

Tool to retrieve a paginated list of your research tasks. Use when you need to view or monitor research jobs with cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | The number of results to return (1–50, default 10). |
| `cursor` | string | No | The cursor to paginate through the results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List webhooks

**Slug:** `EXA_LIST_WEBHOOKS`

Tool to list all webhooks for Websets. Use when you need to view existing webhooks and paginate through results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of results to return per page. |
| `cursor` | string | No | Pagination cursor returned by a previous call. Must be at least 1 character if provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search

**Slug:** `EXA_SEARCH`

Performs a web search using the Exa engine, useful for queries requiring advanced filtering, specific content categories, or AI-optimized prompting. Returns snippets and metadata only — use EXA_GET_CONTENTS_ACTION on returned URLs to retrieve full page content. No pagination; issue multiple calls with varied queries or date windows for broader coverage. IMPORTANT CONSTRAINTS: - includeDomains and excludeDomains are MUTUALLY EXCLUSIVE: You can use ONE or the OTHER, but NEVER both in the same request. Providing both will cause a validation error. TYPE-SPECIFIC PARAMETER COMPATIBILITY: - type='keyword': Fast exact matching. Does NOT support useAutoprompt, includeDomains, or excludeDomains. - type='neural': AI semantic search. Supports all parameters including useAutoprompt and domain filters. - type='auto': Smart routing. Supports all parameters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string ("keyword" | "neural" | "auto") | No | Types of search available in Exa. |
| `query` | string | Yes | The search query string. When type='keyword', do not use 'site:' operator or link markup (e.g., '<url>') as these are invalid for keyword queries. |
| `category` | string ("company" | "research paper" | "news" | "pdf" | "github" | "tweet" | "personal site" | "linkedin profile" | "financial report" | "people" | "video") | No | Data categories for focused search in Exa. |
| `numResults` | integer | No | Desired number of search results. Must be between 1 and 100 (inclusive). Defaults to 10. No pagination is available; larger values increase latency without guaranteeing better coverage. |
| `excludeText` | array | No | A list containing exactly one phrase (up to 5 words) that must NOT be present in the webpage text. Only one phrase is allowed per request. Example: ['outdated information'] (correct) vs ['outdated', 'wrong'] (incorrect - API will reject multiple phrases). |
| `includeText` | array | No | A list containing exactly one phrase (up to 5 words) that must be present in the webpage text. Only one phrase is allowed per request. Example: ['machine learning applications'] (correct) vs ['machine', 'learning'] (incorrect - API will reject multiple phrases). |
| `endCrawlDate` | string | No | Filters results to include only those crawled by Exa before this ISO 8601 date. |
| `useAutoprompt` | boolean | No | If true, Exa converts the query to an Exa-optimized prompt for potentially better results. Not supported when type='keyword'. |
| `excludeDomains` | array | No | MUTUALLY EXCLUSIVE WITH includeDomains - provide ONLY ONE of includeDomains or excludeDomains, never both. A list of domain names to specifically exclude from the search results. Must be valid domain names containing at least one dot (e.g., 'example.com', 'www.example.com' are valid). Supports subdomain wildcards (e.g., '*.amazon.com') and path filtering (e.g., 'example.com/path'). Must be without protocol (e.g., 'example.com' not 'https://example.com') and without angle brackets. ONLY supported when type='neural' or type='auto' (NOT supported for type='keyword' or category='company'). |
| `includeDomains` | array | No | MUTUALLY EXCLUSIVE WITH excludeDomains - provide ONLY ONE of includeDomains or excludeDomains, never both. A list of domain names to specifically include in the search results. Must be valid domain names containing at least one dot (e.g., 'example.com', 'www.example.com' are valid). Supports subdomain wildcards (e.g., '*.substack.com') and path filtering (e.g., 'example.com/blog'). Must be without protocol (e.g., 'example.com' not 'https://example.com') and without angle brackets. ONLY supported when type='neural' or type='auto' (NOT supported for type='keyword' or category='company'). |
| `startCrawlDate` | string | No | Filters results to include only those crawled by Exa after this ISO 8601 date. Filters by when Exa crawled the page, not when it was published — use startPublishedDate/endPublishedDate for publication-date filtering. |
| `endPublishedDate` | string | No | Filters results to include only those published before this ISO 8601 date. NOTE: This filter is NOT supported when category='company' and will be ignored. |
| `startPublishedDate` | string | No | Filters results to include only those published after this ISO 8601 date. NOTE: This filter is NOT supported when category='company' and will be ignored. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update import

**Slug:** `EXA_UPDATE_IMPORT`

Tool to update an import configuration by ID. Use when you need to modify an import's title or metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the import to update. |
| `title` | string | No | New title for the import. Leave null if unchanged. |
| `metadata` | object | No | Key-value pairs to attach to the import. Leave null if unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
