# exa.web.page.similar

Web pages similar to a URL, with titles and scores

> Find links similar to the provided URL and optionally retrieve their contents. Deprecated: prefer `/search` with a query describing the source.

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

| Field | Value |
| --- | --- |
| provider | [Exa](https://telipot.com/catalog/providers/exa) `exa` |
| capability | [`web.page.similar`](https://telipot.com/catalog/capabilities/web.page.similar) |
| kind | data |
| tier | core |
| price | Price unknown (Not listed, not free) |
| settles on | The charge Exa reports in costDollars.total |
| price note | The pricing page lists no rate for this route, and the vendor's OpenAPI document marks it deprecated, so no price is recorded; the response reports its charge in costDollars.total. |
| 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/findSimilar` |
| 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/exa-spec.yaml |

## Preview the price · nothing runs

```bash
telipot run exa.web.page.similar \
  --input-json '{"url":"https://example.com","numResults":1}' \
  --quote
```

## Run it

```bash
telipot run exa.web.page.similar \
  --input-json '{"url":"https://example.com","numResults":1}'
```

```bash
curl https://api.telipot.com/v1/tasks/exa.web.page.similar/run \
  -H "Authorization: Bearer $TELIPOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","numResults":1}'
```

## Input

| Field | In | Type | Required | Constraints | Note |
| --- | --- | --- | --- | --- | --- |
| `url` | body | string | yes | at least 3 | The url for which you would like to find similar links. The vendor marks this route deprecated in its OpenAPI document and prefers /search with a query describing the source. |
| `numResults` | body | integer | no | 1 to 100; default 10 | Number of results to return. The maximum public limit is 100 results; contact sales (hello@exa.ai) for more. |
| `excludeSourceDomain` | body | boolean | no |  | If true, results from the same domain as the source url are excluded. |
| `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. |
| `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. |
| `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 company and people categories do not support startPublishedDate, endPublishedDate or excludeDomains, and using them returns a 400. |
| `contents` | body | object | no |  | What to return for each result, nested under this field, such as { highlights: true } or { text: { maxCharacters: 2000 } }. Without it each result carries metadata such as title, URL and publication date. |

## Input schema

```json
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The url for which you would like to find similar links. The vendor marks this route deprecated in its OpenAPI document and prefers /search with a query describing the source.",
      "examples": [
        "https://example.com"
      ],
      "minLength": 3
    },
    "numResults": {
      "type": "integer",
      "description": "Number of results to return. The maximum public limit is 100 results; contact sales (hello@exa.ai) for more.",
      "default": 10,
      "minimum": 1,
      "maximum": 100
    },
    "excludeSourceDomain": {
      "type": "boolean",
      "description": "If true, results from the same domain as the source url are excluded."
    },
    "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.",
      "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"
      ]
    },
    "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 company and people categories do not support startPublishedDate, endPublishedDate or excludeDomains, and using them returns a 400."
    },
    "contents": {
      "type": "object",
      "description": "What to return for each result, nested under this field, such as { highlights: true } or { text: { maxCharacters: 2000 } }. Without it each result carries metadata such as title, URL and publication date.",
      "examples": [
        {
          "highlights": true
        }
      ]
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
```

## Output schema

```json
{
  "type": "object",
  "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"
          },
          "score": {
            "type": "number",
            "description": "Similarity to the source URL; compare scores only within one response"
          }
        }
      }
    },
    "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"
            }
          }
        }
      }
    }
  }
}
```

## Example response

From `examples/exa.web.page.similar.json`.

```json
{
  "requestId": "2b29b669e9b8fc7c24055fcdb003cefb",
  "results": [
    {
      "id": "https://example.re/",
      "title": "Hello World!",
      "url": "https://example.re/",
      "author": null,
      "score": 0.8696224689483643
    }
  ],
  "costDollars": {
    "total": 0.004,
    "search": {
      "neural": 0.004
    }
  },
  "searchTime": 186.05773100000806
}
```
