Skip to main content
POST
Search financial documents
Use Search when the answer is written in a document rather than stored in a field: why a CFO resigned, how a company describes a risk, what changed in guidance this quarter. One POST /search replaces reading the filing yourself. To make a first request, start with the Quickstart. This page covers how to write queries, how to scope them, and what comes back.
Alpha. Access is by invitation; callers without access receive a 404. The request and response shapes may change during the alpha. Contact us to request access.

Writing queries

query is the only required field. An effective query is a topic of two to six words, such as committee retainers or clawback policy, with the company’s ticker in filters.identifiers. The company may also be named in the query text, as in committee retainers for CCI. Include a year to restrict the search to that year’s documents. A full question or a description of the overall task performs less well than the short form. A query that names a company Search cannot identify is declined with a 422 rather than answered from other companies’ documents. Sending filters.identifiers resolves it.

Filter results

A filter is a constraint on which documents are searched. Nothing outside a filter is returned.

Restrict to companies

filters.identifiers names the companies to search, by scheme: ticker or cik. A CIK may be sent without leading zeros. An identifier no listed company has is a 400 that names it.

Restrict by date

filters.date is a window on the day a document became public: after, before, or both, as ISO days. Both bounds are inclusive. When the query names no year and the request sends no window, only the newest document of each company in scope is searched. A year in the query, or a date window, keeps every document inside it in scope. Use a window when the question is about a period: “every proxy since 2024” is "after": "2024-01-01".

Output shape

One result per document, best first. Ten documents come back unless limit says otherwise; the most you can ask for is 100. A key that does not apply to a result is absent, never null. Example response for clawback policy for incentive compensation with filters.identifiers.ticker of ["AAPL"] The excerpts below are shortened.

Errors

Authorizations

X-API-KEY
string
header
required

API key for authentication.

Body

application/json
query
string
required

One question in plain English, 1 to 300 characters.

Required string length: 1 - 300
filters
object

Constraints on which documents are searched. Nothing outside a filter is returned.

limit
integer
default:10

How many results to return. A result is one document.

Required range: 1 <= x <= 100

Response

The passages that answer, one result per document

search_id
string<uuid>
required

The id of this search. Keep it when you report a result.

results
object[]
required

One result per document, best first. At most limit.

warnings
object[]

What a partial answer is missing. Absent when nothing is.