/api/v1/cusip/statsCUSIP database statistics: total CUSIPs, mapped (with ticker), unmapped (no ticker), with CIK, and overall mapping rate percentage.
CUSIP database statistics: total CUSIPs, mapped (with ticker), unmapped (no ticker), with CIK, and overall mapping rate percentage.
Why use this
Common use case
CUSIP catalog health metrics in one call — total catalog size, ticker-resolution rate (mapped vs unmapped), CIK-coverage rate, security-group distribution, and OpenFIGI enablement state. The natural admin-dashboard rollup for the cusip_security_catalog. Mapping rate variance is significant: without OPENFIGI_API_KEY set, expect ~76% mapped (CUSIPs resolved purely via SEC company-tickers.json + filing-derived enrichment); with the key set, climbs to >98% via OpenFIGI's ~100M+ security-master coverage. The 6-bucket security_group breakdown (Stocks / ETFs / Preferred / Warrants / Debt / Other) reflects the v3.11.0 catalog-broadening from ~7,968 equity-only CUSIPs to ~26K all-types CUSIPs (Issue #241). Pair with GET /api/v1/status for cross-service health rollups and with GET /api/v1/stats for platform-wide volume metrics.
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| total_cusips | integer | no | Total row count in `cusip_security_catalog`. Grows with new SEC filings + OpenFIGI nightly enrichment runs. Typical value: ~26,000 post v3.11.0 expansion to 6 security groups (was ~7,968 prior to the v3.11.0 catalog-broadening). |
| mapped | integer | no | Count of CUSIPs with a non-null ticker mapping. Without `OPENFIGI_API_KEY` set, expect ~76% mapped (CUSIPs resolved via SEC company-tickers.json + filing-derived enrichment). With the key set, climbs to >98%. |
| unmapped | integer | no | Count of CUSIPs with null ticker (no public-equity ticker found). Includes debt securities, private placements, delisted issuers, and OpenFIGI-coverage-gap CUSIPs. Typical: ~24% without OpenFIGI key, ~2% with key. |
| with_cik | integer | no | Count of CUSIPs with non-null SEC CIK mapping. Bridges to filing-history endpoints. Typical: ~94% (most CUSIPs in the catalog originate from SEC-registered issuers). |
| mapping_rate | number | no | Convenience field — `round(mapped / total_cusips * 100, 1)` as a decimal percent (e.g. 76.4 means 76.4% of CUSIPs are ticker-mapped). Display-ready for dashboards. |
| by_security_group | object | no | Count breakdown by security_group classification — `{ Stocks: integer, ETFs: integer, Preferred: integer, Warrants: integer, Debt: integer, Other: integer }`. The 6-bucket schema established in v3.11.0. Useful for verifying coverage across all security types after a catalog refresh. |
| openfigi_enabled | boolean | no | `true` when `OPENFIGI_API_KEY` is set in the FinRadar environment (changes batch size from 10 -> 100 CUSIPs/batch and delay from 2.4s -> 0.24s — critical for 13F deadline-day batch enrichment). `false` otherwise — expect lower mapping_rate. |
| last_refresh_at | string | yes | ISO-8601 UTC timestamp of the most-recent catalog refresh (nightly OpenFIGI enrichment + SEC company-tickers.json sync). Null on cold-start or if the refresh DAG has never completed. |
Sample response
- "total_cusips": 26080
- "mapped": 25540
- "unmapped": 540
- "with_cik": 24515
- "mapping_rate": 97.9
- "by_security_group":
- "Stocks": 8412
- "ETFs": 3104
- "Preferred": 1287
- "Warrants": 482
- "Debt": 11890
- "Other": 905
- "openfigi_enabled": true
- "last_refresh_at": "2026-05-02T03:14:22Z"
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/cusip/stats?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).