Alphanume

Insights

De-SPAC Events API for Post-Merger Research

Alphanume Team · August 14, 2026

Query completed de-SPAC transactions by disclosure date, preserve the actual closing and trading dates, then freeze a point-in-time cohort before measuring post-merger outcomes.

A de-SPAC events API should identify completed business combinations, not announced SPAC deals that may never close. Alphanume's De-SPAC Events dataset records confirmed completions derived from SEC filings, usually the closing 8-K and its related filing trail. Each row supplies a post-combination ticker, source filing, completion evidence, identity fields, listing dates, and transaction economics when the filings explicitly support them.

That contract makes the dataset useful for post-merger research, but the event is not a trade signal. A completed combination can lead to positive, negative, or flat returns. The API gives the cohort and timing evidence needed to test a hypothesis without starting from today's surviving de-SPAC names.

Choose the correct event clock

Field

What it records

Research use

date

Filing date of the completion disclosure

Primary point-in-time observation date

closing_date

Date the business combination closed

Economic completion anchor when explicitly disclosed

trading_commencement_date

First stated date under the new listing

Candidate first tradable post-close date

effective_date

Registration or listing effective date

Separate legal milestone, not a substitute for closing

filing_url

SEC source used to identify the event

Primary-source verification

These dates can differ. The served date can occur shortly after trading begins because it reflects the filing date of the closing disclosure. A post-close return window should use a rule written before prices are loaded, such as the first complete session after trading_commencement_date. If that field is null, route the row to manual review rather than inventing a date from the filing.

Retrieve completed transactions by date range

The endpoint is GET /v1/de-spac-events. It accepts an exact date or the standard range filters. The example below requests one fixed quarter and reads credentials from the environment.

import os
import requests

response = requests.get(
    "https://api.alphanume.com/v1/de-spac-events",
    headers={"X-API-Key": os.environ["ALPHANUME_API_KEY"]},
    params={
        "date_gte": "2026-01-01",
        "date_lte": "2026-03-31",
    },
    timeout=30,
)
response.raise_for_status()
events = response.json()["data"]

The response envelope contains count and data. Results are ordered by date descending. The De-SPAC Events guide covers practical applications, while the API field reference defines the enriched identity and economics fields. Any enriched field can be null when no source filing explicitly supported it. Null is not zero.

Join point-in-time size without moving the event

A size-conditioned study can join each post-combination ticker to Historical Market Cap, though the new ticker should never search backward into dates before the combined company traded. Start on the later of the disclosure filing date and trading_commencement_date, then choose the earliest supported observation inside a bounded post-start window. Retain the source dates and every failed match.

from datetime import timedelta
import pandas as pd

event_rows = []
for event in events:
    filing_date = event.get("date")
    first_trade = event.get("trading_commencement_date")
    ticker = event.get("ticker")

    if filing_date is None or first_trade is None or ticker is None:
        event_rows.append({
            "event": event,
            "market_cap_row": None,
            "match_status": "missing filing date, first trade, or ticker",
        })
        continue

    search_start = max(pd.Timestamp(filing_date), pd.Timestamp(first_trade))
    search_end = search_start + timedelta(days=10)

    cap_response = requests.get(
        "https://api.alphanume.com/v1/historical-market-cap",
        headers={"X-API-Key": os.environ["ALPHANUME_API_KEY"]},
        params={
            "ticker": ticker,
            "date_gte": search_start.date().isoformat(),
            "date_lte": search_end.date().isoformat(),
        },
        timeout=30,
    )
    cap_response.raise_for_status()
    cap_rows = sorted(cap_response.json()["data"], key=lambda row: row["date"])
    market_cap_row = cap_rows[0] if cap_rows else None
    event_rows.append({
        "event": event,
        "market_cap_row": market_cap_row,
        "match_status": "matched" if market_cap_row else "no supported row in window",
    })

The 10-calendar-day request is a bounded retrieval window, and the code selects its earliest supported observation. Validate that the returned date is on or after the declared start, then keep unmatched events as a missing-size cohort. Broader market-cap cohort analysis belongs in a separate research specification so the API cohort remains centered on completed transactions and their identity clocks.

Define the post-close outcome separately

De-SPAC Events does not include subsequent stock returns, bid-ask spreads, borrow availability, delisting returns, or execution costs. Obtain prices from a separately timed source and write the outcome window explicitly. A useful first design can measure close-to-close returns over 1, 5, 20, and 60 sessions after the first eligible trading session, while retaining delisted names and documenting corporate-action adjustments.

Transaction fields such as redemption_shares, trust_remaining_usd, pipe_amount_usd, and pro_forma_shares_outstanding can support conditioning variables. They cannot be assumed complete. A complete-case filter can become a disclosure-quality screen, so report the null rate for each field before comparing returns.

Avoid the common cohort failures
  • Announcement leakage. Include completed combinations only, and do not anchor the cohort to an earlier rumor or definitive-agreement date unless that is a separate study.
  • Ticker leakage. Preserve the post-combination ticker and source identity fields rather than rebuilding history from a current ticker list.
  • Date collapse. Keep filing, closing, effective, and trading-commencement dates distinct.
  • Missing economics. Do not fill undisclosed redemption or PIPE values with zero.
  • Universal-return claims. Report the observed sample and window instead of asserting that every SPAC underperforms.

Free access supplies the trailing 20 trading sessions after a one-trading-session delay. That window is enough to validate a current query but not a long post-merger study. Sparse completion periods can also produce few rows without indicating an outage.

Freeze one quarter before scaling

Export one quarter of raw event responses, an as-of market-cap match table, an exclusions report, and a cohort file with the chosen post-close anchor. Manually verify five filing URLs and every row with conflicting dates. Only then attach the predefined return windows. The existing de-SPAC research framework provides related context, but the API cohort should remain neutral until the measured outcomes are complete.