Insider holdings & transactions as reported to the SEC via forms 3, 4 and 5. Normalised officer titles (ie CEO) to easily identify executive by position. Normalised security titles (ie ClA or ClB) to easily segment these. Current count of 16,000 tickers and 200,000 insiders.
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 insiders 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,pb,pe,ps |
| ownername | Returns results for the specified owner. | ownername=COOK TIMOTHY D | |
| securityadcode | Returns results for the specified security type. | securityadcode=N,NA,ND | |
| transactionvalue | Returns results for based on the specified transaction value. | transactionvalue.gte=1000000 | |
| 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=transactionvalue.asc |
Retrieve the PostgreSQL schema:
Retrieve the SQLite schema:
Retrieve the MySQL schema:
Return all insider data for a specified ticker:
Return insider data for a specified owner:
Return insider data for all non-derivative transactions exceeding $100,000 between specified dates for a specified owner and ticker:
In Google Sheets, retrieve insider transactions 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/insiders?api_key=test-api-key&format=csv&ticker=AAPL")Download the [insiders] 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 insiders.csv.zip "https://api.sharadar.com/v1.0/data/insiders?api_key=test-api-key&years=full"Check the bulk file status (name, size, last modified) without downloading:
Example response:
{
"table": "insiders",
"name": "insiders.csv.zip",
"size": 293525266,
"sizeLabel": "279.9 MB",
"modified": "2026-07-16T01:20:20.312000+00:00"
}