Institutional holdings reported to the SEC via form 13F, harmonised to group dozens of different security identifiers into a single identifier for each security - the ticker. Current count of 31,000 tickers and 13,000 institutional investors.
Table details
View table
Explore table metadata
The table is queried via the following endpoint:
The queries are authenticated and filtered using query parameters. A query parameter specifies a particular option or filter for the data to be returned. Examples of query parameter include the data format to be returned (format), the table columns to return (fields) or a filter to be applied (tablename). These are appended to the endpoint above, following a ?. The most important of these is your API key (api_key) which is used to authenticate you. Without a valid API key, results will not be returned.
The holdings table supports the following query parameters:
| Parameter | Description | Default | Examples |
|---|---|---|---|
| format | The format of the results to be returned. | csv | format=json |
| years | Triggers a bulk download of the full table as a compressed CSV. Values: 5, 10, or full. The API redirects to a time-limited download URL. | years=5 | |
| from | Specifies the filing date from which to return data. | 1 year ago | from=2023-08-01 |
| to | Specifies the filing date to return data until. | prior day | to=2023-08-31 |
| fields | The fields (table columns) to return. | all | fields=date,ticker,units,securitytype |
| investorname | Returns results for the specified institutional investor. | investorname=BERKSHIRE HATHAWAY INC | |
| securitytype | Returns results for the specified security type. | securitytype=SHR | |
| ticker | Returns results for the specified ticker. Multiple tickers should be separated with a comma(,). | all | ticker=TSLA |
| limit | The number of records to return. | 10000 | limit=10000 |
| skip | The number of results to skip before returning data. Alias: offset. | 0 | skip=10000 |
| sort | The field used to sort the data and the sort method (asc/desc). | date.desc | sort=value.asc |
Retrieve the PostgreSQL schema:
Retrieve the SQLite schema:
Retrieve the MySQL schema:
Return all institutional holdings data for a specified ticker:
Return all institutional holdings data for a specified date range:
Return institutional holdings data for a specified insitutional investor:
Return specific columns from institutional holdings data for a specified ticker, insitutional investor, date range and where the security held is a share:
In Google Sheets, retrieve institutional holdings for a single ticker (AAPL) with IMPORTDATA. You can change the query parameters (ticker, dates, fields, filters, and so on) in the same way as the Examples in the preceding section. Paste this formula into a cell (A1):
=IMPORTDATA("https://api.sharadar.com/v1.0/data/holdings?api_key=test-api-key&format=csv&ticker=AAPL")Download the [holdings] table as a compressed CSV by setting years to 5, 10, or full. The API responds with a redirect to a time-limited download URL:
Example using curl (follow redirects and write the file):
curl -L -o holdings.csv.zip "https://api.sharadar.com/v1.0/data/holdings?api_key=test-api-key&years=full"Check the bulk file status (name, size, last modified) without downloading:
Example response:
{
"table": "holdings",
"name": "holdings.csv.zip",
"size": 694547316,
"sizeLabel": "662.4 MB",
"modified": "2026-07-16T04:24:50.184000+00:00"
}