US Equities OTC Market Compliance Data
Twice-daily snapshot, one row per OTC equity security (about 22,000), of OTC Markets Group compliance attributes: penny-stock and OTC Recommendation Rule exemption inputs, tier, Caveat Emptor, reporting standard, shell status, shares outstanding, quote eligibility under Rule 15c2-11, plus FIGI. Used for regulatory monitoring and risk controls.
How to use it
Rows are effective-dated. Answer point-in-time questions with the row in force on the as-of date, never the latest row. SecId and ASID are both durable AlgoSeek security keys but different values (the ASID lookup links them); tickers are reused across companies, so resolve a ticker to a key with a trade date.
Typical use
Point-in-time security identity, corporate-action adjustment, and universe construction for US equities.
Limitations
Vendor-curated reference data: rows can be restated when AlgoSeek learns of a late or corrected event, so land each delivery as a snapshot rather than overwriting history. Identity: SecId and CompId are OTC Markets Group identifiers, NOT algoseek's ASID/SecId. The OTC Security Master carries these as OTCSecId/OTCCompId lists per ASID; join compliance rows to it by matching SecId to an OTCSecId element whose date range contains TradeDate. FIGI is the composite (country-level) FIGI; ShareClassFIGI (global) is documented but not in the sample. Snapshot semantics: every row is the state of the security as of the file, not an event; the AM and PM files for one TradeDate hold the same date value and only the file name tells them apart, so a contract key must include the file period (TradeDate, AM/PM, SecId). Quote-eligibility and disclosure fields (ProprietaryQuoteEligible, DisclosureStatus, OTCLinkECNEligibleFlag, GracePeriod, 211ShellFlag) are blank in the 6 sample rows whose SecurityStatus is R (SEC revocation) and the reason-code fields are blank in 7 rows, so blank there means not applicable/not assessed rather than N. Sparse by design: financial exemption inputs (NetTangibleAssets, TotalAssets, ShareholderEquity, revenue and the PED dates) are blank when OTC Markets has no qualified financials (12 of 19 sample rows), and can be very stale (period-end dates as old as 2005 and last-report dates as old as 2006-2007 in the sample). Exemption flags then default to N.
Coverage
Full universe of US OTC equity securities (~22k instruments), an extension of the OTC Markets Compliance Data file, with FIGI from OpenFIGI. Data available from November 2024 (page).
Venues (2)
- OTC Link
- Grey Market
Usage constraints
- Licensed vendor data: never export raw rows to a tenant-local destination or include them verbatim in a public artifact; serve only through entitlement-checked platform reads.
- Do not treat the vendor's `Ticker` as a stable identity across time; join on an AlgoSeek security key (SecId or ASID, which are distinct) or the platform symbol mapping.
Known issues (9)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyGuide Table 1 includes ShareClassFIGI (current global FIGI) immediately after FIGI, but the published sample header has no ShareClassFIGI column (78 sample columns vs 79 guide fields); the page also only mentions 'a FIGI identifier'.
- Documentation discrepancyGuide says OTCTier details are 'outlined in appendix' and the reason-code field points to 'Table 6', but the appendix contains only an unnumbered reason-code table; no tier table or Table 6 exists.
- Documentation discrepancyGuide describes TransferAgentVerified with the same text as CompanyProfileVerified (company profile data verified by the issuer), so the real meaning of TransferAgentVerified is undocumented.
- Documentation discrepancyGuide does not define SecurityStatus codes (the OTC Security Master guide does); sample shows A and R.
- Documentation discrepancyGuide refers to a 'Qualified Financial Data Available Field' and a 'Qualified Financial Data' flag; the matching columns are PSQualifiedFinancials and OTCRecRuleQualifiedFinancials.
- Documentation discrepancyGuide TradeDate is 'File creation date' but two files (AM and PM) exist per day with the same date; the guide lists no column for the AM/PM period, which appears only in the file name.
- Documentation discrepancyGuide leaves several value sets undocumented that occur in the sample: Venue, ReportingStandard, DisclosureStatus, FilingCycle (Q, A), LastReportType, HomeMarketTradingVenueTier.
- Documentation discrepancyLastBalanceSheetPED and LastAnnualBalanceSheetPED have the same description ('Date of most recent annual Balance Sheet') and identical values in the sample.
79 columns in delivery order · file or table name eq_otc_market_compliance. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| TradeDate | dateyyyymmdd | Key 1 · Required | File creation date. The AM and PM files of a day share this date; the period appears only in the file name. Missing values: Never · Source: vendor guide and sample |
| SecId | integeri64 | Key 2 · Required | OTC Markets Group unique security identifier (not algoseek's SecId/ASID). Missing values: Never · Source: vendor guide and sample |
| CompId | integeri64 | Required | OTC Markets Group unique company identifier for the security. Missing values: Never · Source: vendor guide and sample |
| Ticker | string | US markets symbol. Missing values: Blank · Source: vendor guide and sample | |
| FIGI | string12-character FIGI | Current composite (country-level) FIGI of the security, from OpenFIGI. Missing values: Blank · Source: vendor guide and sample | |
| CompanyName | string | Required | Company name. Missing values: Never · Source: vendor guide and sample |
| SecurityName | string | Required | Security name (OTC Markets short-form name in sample). Missing values: Never · Source: vendor guide and sample |
| Venue | string | US trading venue; OTC Link and Grey Market in sample. Missing values: Never · Source: vendor guide and sample | |
| SecurityType | string | Security type (e.g. common, unit, warrant); Common Stock, Ordinary Shares, ADR strings in sample. Missing values: Blank · Source: vendor guide and sample | |
| SecurityClass | string | Security class; blank in all 19 sample rows. Missing values: Blank · Source: vendor guide and sample | |
| CaveatEmptor | string · enum (2)Y/N | Required | Caveat Emptor (Buyer Beware) flag. Missing values: Never · Source: vendor guide and sample 2 allowed values
|
| OTCTier | string | OTC Markets tier name (Grey Market, Pink Current, Pink Limited, Pink No Information in sample); tier details not in the guide appendix. Missing values: Never · Source: vendor guide and sample | |
| OTCTierId | integeri64 | Required | OTC tier identifier (30 Grey Market, 20 Pink Current, 21 Pink Limited, 22 Pink No Information in sample). Missing values: Never · Source: vendor guide and sample |
| ReportingStandard | string | Company reporting standard (SEC Reporting, International Reporting in sample). Missing values: Never · Source: vendor guide and sample | |
| SecurityStatus | string | Security status code; guide gives no code list (A and R in sample; see OTC Security Master for A/S/H/I/R/D). Missing values: Never · Source: vendor guide and sample | |
| ProprietaryQuoteEligible | stringY/N | Whether the security is eligible for proprietary quoting under SEC Rule 15c2-11. Missing values: Blank · Source: vendor guide and sample | |
| PennyStockExempt | stringY/N | Required | Y if exempt from penny-stock classification under Rule 3a51-1; N if no exemption applies. Missing values: Never · Source: vendor guide and sample |
| PSPriceExemption | stringY/N | Required | Y if previous closing inside bid (2 priced quotes) is at least $5, with unit/ADR adjustments, so the security is price-exempt. Missing values: Never · Source: vendor guide and sample |
| PreviousClosingInsideBid | number | Closing inside bid on the previous trading day; needs 2 priced quotes. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| PreviousLastTrade | number | Previous last sale price of the security. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| InvestmentCompanyExemption | stringY/N | Y if the issuer is a registered investment company (1940 Act), making the security exempt from penny-stock status. Missing values: Blank · Source: vendor guide and sample | |
| PSQualifiedFinancials | stringY/N | Y if the financial data needed for the Net Tangible Asset / Average Revenue exemptions is available; N otherwise. Missing values: Blank · Source: vendor guide and sample | |
| NetTangibleAssetsExemption | stringY/N | Y if net tangible assets exceed $2M (3+ years operating) or $5M (under 3 years), exempting the penny-stock label; needs qualified financials. Missing values: Blank · Source: vendor guide and sample | |
| NetTangibleAssets | integeri64 | Dollar value of the most recent annual net tangible assets; can be negative. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| NetTangibleAssetsPED | dateyyyymmdd | Period end date of the net tangible assets value. Missing values: Blank · Source: vendor guide and sample | |
| AverageRevenueExemption | stringY/N | Required | Y if mean revenue over the trailing 3 years is at least $6M, exempting the penny-stock label; needs qualified financials. Missing values: Never · Source: vendor guide and sample |
| AverageRevenue | integeri64 | Dollar value of average revenue over the past 3 years. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OTCRecRuleExempt | stringY/N | Required | Y if any OTC Recommendation Rule exemption flag below is Y; other FINRA Rule 2114 exemptions may still apply. Missing values: Never · Source: vendor guide and sample |
| OTCRecRulePriceExemption | stringY/N | Required | Y if previous closing inside bid (2 priced quotes) is at least $50, with unit/ADR adjustments. Missing values: Never · Source: vendor guide and sample |
| OTCRecRuleQualifiedFinancials | stringY/N | Y if the financial data needed for the asset/shareholder-equity exemption is available; N otherwise. Missing values: Never · Source: vendor guide and sample | |
| OTCRecRuleAssetExemption | stringY/N | Required | Y if total assets are at least $50M and shareholder equity at least $10M in the latest statements. Missing values: Never · Source: vendor guide and sample |
| TotalAssets | integeri64 | Dollar value of total assets in the most recent annual financial statement. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| ShareholderEquity | integeri64 | Dollar value of shareholder equity in the most recent annual financial statement; can be negative. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LastBalanceSheetPED | dateyyyymmdd | Date of the most recent annual balance sheet. Missing values: Blank · Source: vendor guide and sample | |
| LastIncomeStatementPED | dateyyyymmdd | Date of the most recent annual income statement. Missing values: Blank · Source: vendor guide and sample | |
| OTCRecRuleBankExemption | stringY/N | Required | Y if the issuer is a bank or insurance company, exempting the security from the OTC Recommendation Rule. Missing values: Never · Source: vendor guide and sample |
| 144AInformationAvailable | stringY/N | Required | Y if the issuer is exempt under Rule 12g3-2(b) or current financial information is available. Missing values: Never · Source: vendor guide and sample |
| 144A12g32bExemption | stringY/N | Required | Y if the issuer is exempt from reporting under Rule 12g3-2(b). Missing values: Never · Source: vendor guide and sample |
| 144AFinancialDataExemption | stringY/N | Required | Y if current financial information is available for the issuer. Missing values: Never · Source: vendor guide and sample |
| LastAnnualBalanceSheetPED | dateyyyymmdd | Date of the most recent annual balance sheet (same wording as LastBalanceSheetPED). Missing values: Blank · Source: vendor guide and sample | |
| FiscalYearEnd | stringddmm | Fiscal year end in ddmm format (3112 = 31 December). Missing values: Blank · Source: vendor guide and sample | |
| FilingCycle | string | Filing cycle of the company; Q and A occur in sample, values undocumented. Missing values: Blank · Source: vendor guide and sample | |
| LastReportDate | dateyyyymmdd | Date of the last 10-K, 10-Q, 8-K or alternative report. Missing values: Blank · Source: vendor guide and sample | |
| LastReportType | string | Type of the last report (10QSB, 10-Q, 8-K in sample). Missing values: Blank · Source: vendor guide and sample | |
| 12g32bExemptStatus | stringY/N | Required | Whether the company is exempt from SEC reporting under Rule 12g3-2(b). Missing values: Never · Source: vendor guide and sample |
| Bankruptcy | stringY/N | Required | Whether the company is in bankruptcy. Missing values: Never · Source: vendor guide and sample |
| Shell | stringY/N | Required | Whether the company is a shell company. Missing values: Never · Source: vendor guide and sample |
| BankThrift | stringY/N | Required | Whether the company is a bank/thrift or other non-bank regulated company such as an insurer. Missing values: Never · Source: vendor guide and sample |
| AuditedFinancials | stringY/N | Required | Whether the company's financials are audited. Missing values: Never · Source: vendor guide and sample |
| MarketParticipants | integeri64 | Number of broker-dealers quoting the security. Unit: count · Missing values: Blank · Source: vendor guide and sample | |
| 20DayAvgVolume | integeri64 | Mean share volume over the past 20 trading days. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| 30DayAvgVolume | integeri64 | Mean share volume over the past 30 trading days. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| LastSplitDate | dateyyyymmdd | Date of the last forward or reverse share split. Missing values: Blank · Source: vendor guide and sample | |
| LastSplitRatio | number | Share amount per 1 pre-split share; above 1 is a forward split, below 1 a reverse split. Missing values: Blank · Source: vendor guide and sample | |
| LastSplitComments | string | Text comments on the last split. Missing values: Blank · Source: vendor guide and sample | |
| PreviousSplitDate | dateyyyymmdd | Date of the split before the last one. Missing values: Blank · Source: vendor guide and sample | |
| PreviousSplitRatio | number | Share amount per 1 pre-split share for the previous split; above 1 forward, below 1 reverse. Missing values: Blank · Source: vendor guide and sample | |
| PreviousSplitComments | string | Text comments on the previous split. Missing values: Blank · Source: vendor guide and sample | |
| HomeMarketTradingTicker | string | Home-market symbol for foreign securities (F shares, ADRs). Missing values: Blank · Source: vendor guide and sample | |
| HomeMarketTradingVenue | string | Home-market trading venue for foreign securities. Missing values: Blank · Source: vendor guide and sample | |
| HomeMarketTradingVenueTier | string | Tier within the home-market venue (e.g. LSE AIM); 'No Tier', 'Prime Market', 'Main Board' in sample. Missing values: Blank · Source: vendor guide and sample | |
| SharesOutstanding | integeri64 | Shares outstanding for the security. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| SharesOutstandingAsOfDate | dateyyyymmdd | As-of date of the shares outstanding value; can be years old. Missing values: Blank · Source: vendor guide and sample | |
| TransferAgentVerified | stringY/N | Flag for transfer-agent verification; the guide text repeats the company-profile-verified wording. Missing values: Never · Source: vendor guide and sample | |
| CompanyProfileVerified | stringY/N | Whether company profile data (description, officers, directors) is verified by the issuer; verification must be under six months old. Missing values: Never · Source: vendor guide and sample | |
| CompanyProfileVerifiedAsOfDate | dateyyyymmdd | Date the company profile was verified. Missing values: Blank · Source: vendor guide and sample | |
| TransferAgent | stringseveral agents separated by ';' | Transfer agent(s) for the security, semicolon-separated if several. Missing values: Blank · Source: vendor guide and sample | |
| TierAbbreviation | string2 letters | Required | Two-letter abbreviation of the OTC tier (GM, PC, PL, PN in sample). Missing values: Never · Source: vendor guide and sample |
| UNSQuoteOnly | stringY/N | Required | Whether the security may be quoted only on an unsolicited basis on OTC Link ATS. Missing values: Never · Source: vendor guide and sample |
| OTCLinkECNEligibleFlag | stringY/N | Whether the security is eligible for OTC Link ECN. Missing values: Blank · Source: vendor guide and sample | |
| DisclosureStatus | string | Issuer disclosure status (Current Information, Limited Information in sample). Missing values: Blank · Source: vendor guide and sample | |
| ProprietaryQuoteEligibleEntryReasonCodes | stringinteger reason codes separated by ';' | Rule 15c-211 compliance basis for proprietary quote eligibility; codes 1-24, semicolon-separated (see reason code table). Missing values: Blank · Source: vendor guide and sample | |
| DeterminationDates | stringyyyymmdd values separated by ';' | Determination date for each reason code, in the same order as ProprietaryQuoteEligibleEntryReasonCodes. Missing values: Blank · Source: vendor guide and sample | |
| GracePeriod | stringY/N | Whether the security is in a grace period for Rule 15c-211 compliance. Missing values: Blank · Source: vendor guide and sample | |
| GracePeriodAnticipatedEndDate | dateyyyymmdd | Anticipated final date of the grace period; absent a status change the security loses proprietary quote eligibility the next trading day. Missing values: Blank · Source: vendor guide and sample | |
| 211ShellFlag | stringY/N | Whether the issuer is a shell company under Rule 15c2-11. Missing values: Blank · Source: vendor guide and sample | |
| 211ShellAsOfDate | dateyyyymmdd | Date of the security's initial proprietary quote, the base of the 18-month piggyback exemption window. Missing values: Blank · Source: vendor guide and sample | |
| 211ShellDaysRemaining | integeri64 | Days left in the 18-month shell piggyback timeframe; null once it has expired. Missing values: Blank · Source: vendor guide and sample | |
| ShareClassFIGI | string12-character FIGI | Current share-class (global-level) FIGI of the security; documented in the guide but absent from the sample header. Missing values: Blank · Source: vendor guide only |
- errorrow_count_positivecompleteness
Every delivered partition (trade date, or snapshot) carries at least one row.
rowCount must be greater than 0
- errorprimary_key_uniqueuniqueness
The declared primary key is unique within each delivered partition (one file or table snapshot).
duplicateValues (properties: TradeDate, SecId) must be 0
- error20DayAvgVolume_non_negativeaccuracy
20DayAvgVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE 20DayAvgVolume < 0 - error30DayAvgVolume_non_negativeaccuracy
30DayAvgVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE 30DayAvgVolume < 0
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- gzip-compressed plain-text CSV, two files per trading day (before market open and after market close), named yyyymmdd_pp.csv.gz where pp = AM or PM; fixed header first; one row per security.
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
REST API
AlgoSeek Datasets REST API (X-API-KEY header; JSON, CSV or gzipped CSV). Returns AlgoSeek's normalized API layout, which differs from the flat-file columns in this contract's schema.
https://api.algoseek.com/v1/data/us-equity-ref/otc-market-compliance/:identifier
- Authentication:
- X-API-KEY header issued by AlgoSeek
- Response formats:
- json, csv, csv_gzip
- Pagination:
- offset + limit; tick endpoints take trade_date and identifier (Ticker or ASID) in the path
Service levels
- History starts
- 2024-11-01
- First trade date of the vendor history.
- Retention
- Bounded by the license term
- Retention of landed copies is bounded by the AlgoSeek license; purge on termination.
Service levels describe the vendor feed as documented. They are draft values, not a commitment by AlphaSwarm.
Data Contract Editor · read-only preview — edits are not saved
Open-source Data Contract Editor (MIT). Changes stay in this browser tab: Cancel restores the published contract, and Download copy saves your edited YAML to your device only.
Contracts follow the Open Data Contract Standard (Bitol, LF AI & Data).
Vendor names are trademarks of their owners.