SEC EDGAR API endpoint
Returns a company's financial statements across recent periods, resolving EDGAR's inconsistent XBRL tags to a stable schema. Provide cik or ticker.
/sec/financialsReturns a company's financial statements across recent periods, resolving EDGAR's inconsistent XBRL tags to a stable schema (the same revenue line arrives under different tags across filers). Official SEC data.
Query parameters:
cik or ticker (one required) — company identifier.statement (optional, default income) — one of income, balance, cash_flow.period (optional, default annual) — one of annual, quarterly.limit (optional, default 5, max 20) — number of periods.Each period reports fiscal_year, fiscal_period, end_date, form, currency, a lines object, and a computed ratios object. Income lines include revenue, cost_of_revenue, gross_profit, operating_income, net_income, eps_diluted; balance lines include total_assets, total_liabilities, stockholders_equity; cash-flow lines include operating_cash_flow, capital_expenditures. Values use the latest-filed figure per period (restatement-aware). Ratios include income gross_margin/operating_margin/net_margin/revenue_growth_yoy, balance current_ratio/debt_to_equity, and cash-flow free_cash_flow.
Responses are cached in Redis (6h) since XBRL facts change only on new filings.
| Field | Filled in, of 17 checked | Values in the sample |
|---|---|---|
| fiscal_year | 17 | 2,009 to 2,025, median 2,017 |
| fiscal_period | 17 | FY in all 17 |
| end_date | 17 | 2007-09-29 to 2023-09-30 |
| form | 17 | 10-K in all 17 |
| currency | 17 | USD in all 17 |
| lines | 17 | |
| ratios | 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| cik | string | No | SEC CIK (numeric or zero-padded) | 320193 | |
| ticker | string | No | Ticker symbol (alternative to cik) | AAPL | |
| statement | string | No | Statement, default income Allowed values: income, balance, cash_flow. | ||
| period | string | No | Period basis, default annual Allowed values: annual, quarterly. | ||
| limit | integer | No | Number of periods, default 5, max 20 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sec/financials?statement=income&period=annual&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"cik": 320193,
"ticker": "AAPL",
"name": "Apple Inc.",
"statement": "income",
"period": "annual",
"line_order": [
"revenue",
"net_income"
],
"periods": [
{
"fiscal_year": 2025,
"fiscal_period": "FY",
"end_date": "2025-09-27",
"form": "10-K",
"currency": "USD",
"lines": {
"revenue": 383285000000,
"net_income": 96995000000
},
"ratios": {
"gross_margin": 0.4413,
"operating_margin": 0.2982,
"net_margin": 0.2531,
"revenue_growth_yoy": -0.028
}
}
],
"source_url": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json"
}
}Request schema
No body schema
Response schema
#/definitions/sec.financialsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sec.FinancialsResponse | No | ||||
| data.cik | integer | No | Company's SEC Central Index Key (CIK) number. | |||
| data.line_order | array | No | Statement line names in the order they appear on the statement. | |||
| data.name | string | No | Company name as registered with the SEC. | |||
| data.period | string | No | annual | Period type returned: `annual` or `quarterly`. | ||
| data.periods | array | No | Reporting periods, newest first. | |||
| data.periods[].currency | string | No | USD | ISO 4217 code of the currency the monetary lines are reported in. | ||
| data.periods[].end_date | string | No | Last day of the period, in YYYY-MM-DD format. | |||
| data.periods[].fiscal_period | string | No | FY | Fiscal period covered, such as `FY` for a full year. | ||
| data.periods[].fiscal_year | integer | No | Fiscal year the period belongs to. | |||
| data.periods[].form | string | No | SEC form type that reported the figures, such as `10-K`. | |||
| data.periods[].lines | object | No | Statement line values for the period, keyed by line name such as `revenue`. | |||
| data.periods[].ratios | object | No | Ratios are computed, normalized metrics derived from the lines (margins, current ratio, debt-to-equity, free cash flow, YoY revenue growth) — a value-add over the raw statement figures. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.statement | string | No | income | Statement returned: `income`, `balance` or `cash_flow`. | ||
| data.ticker | string | No | Stock ticker symbol of the company. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/sec/financials?statement=income&period=annual&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"