Ownership · US only
Institutional holdings
- Coverage
- US
- Billing
- 20 cr / thousand calls
One row = one holding record in a 13F-HR filing, parsed from the as-filed SEC document; the same institution may have more than one row for the same security in the same report period (the filed form splits rows by investment discretion / other managers, and an amended filing 13F-HR/A produces separate rows, distinguished by accession_number). Aggregate positions must be summed by the caller. The endpoint supports both query directions: query by ticker to list the holders, query by investor_cik to list all holdings of that institution, and pass both to get one institution's position in one security.
- No
from/todate axis: 13F is filed by quarter-end report period; usereport_periodto select a single quarter. When omitted, all quarters are returned, paginated inreport_period desc, investor_name asc, accession_number descorder. - 13F is filed by CUSIP; a query by
tickerincludes only the filed rows that map to that ticker, while a query byinvestor_cikalso returns the unmapped rows (tickeris null on those rows). The CUSIP→ticker mapping has not been backfilled yet, so a query bytickercurrently returns an empty array; useinvestor_cikto retrieve holdings. - 13D / 13G major shareholder ownership events are not part of this endpoint;
/events-ownership.
Shared ownership conventions
Both endpoints in this group cover only US-listed companies, with the data parsed from the as-filed SEC documents; a non-US ticker returns 404.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | optional | *At least one of this and investor_cik; a single ticker. One of the alternatives is required. |
| investor_cik | string | optional | Institution CIK (the unique key of a 13F filer); returns 404 when there is no match. When only the institution name is known, use SEC EDGAR company search to obtain the CIK. One of the alternatives is required. |
| report_period | date | optional | Quarter-end report period; returns only the records for that period. When omitted, returns all quarters for that security / institution. Default All quarters. |
| limit | int | optional | Maximum 500. Default 50. |
| page | int | optional | Starts at 1. Default 1. |
Sorted report_period desc, investor_name asc, accession_number desc. Paged with limit and page (pages start at 1); fewer rows than limit means the last page.
Response fields
| Field | Type | Description |
|---|---|---|
| ticker | string | The security's canonical ticker; null on rows whose CUSIP could not be mapped to a ticker (these rows appear only in the results of a query by investor_cik) |
| investor_name | string | Holder name (as filed) |
| investor_cik | string | Holder CIK (10 digits, zero-padded) |
| report_period | date | Quarter-end report period |
| shares | number | Shares held |
| market_value | number | Reported market value, in base US dollar units (not thousands of dollars) |
| change_in_shares | number | Change in shares held versus the previous report period; null when there is no previous period |
| accession_number | string | SEC accession number (e.g. 0000320193-25-000123) identifying this filing |
| form_type | string | SEC form name, either 13F-HR or 13F-HR/A |
| filing_url | string | Deep link to the filing on SEC EDGAR; opens directly |
| filing_date | date | Filing date: the date the filing became public on EDGAR |
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.