> ## Documentation Index
> Fetch the complete documentation index at: https://exa.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Introducing Exa Monitors

> Schedule recurring Exa searches and get results delivered to your webhook, with automatic deduplication and structured output.

***

**Date: March 30, 2026**

Monitors run Exa searches on a schedule and send results to a webhook. Each run deduplicates against previous runs, so you only get new content.

<Info>
  Read the full [Monitors API guide](/reference/monitors-api-guide) for usage and examples.
</Info>

## What monitors do

* **Track topics over time**: Competitor announcements, funding rounds, regulatory changes, research papers. Anything you'd otherwise search for by hand.
* **Return structured results**: Use `outputSchema` to get results as plain text or typed JSON objects.
* **Run on an interval**: Set `"1d"`, `"6h"`, etc. Minimum is 1 hour. Runs are anchored to when the monitor was created.
* **Trigger manually**: You can also fire a run on demand without waiting for the next interval.

## How it works

Create a monitor with a query, an interval, and a webhook URL:

<CodeGroup>
  ```python Python theme={null}
  monitor = exa.monitors.create(params={
      "name": "AI Funding Tracker",
      "search": {
          "query": "AI startups that raised Series A funding",
          "numResults": 10
      },
      "trigger": {
          "type": "interval",
          "period": "1d"
      },
      "webhook": {
          "url": "https://example.com/webhook"
      }
  })
  ```

  ```javascript JavaScript theme={null}
  const monitor = await exa.monitors.create({
      name: "AI Funding Tracker",
      search: {
          query: "AI startups that raised Series A funding",
          numResults: 10,
      },
      trigger: {
          type: "interval",
          period: "1d",
      },
      webhook: {
          url: "https://example.com/webhook",
      },
  });
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.exa.ai/monitors \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "AI Funding Tracker",
      "search": {
          "query": "AI startups that raised Series A funding",
          "numResults": 10
      },
      "trigger": {
          "type": "interval",
          "period": "1d"
      },
      "webhook": {
          "url": "https://example.com/webhook"
      }
    }'
  ```
</CodeGroup>

## Structured output

Pass an `outputSchema` to define the shape of each run's results:

```json theme={null}
{
  "outputSchema": {
    "type": "object",
    "properties": {
      "company": { "type": "string" },
      "fundingRound": { "type": "string" },
      "amount": { "type": "string" }
    }
  }
}
```

Or use `"type": "text"` for a plain text summary instead.

## Need help?

Reach out to [hello@exa.ai](mailto:hello@exa.ai).
