Alphanume
Regulatory & Enforcement

SEC Trading Suspensions

See exactly when the SEC turned a stock off, why it did, and the first session the stock was allowed back on. Every Section 12(k) suspension order since 1995, exploded to one row per named issuer, with the window down to the ET minute trading stopped.

GET /v1/market-structure/sec-suspensionsUpdated daily from SEC.gov
  • Screen a name for terminal risk.

    issuer_name, ticker, and cik answer whether this company was ever suspended, and cited_reason says what the SEC was worried about.

  • Time the event to the minute.

    suspended_at plus suspension_start_time_et separate halts that begin at the 09:30 open from the ones that begin at 04:00, before the pre-market.

  • See who is halted right now.

    has_resumed=0 lists every issuer still inside its suspension window as of today, updated as new orders land.

Ask your agent
Prompt · MCP or REST

Show me the companies the SEC has stopped trading in for suspected manipulation, and tell me what happened to the stock once the stop lifted.

Your agent translates this into the right reason category, the suspension window dates, and the permitted resumption date for each issuer.

What this dataset is

The order that stops every quote at once.

Under Section 12(k) of the Securities Exchange Act, the SEC can stop all trading in a stock for up to 10 business days when it believes the public is at risk: the company has gone silent on its filings, the public information about it looks wrong, or someone appears to be manipulating the price. It is the most severe action the Commission can take against a trading stock short of bringing an enforcement case.

This dataset is the complete tape of those orders since October 1995: 4,736 issuer rows across 1,340 releases. Each row is one issuer named in one order. Orders that name many companies at once, like the bulk delinquency sweeps of 2013 to 2021, become one row per issuer, all sharing a release_number, so you can work at the issuer level or collapse back to the order level.

Each row includes:

  • The release that ordered the suspension, and the issuer's place in that order's own list.
  • Identifiers as the order states them: issuer name always, ticker and CIK where given.
  • The suspension window, start and end date plus the ET time of day on each side.
  • The cited reason normalized to four values, and the order's own wording alongside it.
  • The first NYSE session trading may legally resume, and whether that date has passed.
  • Links to the SEC order document and its companion release, for primary-source checks.

A suspension is a stop, not a delisting, and resumption_at is permission, not evidence that trading resumed. The order ends on a computed date; whether anyone quotes the stock again is a separate question, and for many names the answer is never.

What you can do with it

A liquidity shock with a known start and a known end.

A suspension is a liquidity shock with a known window: trading stops on a stated date and time, and may resume on a computed one. Academic work has found severe losses when suspended stocks requote, so the tape of starts and permitted resumption dates is the backbone for studying price and volume on both sides of the stop. Most suspensions begin at the 09:30 open, but modern manipulation orders begin at 04:00 ET, which changes what the last tradeable print was.

The other use is screening. For anyone trading microcaps or OTC names, a past suspension is one of the strongest terminal-risk flags available, and cited_reason separates the routine cases (delinquent filings) from the serious ones (market manipulation). Because the tickers of dead shells get reused, cik and issuer_name let you run that screen without survivorship bias.

  • Event studies around suspension starts and permitted resumption dates, split by how the last print was struck
  • Terminal-risk screening for microcap and OTC universes, by ticker, CIK, or issuer name
  • Isolating the modern pump-and-dump regime with cited_reason=market_manipulation and single_issuer=true
  • Testing the statutory cap directly: suspension_business_days counts the NYSE sessions inside each window
Where the data comes from

Read from the order, tracked until the window closes.

The source is SEC.gov itself: the Commission's public trading-suspensions index and the underlying order and press-release documents, parsed back to the start of that index in 1995. Every row links to the document it came from, so any value can be checked against the primary source in one click.

New releases are picked up daily. A separate daily sweep rewrites has_resumed, resumption_at, and the day counts on existing rows as suspension windows close, so a cached copy should poll updated_since rather than the release date alone.

Fields that matter

The fields that date the halt and name the issuer.

The headline fields below are a subset. Every field, with exact types and semantics, is documented in the API reference.

