Datasets API endpoint
Returns a company's insider (Form 3/4/5) transaction history from the SEC companies dataset, most recent transaction first. An unknown CIK or a company with no reported transactions returns an empty series rather than a 404.
/datasets/sec-companies/insider/{cik}Path parameters:
cik: required. SEC CIK, numeric or zero-padded.Query parameters:
from: optional. Inclusive start date (YYYY-MM-DD, UTC) filtering the transaction date.to: optional. Inclusive end date (YYYY-MM-DD, UTC) filtering the transaction date.code: optional. Exact transaction code filter, e.g. P (open-market purchase), S (sale).limit: optional. Maximum transactions returned (most recent first). Default 50, max 200.Response behavior:
200 with count: 0) rather than a 404.owner_name, owner_title, is_director/is_officer/is_ten_percent_owner, security_title, transaction_date, code, acquired_or_disposed, shares, price_per_share, shares_owned_after, and filing_url.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| cik | 20 | 320,193 |
| accession_number | 20 | |
| form | 20 | 4 |
| filing_date | 20 | 2026-10-05 to 2026-10-08 |
| owner_name | 20 | |
| owner_title | 20 | |
| is_officer | 20 | true in 20 of 20 |
| security_title | 20 | |
| transaction_date | 20 | 2026-10-01 to 2026-10-06 |
| code | 20 | |
| acquired_or_disposed | 20 | |
| shares | 20 | 2,399 to 374,541, median 40,764 |
| price_per_share | 15 | 330.32 to 334.05, median 332.16 |
| shares_owned_after | 20 | 39,593 to 3,654,959, median 183,199 |
| filing_url | 20 | sec.gov |
| synced_at | 20 | 2026-10-11 |
| is_director | 13 | true in 13 of 13 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| cik (path) | string | Yes | SEC CIK, numeric or zero-padded | 320193 | |
| from | string | No | Inclusive start date (YYYY-MM-DD, UTC) filtering transaction date | ||
| to | string | No | Inclusive end date (YYYY-MM-DD, UTC) filtering transaction date | ||
| code | string | No | Exact transaction code filter, e.g. P (open-market purchase), S (sale) | ||
| limit | integer | No | Maximum transactions returned (most recent first), default 50, max 200 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/sec-companies/insider/320193?limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "sec-companies",
"cik": 320193,
"count": 1,
"items": [
{
"cik": 320193,
"accession_number": "0000320193-25-000082",
"form": "4",
"filing_date": "2025-11-17",
"owner_name": "COOK TIMOTHY D",
"owner_title": "Chief Executive Officer",
"is_officer": true,
"security_title": "Common Stock",
"transaction_date": "2025-11-15",
"code": "S",
"acquired_or_disposed": "D",
"shares": 75000,
"price_per_share": 268.42,
"shares_owned_after": 3234400,
"filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000082/"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/datasets.secCompaniesInsiderResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.SecCompanyInsiderResponse | No | ||||
| data.cik | integer | No | ||||
| data.count | integer | No | ||||
| data.dataset | string | No | ||||
| data.items | array | No | ||||
| data.items[].accession_number | string | No | ||||
| data.items[].acquired_or_disposed | string | No | ||||
| data.items[].cik | integer | No | ||||
| data.items[].code | string | No | ||||
| data.items[].filing_date | string | No | ||||
| data.items[].filing_url | string | No | ||||
| data.items[].form | string | No | ||||
| data.items[].is_director | boolean | No | ||||
| data.items[].is_officer | boolean | No | ||||
| data.items[].is_ten_percent_owner | boolean | No | ||||
| data.items[].owner_name | string | No | ||||
| data.items[].owner_title | string | No | ||||
| data.items[].price_per_share | number | No | ||||
| data.items[].security_title | string | No | ||||
| data.items[].shares | number | No | ||||
| data.items[].shares_owned_after | number | No | ||||
| data.items[].synced_at | string | No | ||||
| data.items[].transaction_date | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/sec-companies/insider/320193?limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"