API Reference · v1
SECStream API
REST API for SEC filings and market data. JSON in, JSON out. One base URL, one bearer token, predictable parameters.
Introduction
All requests are made to a single base URL. Responses are always JSON. All timestamps are ISO 8601 in UTC.
https://api.secstream.dev/v1Authentication
Authenticate every request with a bearer token using the API key from your dashboard. Requests without a valid key return 401 Unauthorized.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxGET /filings
List filings for a company. Filter by form type and date range.
| Param | Type | Description |
|---|---|---|
| tickerrequired | string | Stock ticker symbol, e.g. AAPL. |
| type | string | Form type: 10-K, 10-Q, 8-K, S-1, etc. |
| from | ISO date | Start of filing date range (inclusive). |
| to | ISO date | End of filing date range (inclusive). |
| include | string | Comma-separated extras: `market` adds price reaction (price at filing, +1d, +7d). `sections` (default) returns parsed text. |
| limit | integer | Max results (default 25, max 100). |
curl https://api.secstream.dev/v1/filings \
-H "Authorization: Bearer sk_live_..." \
-G -d ticker=AAPL -d type=10-K \
-d include=market -d limit=2{
"data": [
{
"company": "Apple Inc.",
"ticker": "AAPL",
"filing_type": "10-K",
"filing_date": "2024-11-01",
"url": "https://www.sec.gov/Archives/...",
"sections": {
"business": "Apple Inc. designs...",
"risk_factors": "The Company's...",
"md_and_a": "Fiscal 2024..."
},
"market": {
"price_at_filing": 222.91,
"price_t_plus_1d": 222.01,
"price_t_plus_7d": 229.54,
"reaction_7d_pct": 2.97
}
}
],
"next_cursor": null
}GET /company
Get company metadata, including CIK, SIC code, and most recent filings summary.
| Param | Type | Description |
|---|---|---|
| tickerrequired | string | Stock ticker symbol. |
{
"name": "Apple Inc.",
"ticker": "AAPL",
"cik": "0000320193",
"sic": "3571",
"industry": "Electronic Computers",
"exchange": "NASDAQ",
"fiscal_year_end": "09-28",
"recent_filings": 47
}GET /search
Full-text search across filings. Returns matched snippets with highlighted context.
| Param | Type | Description |
|---|---|---|
| qrequired | string | Search query. |
| type | string | Restrict to a specific form type. |
| from | ISO date | Start of date range. |
| to | ISO date | End of date range. |
{
"data": [
{
"ticker": "TSLA",
"filing_type": "10-Q",
"filing_date": "2024-10-23",
"snippet": "...supply constraints in <em>lithium</em> markets...",
"score": 0.94
}
]
}GET /quote
Live quote for a ticker. Last price, bid/ask, day change, and volume.
| Param | Type | Description |
|---|---|---|
| tickerrequired | string | Stock ticker symbol. |
{
"ticker": "AAPL",
"price": 229.87,
"bid": 229.85,
"ask": 229.88,
"day_change": 1.42,
"day_change_pct": 0.62,
"volume": 48211900,
"as_of": "2025-05-01T19:59:58Z"
}GET /bars
Historical OHLCV bars. Use for charts, backtests, or correlating filings to price action.
| Param | Type | Description |
|---|---|---|
| tickerrequired | string | Stock ticker symbol. |
| timeframerequired | string | 1m, 5m, 1h, 1d, 1w, 1mo. |
| from | ISO date | Start of range (inclusive). |
| to | ISO date | End of range (inclusive). |
| limit | integer | Max bars (default 500, max 5000). |
{
"ticker": "AAPL",
"timeframe": "1d",
"data": [
{ "t": "2025-04-28", "o": 224.10, "h": 227.03, "l": 223.81, "c": 226.40, "v": 41880200 },
{ "t": "2025-04-29", "o": 226.55, "h": 229.99, "l": 225.92, "c": 229.87, "v": 48211900 }
]
}GET /fundamentals
Live fundamentals derived from latest filings + current price: market cap, P/E, EPS, sector.
| Param | Type | Description |
|---|---|---|
| tickerrequired | string | Stock ticker symbol. |
{
"ticker": "AAPL",
"market_cap": 3480000000000,
"pe_ratio": 35.4,
"eps_ttm": 6.49,
"dividend_yield": 0.0044,
"shares_outstanding": 15140000000,
"sector": "Technology",
"industry": "Consumer Electronics",
"latest_filing": { "type": "10-K", "date": "2024-11-01" }
}Errors
Errors return a non-2xx HTTP status with a JSON body containing a structured code, a human-readable message, and optional details. Every response includes an X-Request-Id header — include it in support requests.
| Param | Type | Description |
|---|---|---|
| 400 | missing_param / invalid_param | Missing or malformed parameter. The details object identifies which one. |
| 401 | unauthorized | Missing or invalid API key. |
| 403 | plan_inactive | Subscription is canceled or past due. |
| 404 | not_found | Resource (ticker / filing) not found. |
| 429 | rate_limited | Too many requests. Back off and retry after the Retry-After window. |
| 500 | internal_error | Something broke on our end. Retry with backoff. |
{
"error": {
"code": "missing_param",
"message": "Missing required parameter: ticker",
"details": { "param": "ticker" }
}
}Rate limits
Free accounts: 60 requests per minute. Paid plans get higher limits — contact us if you need a custom rate. The limit is enforced per API key over a rolling 60-second window. When exceeded you'll receive a 429 response with a Retry-After header.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 60
X-Request-Id: 9f1c8b3e-7d0f-4c2a-b5e9-1a2b3c4d5e6f
X-Response-Time-Ms: 38Pagination. List endpoints (/filings, /insider, /clusters, /search) return up to limit rows (default 25, max 100) plus a pagination.next_cursor string. Pass it back as the cursor param to fetch the next page.
{
"ticker": "AAPL",
"data": [ /* up to limit rows */ ],
"pagination": {
"next_cursor": "eyJmaWxlZF9hdCI6IjIwMjQtMDgtMDFUMDA6MDA6MDBaIiwi...",
"has_more": true,
"limit": 25
}
}