Obscura

FINRA OTC Weekly

Weekly off-exchange share volume per security from FINRA's OTC Transparency data.

finra_otc_weekly — the dataset name to pass to the Obscura API.

Category Regulatory Columns 16 Refresh Every weekday Entity key symbol Point-in-time available_date

What one row means

One venue-and-security weekly off-exchange volume summary from FINRA's OTC Transparency (weeklySummary) API: the total shares, trade count, and notional that one market participant (ATS or non-ATS OTC firm, identified by MPID) executed in one symbol during one calendar week (Monday-start), split into either the ATS (dark-pool) or non-ATS OTC summary type. Keyless FINRA Query API; only firm-level rows (both MPID and symbol present) are kept, symbol-only aggregate rows are dropped.

One row per (period_start, summary_type_code, mpid, symbol).

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For finra_otc_weekly: release_calendar: available_date = period_start + 34 days (FINRA's ~2-3 week OTC Transparency publication lag after the reporting week's Monday start).

Refresh cadence

Obscura refreshes finra_otc_weekly every weekday — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 16 columns

The full public column list for finra_otc_weekly, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/finra_otc_weekly.

ColumnTypeDescription
period_startdate · not nullThe FINRA weekStartDate (Monday the reporting week begins) — the natural reporting-period column the row's volume was measured over. Part of the composite primary key.
summary_type_codetext · not nullFINRA's report-type flag: "ATS_W_SMBL_FIRM" for the dark-pool ATS weekly summary, "OTC_W_SMBL_FIRM" for the non-ATS off-exchange OTC weekly summary. Part of the composite primary key.
mpidtext · not nullFINRA Market Participant ID of the reporting venue/firm — identifies the specific ATS or non-ATS OTC market maker that executed the volume. Part of the composite primary key.
symboltext · not nullThe traded equity ticker symbol. Part of the composite primary key.
participant_nametextHuman-readable display name of the reporting venue/firm; nullable — FINRA omits it for some non-ATS OTC rows.
tiertextNMS listing tier of the security: T1 (NMS Tier 1), T2, OTCE, etc. Nullable — absent on some non-ATS OTC rows.
share_quantitybigintTotal shares this MPID executed in this symbol during the reporting week. Nullable when FINRA omits the field; updated on conflict.
trade_countbigintTotal number of trades (executions, not shares) this MPID reported in this symbol during the week. Nullable when omitted; updated on conflict.
notionaldouble precisionTotal dollar value (share price x volume, summed across the week's trades) this MPID executed in this symbol. Nullable when omitted; updated on conflict.
initial_published_datedateFINRA's ACTUAL first-publication date for this row (raw `initialPublishedDate`, e.g. `2026-06-08`) — the true point-in-time public-availability date, as opposed to the estimated `available_date` (= period_start + 34 days) generated column. Canonical `available_date` is reserved for that generated column (singular per dataset), so this carries no canonical. Nullable; refreshed on conflict.
last_update_datedateDate FINRA last restated/updated this row (raw `lastUpdateDate`) — revisions arrive after first publication; the provenance/vintage marker for detecting restatements, distinct from `initial_published_date`. Nullable; refreshed on conflict.
last_reported_datedateThe last trade/report date observed within the reporting week (raw `lastReportedDate`) — the real-world last-activity event date, finer than the Monday `period_start`. Nullable; refreshed on conflict.
issue_nametextSecurity display name (raw `issueName`, e.g. "Apple Inc. Common Stock"); canonical security/entity name to resolve/verify the symbol and for human-readable output. Nullable.
firm_crd_numbertextReporting firm's CRD (Central Registration Depository) number (raw `firmCRDNumber`) — the FINRA/BrokerCheck firm join key. Usually null on these symbol rows, populated on firm-aggregate rows. Nullable.
product_type_codetextTape/product category (raw `productTypeCode`: `UTP`, `CTS`, `OTC`, …) indicating which market plan the security trades under — distinguishes NMS UTP vs CTS vs OTC issues. Nullable.
available_datedate · not nullPUBLIC-availability date = period_start + 34 days, FINRA's researched OTC Transparency release-calendar lag. DB-generated (STORED), read-only; the point-in-time column to filter/join on — never period_start itself.

Access finra_otc_weekly

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="finra_otc_weekly",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the finra_otc_weekly dataset?

Weekly off-exchange share volume per security from FINRA's OTC Transparency data. One venue-and-security weekly off-exchange volume summary from FINRA's OTC Transparency (weeklySummary) API: the total shares, trade count, and notional that one market participant (ATS or non-ATS OTC firm, identified by MPID) executed in one symbol during one calendar week (Monday-start), split into either the ATS (dark-pool) or non-ATS OTC summary type. Keyless FINRA Query API; only firm-level rows (both MPID and symbol present) are kept, symbol-only aggregate rows are dropped.

How do I avoid look-ahead bias with finra_otc_weekly?

Filter on finra_otc_weekly.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — release_calendar: available_date = period_start + 34 days (FINRA's ~2-3 week OTC Transparency publication lag after the reporting week's Monday start). A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get finra_otc_weekly?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="finra_otc_weekly". The column schema is public at https://api.obscura.trade/v1/catalog/finra_otc_weekly.

Can I filter finra_otc_weekly by company or symbol?

Yes. finra_otc_weekly carries symbol, the column the API's symbols filter resolves against.

How often is finra_otc_weekly updated?

Obscura refreshes finra_otc_weekly on a every weekday schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

CFTC Commitments of TradersThe CFTC's weekly Commitments of Traders report: how commercial, non-commercial and small traders are positioned in each… ECHO Enforcement CasesEnvironmental enforcement actions and penalties from the EPA's ECHO database. ECHO FacilitiesEPA-regulated facilities and their compliance history, from ECHO. EDGAR 13F FilingsMetadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. EDGAR 13F HoldingsThe line-item positions inside each 13F: which manager held which security, and how much, each quarter. EDGAR 8-K ItemsThe item numbers reported on each 8-K (5.02 officer changes, 2.01 acquisitions, 1.01 material agreements, and so on), so… EDGAR Dilution MetricsShare-issuance headroom and overhang metrics built from companies' XBRL filings: authorized versus outstanding shares, a… EDGAR Filing TextSignals mined from the text of filings, such as mentions of distress, litigation, going-concern doubt and restructuring.