Datasets API endpoint
Returns a company's financial-statement history (income statement, balance sheet, cash flow) from the SEC companies dataset, newest fiscal year first. An unknown CIK or a company with no XBRL data returns an empty series rather than a 404 — most filers without a current ticker have no financial-statement history at all. `lines` keys are the same concept names the live `/sec/financials` endpoint uses (e.g. `revenue`, `net_income`, `total_assets`); `ratios` keys include `gross_margin`, `operating_margin`, `net_margin`, `revenue_growth_yoy`, `current_ratio`, `debt_to_equity`, `free_cash_flow` where derivable. statement enum: `income`, `balance`, `cash_flow`. period enum: `annual`, `quarterly`.
/datasets/sec-companies/financials/{cik}Path parameters:
cik: required. SEC CIK, numeric or zero-padded.Query parameters:
statement: optional. Statement enum: income, balance, cash_flow. Omit to return all three.period: optional. Period-type enum: annual, quarterly. Omit to return both.from: optional. Inclusive lower bound on fiscal_year.to: optional. Inclusive upper bound on fiscal_year.limit: optional. Maximum points returned (most recent fiscal years first). Default 100, max 400.Response behavior:
200 with count: 0) rather than a 404 — most filers without a current ticker have no financial-statement history at all.lines keys are the same normalized concept names the live GET /sec/financials endpoint uses (e.g. revenue, net_income, total_assets, operating_cash_flow).ratios keys include gross_margin, operating_margin, net_margin, revenue_growth_yoy, current_ratio, debt_to_equity, free_cash_flow where derivable from the reported lines._id is keyed by (cik, statement, period, fiscal_year[, fiscal_period]), so a later crawl that picks up an SEC restatement overwrites that period's figures rather than duplicating it — there is only ever one point per fiscal period.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| cik | 20 | 320,193 |
| statement | 20 | |
| period | 20 | |
| fiscal_year | 20 | 2,025 to 2,026, median 2,025 |
| fiscal_period | 20 | |
| end_date | 20 | 2023-09-30 to 2025-09-27 |
| form | 20 | |
| currency | 20 | |
| lines | 20 | |
| ratios | 20 | |
| synced_at | 20 | 2026-10-10 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| cik (path) | string | Yes | SEC CIK, numeric or zero-padded | 320193 | |
| statement | string | No | Statement enum: income, balance, cash_flow. Omit to return all three. Allowed values: income, balance, cash_flow. | ||
| period | string | No | Period-type enum: annual, quarterly. Omit to return both. Allowed values: annual, quarterly. | ||
| from | integer | No | Inclusive lower bound on fiscal_year | ||
| to | integer | No | Inclusive upper bound on fiscal_year | ||
| limit | integer | No | Maximum points returned (most recent fiscal years first), default 100, max 400 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/sec-companies/financials/320193?statement=income&period=annual&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "sec-companies",
"cik": 320193,
"count": 2,
"points": [
{
"cik": 320193,
"statement": "income",
"period": "annual",
"fiscal_year": 2024,
"fiscal_period": "FY",
"end_date": "2024-09-28",
"form": "10-K",
"currency": "USD",
"lines": {
"revenue": 391035000000,
"net_income": 93736000000,
"gross_profit": 180683000000
},
"ratios": {
"gross_margin": 0.4621,
"net_margin": 0.2397,
"revenue_growth_yoy": 0.0206
}
},
{
"cik": 320193,
"statement": "income",
"period": "annual",
"fiscal_year": 2023,
"fiscal_period": "FY",
"end_date": "2023-09-30",
"form": "10-K",
"currency": "USD",
"lines": {
"revenue": 383285000000,
"net_income": 96995000000
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/datasets.secCompaniesFinancialsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.SecCompanyFinancialsResponse | No | ||||
| data.cik | integer | No | SEC Central Index Key (CIK) of the company, as a number. | |||
| data.count | integer | No | Number of data points returned. | |||
| data.dataset | string | No | Identifier of the dataset queried (`sec-companies`). | |||
| data.points | array | No | Financial statement history points for the company, newest fiscal year first. | |||
| data.points[].cik | integer | No | SEC Central Index Key of the company. | |||
| data.points[].currency | string | No | Currency the figures are reported in, such as `USD`. | |||
| data.points[].end_date | string | No | Last day of the reporting period, in YYYY-MM-DD format. | |||
| data.points[].fiscal_period | string | No | e.g. FY, Q1..Q4 | |||
| data.points[].fiscal_year | integer | No | Fiscal year the period belongs to. | |||
| data.points[].form | string | No | SEC form the figures were reported in, such as `10-K`. | |||
| data.points[].lines | object | No | Financial statement line items for the period, keyed by name such as `revenue` or `net_income`. | |||
| data.points[].period | string | No | annual | quarterly | |||
| data.points[].ratios | object | No | Ratios calculated from the line items, keyed by name such as `gross_margin` or `net_margin`. | |||
| data.points[].statement | string | No | income | balance | cash_flow | |||
| data.points[].synced_at | string | No | Time this period was last updated, in UTC (RFC 3339). | |||
| 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/financials/320193?statement=income&period=annual&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"