# exa.web.search

Web pages by query, ranked, with titles, URLs and dates

> Perform a search with an Exa prompt-engineered query and retrieve a list of relevant results. Optionally get contents.

Page: https://telipot.com/catalog/tasks/exa.web.search · Markdown: https://telipot.com/catalog/tasks/exa.web.search/md · JSON: https://telipot.com/catalog/tasks/exa.web.search/json

| Field | Value |
| --- | --- |
| provider | [Exa](https://telipot.com/catalog/providers/exa) `exa` |
| capability | [`web.search`](https://telipot.com/catalog/capabilities/web.search) |
| kind | data |
| tier | core |
| price | $0.004–$0.015 / request (Exa docs · 2026-10-05) |
| settles on | The charge Exa reports in costDollars.total |
| price note | Base price per request for up to 10 results. Each result above 10 adds $1 per 1,000 results and each AI page summary adds $1 per 1,000 pages, which no row here can carry, so the charge the response reports in costDollars.total is the one to settle on. |
| identity | Your plan |
| auth | `api_key · in header as x-api-key` |
| scope | any_account |
| principal | organization |
| required_scopes | none |
| retention | standard |
| route | `POST https://api.exa.ai/search` |
| verification | Verified on 2026-10-05. We ran a real request and checked the answer. This is a spot check, not a success rate. |
| status | live |
| docs | https://exa.ai/docs/reference/search |

## Preview the price · nothing runs

```bash
telipot run exa.web.search \
  --input-json '{"query":"openrouter","numResults":1,"type":"instant"}' \
  --quote
```

## Run it

```bash
telipot run exa.web.search \
  --input-json '{"query":"openrouter","numResults":1,"type":"instant"}'
```

```bash
curl https://api.telipot.com/v1/tasks/exa.web.search/run \
  -H "Authorization: Bearer $TELIPOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"openrouter","numResults":1,"type":"instant"}'
```

## Input

| Field | In | Type | Required | Constraints | Note |
| --- | --- | --- | --- | --- | --- |
| `query` | body | string | yes | at least 1 | The query string for the search. Write it in natural language, naming the subject and, when it matters, the kind of source and the time period. |
| `numResults` | body | integer | no | 1 to 100; default 10 | Number of results to return. Limits vary by search type. The maximum public limit is 100 results; contact sales (hello@exa.ai) for more. The base price covers up to 10 results and each result above 10 is billed at $1 per 1,000 results. |
| `type` | body | string | no | one of "instant", "fast", "auto", "deep-lite", "deep", "deep-reasoning"; default "auto" | The search mode. auto is balanced and recommended for most applications; fast has reduced latency; instant has the minimum response time; deep-lite is lightweight research with synthesized results at a consistent 4 seconds; deep is multi-step research with synthesis; deep-reasoning adds stronger reasoning. instant is billed at $4 per 1,000 requests, fast and auto at $7, deep-lite and deep at $12, deep-reasoning at $15. |
| `category` | body | string | no |  | A data category to focus on. Known categories are company, publication, news, personal site, financial report and people; other strings are accepted as category hints. The people category returns profiles of named individuals and company returns company pages, and this one task serves both. The company and people categories do not support startPublishedDate, endPublishedDate or excludeDomains, and using them returns a 400. |
| `includeDomains` | body | array | no | at most 1200 | Domains or domain paths to search, each a hostname such as example.com, a hostname with a path prefix such as example.com/docs, or a wildcard subdomain such as *.example.com. Use this instead of a site operator in the query. |
| `excludeDomains` | body | array | no | at most 1200 | Domains or domain paths to leave out, in the same forms as includeDomains. |
| `startPublishedDate` | body | string | no |  | Only links with a published date after this are returned. ISO 8601 date-time. |
| `endPublishedDate` | body | string | no |  | Only links with a published date before this are returned. ISO 8601 date-time. |
| `userLocation` | body | string | no |  | The two-letter ISO country code of the user. |
| `moderation` | body | boolean | no | default false | Enable content moderation to filter unsafe content from search results. |
| `contents` | body | object | no |  | What to return for each result, nested under this field, such as { highlights: true } for query-relevant excerpts or { text: { maxCharacters: 2000 } } for page text, with maxAgeHours, subpages and extras as further options. Without it each result carries metadata such as title, URL and publication date. AI page summaries are billed at $1 per 1,000 pages. |
| `additionalQueries` | body | array | no | 1 to 10 | Additional query variations used alongside the main query for broader results. Only works with a deep search type. |
| `outputSchema` | body | object | no |  | JSON schema for synthesized output. Supported root types are text and object. When given, the response includes an output object whose content matches the schema. Works with every search type and adds about 2 seconds of synthesis latency. Object schemas are limited to 10 properties in total and 2 levels of nesting, and every array must define items. |
| `objective` | body | string | no | at most 4096 | Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them. |
| `systemPrompt` | body | string | no |  | Additional instructions that guide generated output, such as source preferences, novelty constraints or duplication constraints. |

## Input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "The query string for the search. Write it in natural language, naming the subject and, when it matters, the kind of source and the time period.",
      "examples": [
        "recent techniques for improving retrieval in RAG systems"
      ],
      "minLength": 1
    },
    "numResults": {
      "type": "integer",
      "description": "Number of results to return. Limits vary by search type. The maximum public limit is 100 results; contact sales (hello@exa.ai) for more. The base price covers up to 10 results and each result above 10 is billed at $1 per 1,000 results.",
      "default": 10,
      "minimum": 1,
      "maximum": 100
    },
    "type": {
      "type": "string",
      "description": "The search mode. auto is balanced and recommended for most applications; fast has reduced latency; instant has the minimum response time; deep-lite is lightweight research with synthesized results at a consistent 4 seconds; deep is multi-step research with synthesis; deep-reasoning adds stronger reasoning. instant is billed at $4 per 1,000 requests, fast and auto at $7, deep-lite and deep at $12, deep-reasoning at $15.",
      "enum": [
        "instant",
        "fast",
        "auto",
        "deep-lite",
        "deep",
        "deep-reasoning"
      ],
      "default": "auto"
    },
    "category": {
      "type": "string",
      "description": "A data category to focus on. Known categories are company, publication, news, personal site, financial report and people; other strings are accepted as category hints. The people category returns profiles of named individuals and company returns company pages, and this one task serves both. The company and people categories do not support startPublishedDate, endPublishedDate or excludeDomains, and using them returns a 400."
    },
    "includeDomains": {
      "type": "array",
      "description": "Domains or domain paths to search, each a hostname such as example.com, a hostname with a path prefix such as example.com/docs, or a wildcard subdomain such as *.example.com. Use this instead of a site operator in the query.",
      "maxItems": 1200
    },
    "excludeDomains": {
      "type": "array",
      "description": "Domains or domain paths to leave out, in the same forms as includeDomains.",
      "maxItems": 1200
    },
    "startPublishedDate": {
      "type": "string",
      "description": "Only links with a published date after this are returned. ISO 8601 date-time.",
      "examples": [
        "2026-01-15T00:00:00Z"
      ]
    },
    "endPublishedDate": {
      "type": "string",
      "description": "Only links with a published date before this are returned. ISO 8601 date-time.",
      "examples": [
        "2026-09-30T00:00:00Z"
      ]
    },
    "userLocation": {
      "type": "string",
      "description": "The two-letter ISO country code of the user.",
      "examples": [
        "US"
      ]
    },
    "moderation": {
      "type": "boolean",
      "description": "Enable content moderation to filter unsafe content from search results.",
      "default": false
    },
    "contents": {
      "type": "object",
      "description": "What to return for each result, nested under this field, such as { highlights: true } for query-relevant excerpts or { text: { maxCharacters: 2000 } } for page text, with maxAgeHours, subpages and extras as further options. Without it each result carries metadata such as title, URL and publication date. AI page summaries are billed at $1 per 1,000 pages.",
      "examples": [
        {
          "highlights": true
        }
      ]
    },
    "additionalQueries": {
      "type": "array",
      "description": "Additional query variations used alongside the main query for broader results. Only works with a deep search type.",
      "minItems": 1,
      "maxItems": 10
    },
    "outputSchema": {
      "type": "object",
      "description": "JSON schema for synthesized output. Supported root types are text and object. When given, the response includes an output object whose content matches the schema. Works with every search type and adds about 2 seconds of synthesis latency. Object schemas are limited to 10 properties in total and 2 levels of nesting, and every array must define items."
    },
    "objective": {
      "type": "string",
      "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
      "maxLength": 4096
    },
    "systemPrompt": {
      "type": "string",
      "description": "Additional instructions that guide generated output, such as source preferences, novelty constraints or duplication constraints."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
```

## Output schema

```json
{
  "type": "object",
  "required": [
    "results"
  ],
  "properties": {
    "requestId": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "url"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "description": "Temporary document id, accepted by the contents route"
          },
          "publishedDate": {
            "type": "string",
            "description": "Estimated creation date parsed from the page"
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "image": {
            "type": "string"
          },
          "favicon": {
            "type": "string"
          },
          "text": {
            "type": "string",
            "description": "Full page text, present only when requested"
          },
          "highlights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "summary": {
            "type": "string"
          },
          "subpages": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "entities": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "extras": {
            "type": "object"
          }
        }
      }
    },
    "searchTime": {
      "type": "number",
      "description": "Server-side processing time in milliseconds"
    },
    "costDollars": {
      "type": "object",
      "description": "Estimated dollar cost of the completed request; billing is computed from usage counters, not from this object.",
      "properties": {
        "total": {
          "type": "number"
        },
        "search": {
          "type": "object",
          "properties": {
            "neural": {
              "type": "number"
            },
            "keyword": {
              "type": "number"
            }
          }
        },
        "summary": {
          "type": "number"
        },
        "contents": {
          "type": "object",
          "properties": {
            "text": {
              "type": "number"
            },
            "highlights": {
              "type": "number"
            },
            "summary": {
              "type": "number"
            }
          }
        }
      }
    },
    "output": {
      "type": "object",
      "description": "Synthesized output, returned when outputSchema is provided",
      "required": [
        "content",
        "grounding"
      ],
      "properties": {
        "content": {
          "type": [
            "string",
            "object"
          ]
        },
        "grounding": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string"
              },
              "citations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    }
                  }
                }
              },
              "confidence": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}
```

## Example response

From `examples/exa.web.search.json`.

```json
{
  "requestId": "3601539a56015e854455a44813897a03",
  "results": [
    {
      "id": "https://openrouter.ai/",
      "title": "OpenRouter",
      "url": "https://openrouter.ai/",
      "image": "https://openrouter.ai/dynamic-og?pathname=default&title=OpenRouter&description=The+unified+interface+for+every+model.+Find+the+best+models+%26+prices+for+your+prompts&v=2",
      "entities": [
        {}
      ]
    }
  ],
  "searchTime": 7.4,
  "costDollars": {
    "total": 0.004,
    "search": {
      "neural": 0.004
    }
  }
}
```

## Other tools for this job

- [`firecrawl.web.search`](https://telipot.com/catalog/tasks/firecrawl.web.search) · $0.00076 / result
