Skip to main content
POST
Search financial documents
Search answers a question about a public company from what the company has reported, and shows where the answer came from: how it pays its directors, what its clawback policy says, when a special committee was formed. You send a precise query and the companies you mean. You get back the parts of the record that answer it, word for word, each with a link that opens the source at that place.
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.

Make your first request

Search uses the same API key as every other endpoint.
Each result is one document. Each excerpt is a passage from that document, reproduced verbatim, with a link that opens the document at the passage.

Write the query

query is the only required field, at most 300 characters. The more precise the query, the better the answer. Five rules cover most requests. A year in the query text widens the search to every year on record. To search one year, send filters.date instead.

Name the companies

filters.identifiers lists the companies to search, by ticker or cik. A CIK may be sent without leading zeros. A list runs the same query over each company in it. An identifier that matches no listed company is a 400 that names it. Send it whenever you know the company. Without it, Search reads the newest document of every company. A query that names a company Search cannot identify is a 422 with the fix in the body, never an answer drawn from other companies’ documents.

Set the window

filters.date bounds the day a document became public: after, before, or both, as ISO days. Both bounds are inclusive. When you send no window and the query names no year, only the newest document of each company is searched. A window keeps every document inside it in scope. “Every document since 2024” is {"after": "2024-01-01"}; one year is both bounds.

Read the response

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 are shortened.

Errors

Next steps

Best Practices

Write precise queries, improve one change at a time, and use the request shape for each kind of task.

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.