/api/v1/financials/changesGet recently updated companies (filing changes detected).
Get recently updated companies (filing changes detected).
5 tokensSince v3.4.0
Why use this
Track which companies had new XBRL data loaded.
Common use case
Delta feeds for downstream consumers, monitoring data freshness.
Delta feed of tickers whose standardized XBRL data was loaded or updated since the since timestamp. Use as the trigger for downstream consumers' incremental sync (re-fetch /financials/snapshot only for tickers in this list, rather than all 7,000). The XBRL ETL runs daily (post-Plan-49 standardization pipeline), so most updates are batched in early-UTC-morning windows. For per-ticker drill-down on which exact periods + metrics changed, use /api/v1/financials/changes/{ticker}. Pair with /api/v1/financials/status for system-wide pipeline health monitoring.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| since | query | optional | 7d-ago | — | ISO-8601 UTC timestamp lower-bound on `last_updated_at`. Default = 7 days ago. Pass the most-recent `last_updated_at` from your last poll to receive only newly-updated tickers (incremental delta-feed pattern). | 2026-04-25T00:00:00Z |
| limit | query | optional | 50 | — | Maximum tickers returned (capped at 200 server-side). For typical delta-feed cadence (every 6-24 hours) 50-100 is plenty; for rare large-batch backfill catch-ups use 200 + paginated walks. | 50 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| data.since | string | no | ISO-8601 UTC timestamp echoed back — the lower-bound used for the query (defaults to 7 days ago when not specified). |
| data.count | integer | no | Total number of tickers updated since `since`. May exceed `limit` (response is capped at `limit` rows; `count` reflects the full match set). |
| data.tickers[] | array | no | Array of changed-ticker rows, sorted by `last_updated_at DESC` (most-recently-updated first). Empty array when no XBRL data has been loaded since `since`. |
| data.tickers[].ticker | string | no | Issuer ticker (canonical hyphen form). Pass to `/api/v1/financials/changes/{ticker}` for per-ticker change details (which periods + which metrics). |
| data.tickers[].cik | string | no | Issuer CIK in 10-char zero-padded form (e.g. `0000320193`). |
| data.tickers[].company_name | string | no | Company name from EDGAR's company-tickers.json. |
| data.tickers[].last_updated_at | string | no | ISO-8601 UTC timestamp of when FinRadar's XBRL ETL last loaded data for this ticker (NOT the SEC filing time — that's earlier; the gap reflects the daily company-facts ETL cadence + Phase 49+ standardization step). Use as the `since` cursor for incremental polling. |
| data.tickers[].periods_updated | array | no | Array of fiscal periods (`YYYYQq` format like `2025Q4` for quarterly, `2024Y` for annual) that received new or updated metrics in this load. Most loads update one period (the freshly-filed quarter); restatements update multiple historical periods. |
| data.tickers[].metrics_count | integer | no | Total count of standardized metrics affected across `periods_updated`. Typical 10-Q load: 30-40 metrics; 10-K load: 40-60; restatement: variable. |
| data.tickers[].trigger | string | yes | Human-readable cause of the update. Values: `10-Q filing`, `10-K filing`, `8-K/A restatement`, `XBRL re-parse`, `Backfill load`. Null when the trigger isn't classifiable (rare). |
| data.tickers[].latest_period_end | string | no | ISO `YYYY-MM-DD` end-date of the most-recent fiscal period now available for this ticker. Useful for staleness detection (compare against today's date). |
Sample response
·
- "status": "success"
- "data":
- "since": "2026-04-25T00:00:00Z"
- "count": 48
- "tickers":
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl "https://api.finradar.ai/api/v1/financials/changes?api_Token=YOUR_API_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).