FieldTypeWhat it tells you
release_numberstringThe Exchange Act release id (e.g. 34-92362). Shared by every issuer row of one order; the key that collapses rows back to one SEC action
datestringRelease date, the dataset's point-in-time column and the target of the date filters
issuer_namestringThe suspended entity as the order names it. The only identifier present on every row
tickerstringTicker symbol where the order states one; NULL otherwise
cikstringSEC entity id. The survivorship-proof identifier for dead shells whose tickers get reused
cited_reasonstringWhy the SEC suspended trading, normalized to delinquent_filings, market_manipulation, accuracy_adequacy_of_information, or other
cited_reason_detailstringShort verbatim phrase from the order, carrying nuance the four-value taxonomy cannot
suspended_atstringThe date trading stopped, paired with suspension_start_time_et (09:30 for most, 04:00 for modern manipulation orders)
resumption_atstringThe first NYSE session trading may legally resume
has_resumedinteger0/1: whether the suspension window is over as of today. 0 flags names halted right now
issuer_countintegerHow many issuers the release names. Separates single-name orders from bulk delinquency sweeps
order_urlstringDirect link to the SEC order document, for primary-source verification
Query it in one call

One call returns the order, the window, and the resumption date.

One key works across the REST API, the hosted MCP server, and this dashboard. Every response is JSON with a { count, data } envelope.

Python
import requests

url = "https://api.alphanume.com/v1/market-structure/sec-suspensions"
params = {
    "cited_reason": "market_manipulation",
    "date_gte": "2020-01-01",
    "api_key": "alp_abc123"
}

r = requests.get(url, params=params)
print(r.json())
cURL
curl "https://api.alphanume.com/v1/market-structure/sec-suspensions?cited_reason=market_manipulation&date_gte=2020-01-01&api_key=alp_abc123"
Example response
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "data": [
    {
      "record_id": "34-103412#0",
      "release_number": "34-103412",
      "date": "2026-06-11",
      "issuer_name": "Meridian Bio Innovations, Inc.",
      "ticker": "MRBI",
      "cik": "1874550",
      "listing_venue": "OTC Link",
      "issuer_index": 0,
      "issuer_count": 1,
      "cited_reason": "market_manipulation",
      "cited_reason_detail": "questions regarding recent unusual and unexplained market activity in the company's stock",
      "suspended_at": "2026-06-12",
      "suspension_start_time_et": "04:00",
      "suspension_end_at": "2026-06-25",
      "suspension_end_time_et": "23:59",
      "resumption_at": "2026-06-26",
      "suspension_business_days": 10,
      "days_to_resumption": 14,
      "has_resumed": 1,
      "order_url": "https://www.sec.gov/litigation/suspensions/2026/34-103412.pdf",
      "see_also_url": "https://www.sec.gov/litigation/suspensions/2026/34-103412-o.pdf",
      "last_updated": "2026-06-26 12:10:04"
    }
  ]
}
Honest limitations

What this data does not claim.

  • ticker is NULL on rows where the order states no symbol, and cik is sparse before roughly 2016. issuer_name is the only identifier present on every row.
  • cited_reason is the SEC's stated reason, normalized to four values. It reflects what the order says, not a judgment about what actually happened.
  • Multi-issuer orders are exploded, so row counts run far above order counts. Deduplicate on record_id or on (release_number, issuer_index), never on release_number alone.
  • The SEC's suspension output collapsed after 2021, so recent years hold only a handful of orders. An empty recent window is normal, not missing data.
Common questions

Asked by researchers, answered plainly.

Is a trading suspension the same as a halt or a delisting?

No. An exchange halt is a short pause imposed by the listing venue, often minutes to hours, usually around news or an order imbalance. A 12(k) suspension is an SEC order that stops trading everywhere at once, for up to 10 business days, on an exchange or over the counter. Neither one is a delisting.

What happens to a stock after a suspension ends?

Rule 15c2-11 bars broker-dealers from publishing quotations until a market maker requalifies the security, which can take far longer than the suspension itself. For an OTC name with no market maker willing to do that work, the end of the window is the end of the story.

Can I tell which stocks were suspended on a given date?

Yes, two ways. has_resumed=0 lists the names under an active suspension today. For any past date, active_on returns the rows whose window covers that day, which is how you drop untradeable names from a backtest universe without hand-building a halt calendar.

How far back does the SEC trading suspension data go?

Coverage starts on 1995-10-13, where the SEC's own public suspensions index begins. Orders issued before that date exist but were never published in an indexed form, so they are out of scope rather than missing.

Start querying

Free to evaluate. Full history with Pro.

A free key returns a rolling 30-day window of delayed data, enough to test the workflow end to end. Pro unlocks the full point-in-time history, real-time access, and every standard dataset as it launches.