Filings
Filing full-text search
- Coverage
- US, the last 5 years · JP / CN, financial reports for the last 3 years
- Billing
- 100 cr / thousand calls
Searches the body text of a single company's filings; one row per matching passage, in descending score order. Returns the passage text, the section heading and a deep link to the official document; the full document is not returned — to read a filing in full, follow filing_url back to the official source. The market comes from the canonical ticker, and the filing date range is fixed to the retention window.
tickeraccepts a single value only; query multiple companies with separate calls.from/toare a report period month axis (YYYY-MM), not a filing date axis; restrict the filing type withform_type.- No pagination; one call returns at most
limitmatches; billing goes by request count (100 cr / thousand calls), independent of the number of matches or of how many markets are searched. - To point back to the same filing in , use
ticker+accession_number; a matching passage carries no id of its own, so recognizing the same passage across requests is only possible by approximate matching onaccession_number+section+ thesnippettext.
Shared filings conventions
Retention scope: US: all form types from the last 5 years; JP / CN: the last 3 years, financial report types only (JP: 有価証券報告書 annual / 半期報告書 semi-annual / 四半期報告書 quarterly, and their 訂正 amendments; CN: 年度报告 annual / 半年度报告 semi-annual / 季度报告 quarterly, and their 更正 amendments); the window rolls on filing_date. HK / KR / TW return 404. In JP / CN, non-financial-report types (ad hoc announcements, timely disclosures, and so on) are out of scope: neither endpoint returns those rows, and explicitly requesting such a form_type returns 404. An unrecognized form_type (one that matches no native type of that market) returns 400; the endpoints do not silently return an empty array.
The type axis uses only each market's native form_type; there is no cross-market unified type enum. To filter by type across markets, callers combine each market's native codes.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | required | Keywords or natural language (Chinese / English / Japanese); the body text is tokenized and indexed in the original language of the filing (US en / JP ja / CN zh, the same as the language response field). |
| ticker | string | required | A single canonical ticker; cross-company or cross-market search is not supported, so query multiple companies with separate calls. |
| form_type | string | optional | Each market's native type, in the source encoding (US: SEC form names; JP: EDINET numeric codes / TDnet labels; CN: annual_report and the like). Accepts multiple comma-separated values. Default All types within the retention scope. |
| from | string | optional | YYYY-MM. Start of the reporting-period axis: a passage matches when the reporting period it belongs to overlaps [from, to]. This is not a filing-date axis — the filing-date range is always the retention window (US: every type from the last 5 years; JP / CN: financial reports from the last 3 years) and is not exposed as a parameter. |
| to | string | optional | YYYY-MM, the end of the report period axis (with from it forms the interval used for the overlap test). |
| limit | int | optional | Maximum 50 (number of matching passages). Default 10. |
Response fields
| Field | Type | Description |
|---|---|---|
| ticker | string | The canonical ticker of the filing that contains the matching passage; use ticker + accession_number to point back to the same row in |
| market | string | Market code: US / CN / JP |
| form_type | string | Type of the filing the matched passage belongs to, in the market's native encoding (US: SEC form names; JP: EDINET numeric codes / TDnet labels; CN: annual_report and the like) |
| filing_date | date | Filing date of the filing the matched passage belongs to: the date it became public on the official channel |
| title | string | Title of the filing the matched passage belongs to, in its original language; may be null depending on source coverage |
| language | string | The language of the matching text: en / zh / ja (= mapped from market) |
| section | string | The section heading of the matching passage as written (for example Share Repurchase Program); null when the passage has no heading. It is not guaranteed to be a normalized Item number (for example Item 1A. Risk Factors) |
| snippet | string | The body text of the matching passage (tables inside the passage are converted to markdown and carried along); maximum 4000 characters; longer text is truncated by character count. It does not contain the full document |
| score | number | Relevance; no absolute scale; comparable only within the same response |
| accession_number | string | Native document number from the official source: US is the SEC accession (e.g. 0000320193-25-000123), JP the EDINET docID, CN the cninfo announcement id |
| filing_url | string | Deep link to the official filing; opens the source document directly |
No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.
Authentication, conventions, rate limits and error shapes are the same for every endpoint — they live on REST API.