OpenBB FINRA Provider
This extension integrates the public data of the Financial Industry Regulatory Authority (FINRA) into the OpenBB Platform.
Every dataset is read from FINRA's public services. No API key or account is required.
This extension is not affiliated with, endorsed by, or authorized by FINRA.
Installation
Install from PyPI:
pip install openbb-finra
Or from the source tree:
uv pip install -e openbb_platform/providers/finra
Then rebuild the Python interface:
import openbb
openbb.build()
Coverage
| Command | Description |
|---|---|
equity.securities |
Every security FINRA publishes OTC or ATS volume for - stocks, ETFs, closed-end funds, and others - by type. |
equity.search |
Search stocks, ETFs, closed-end funds, and mutual funds by symbol, name, or ISIN. |
equity.profile |
Identifiers, classification, prices, dividends, valuation ratios, and volatility of securities. |
equity.darkpool.otc |
Weekly OTC and ATS share and trade volume - a symbol's full history, or the latest week of a tier. |
equity.shorts.short_interest |
Bi-monthly consolidated short interest and days to cover, back to 2017. |
fixedincome.bonds |
Every TRACE-reported bond of one type - CA, TS, TBA, MBS, ABS, or CMO - with its reference data and last sale. |
fixedincome.bond_prices |
Search TRACE-reported bonds - reference data with the last reported sale. |
fixedincome.bond_historical |
Daily end-of-day TRACE prices and yields of bonds. |
Sources
FINRA Query API (api.finra.org) serves the OTC transparency and short interest datasets. Each symbol's full history is read in one request - the weekly summary back to December 2021, the consolidated short interest back to December 2017. Without a symbol, equity.darkpool.otc ranks every symbol of the tier's latest published week by share volume.
The security list is FINRA's traded universe - every symbol in the latest week of OTC and ATS volume for each tier, about 21,000 - classified by the Market Data Center.
The classification of every symbol known at build time ships in openbb_finra/assets/security_types.json.gz, so a call reads the current universe in a handful of requests and looks up only the symbols that are new since the build.
The asset is produced by the Hatchling build hook in hatch_build.py; it is reused when present and regenerated with OPENBB_FINRA_FORCE_ASSET_REBUILD=1, or at any time with generate-finra-security-types.
FINRA Market Data Center (finra-markets.morningstar.com) serves the security search and the reference profiles. Search matches ticker prefixes, words of names, and exact ISINs, capped by the service at between four and sixteen hits per security type. Profiles resolve tickers, CUSIPs, and Morningstar ids, up to 100 at a time.
TRACE (services-dynarep.ddwa.finra.org) serves the bond reference data, last sales, and end-of-day prices for corporate and agency bonds, Treasury notes and bonds, TBA contracts, and mortgage-backed, asset-backed, and collateralized mortgage obligation securities.
Notes on the data
Bond types are detected from identifiers. fixedincome.bond_prices and fixedincome.bond_historical take CUSIPs or FINRA bond symbols, in any mix, and resolve each to its TRACE product in one request. Without identifiers, bond_type selects the product, and corporate and agency bonds are searched by default.
Filters run on the server. Issuer names match every word in any order, as substrings - apple finds APPLE INC and also DR PEPPER SNAPPLE GROUP INC.
Coupon, maturity, and last-sale yield bounds are applied by TRACE, and matured bonds are excluded unless include_matured is set.
For TBA and mortgage-backed securities, the issuer name matches the issuing agency. The mortgage-backed and CMO universes each hold millions of securities, so those searches need a filter or a limit.
TRACE does not publish every standard field. ISIN, LEI, currency, country, and issued amounts are not in the public datasets; passing them is an error rather than a silent no-op.
Treasury history is on-the-run only. End-of-day Treasury prices are published for the current benchmark notes and bonds. Other TRACE products carry about ten years of history.
Values are passed through as published. Rates and yields are percent numbers (1.4 is 1.4%). Codes are decoded against FINRA's published code tables - coupon types, industry groups, and grades - and codes FINRA does not publish a decode for are passed through as they are.
Standalone usage
The extension registers its own router, so installing openbb-finra alone still exposes every dataset under /finra.
The equity commands are served there only when openbb-equity is absent, and fixedincome.bond_prices only when openbb-fixedincome is absent; when they are installed, the same data is served through obb.equity... and obb.fixedincome.corporate.bond_prices with provider="finra".
| Standard model | Owner | Standalone command |
|---|---|---|
EquitySearch |
openbb-equity |
finra.equity.search |
EquityInfo |
openbb-equity |
finra.equity.profile |
OTCAggregate |
openbb-equity |
finra.equity.darkpool.otc |
EquityShortInterest |
openbb-equity |
finra.equity.shorts.short_interest |
BondPrices |
openbb-fixedincome |
finra.fixedincome.bond_prices |
finra.equity.securities, finra.fixedincome.bonds, and finra.fixedincome.bond_historical have no standard model and are always served by this extension.
The fetchers can also be used directly, independent of the Python and API interfaces:
from openbb_finra import finra_provider
finra_provider.fetcher_dict
Example
from openbb import obb
obb.finra.fixedincome.bond_prices(issuer_name="apple inc").to_df()
obb.finra.fixedincome.bond_historical(cusip="037833EH9").to_df()
obb.finra.equity.shorts.short_interest(symbol="AAPL").to_df()
OpenBB Workspace
A bundled dashboard is served at /api/v1/finra/apps.json, with the widget IDs resolved against whichever extensions are installed. Start the API and add it as a Workspace backend:
openbb-api
The app has an equities tab - profile, short interest, and OTC volume linked by symbol, with the security search - and a bonds tab with the TRACE bond search and end-of-day history.
Development
uv pip install -e '.'
uv pip install --group dev
pytest tests --cov=openbb_finra --cov-report=term-missing
The unit suite runs offline, replaying recorded FINRA responses from tests/data. Integration tests hit the live services and are excluded by default:
pytest integration -m integration
OpenBB Documentation
OpenBB Platform documentation is available here.
OpenBB Workspace documentation is available here.
Metadata
Release files for openbb-finra 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openbb_finra-2.0.0.tar.gz | 900.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openbb_finra-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / openbb_finra-2.0.0.tar.gz
| Download URL | openbb_finra-2.0.0.tar.gz |
|---|---|
| Size | 900.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61f6224b4f182f13801d5cab25c513135f0e98ef0f7c709bddf6e4f7e27c36f5
|
|
BLAKE2b-256 checksum How to use checksums |
e44d7e830f551294eac91bd9fe245ef715a4f9535f9330a3091d27afaad3d5f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / openbb_finra-2.0.0-py3-none-any.whl
| Download URL | openbb_finra-2.0.0-py3-none-any.whl |
|---|---|
| Size | 570.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d766f932c4fec30f7d5709e1dd9417c81c0e9b4ef3a68554ae13213b7470ed6d
|
|
BLAKE2b-256 checksum How to use checksums |
3963d47046cb9aa559e799db4b74ea63f3f22053343736cc526498eb10022246
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency log