Obscura

M&A Tender Offers and Merger Proxies

Tender offers, going-private transactions, merger proxies and deal registration statements - SC TO, SC 14D9, SC 13E3, S-4/F-4 and PREM/DEFM proxies - one row per filing with both sides of the deal, the registration it is filed on, and the deal's own stated transaction value where the filer tagged a filing-fee exhibit.

edgar_deal_events - the dataset name to pass to the Obscura API.

Category Regulatory Columns 34 Refresh Every 6 hours Entity key subject_cik Point-in-time available_date

What one row means

One **merger / change-of-control document** filed on EDGAR: a registration of the securities issued in a business combination (`S-4`, `F-4`), a tender offer (`SC TO-T`, `SC TO-I`, `SC TO-C`), the target board's response to one (`SC 14D9`, `SC14D9C`), the proxy or information statement that puts a merger to a vote (`PREM14A`, `DEFM14A`, `PREM14C`, `DEFM14C`), or a going-private transaction (`SC 13E3`). These are LOW-COUNT, HIGH-SIGNAL. Measured over two full quarters (2015 Q2 and 2024 Q2 `form.idx`): **4,608 index rows carrying 1,901 distinct submissions**, i.e. ~950 per quarter and ~3,800 a year, against 70,018 Rule 425 communications since 2015. A `PREM14A` is routinely the FIRST detailed public document on a deal - ahead of the definitive proxy - and tender offers (`SC TO-T` + `SC 14D9`) are an entire deal category with no coverage at all today. **The header shape is BIMODAL, and the schema says which one a row is rather than averaging them.** The Williams Act schedules name two parties - `SUBJECT COMPANY:` (the target) and `FILED BY:` (the offeror) - so the row is a dated, directed offeror → target edge, exactly like a Rule 425 communication. The registration statements and merger proxies name **only their own registrant**: verified live on `0001104659-24-045287` (Asure Software `S-4`), `0001193125-24-095515` (Catalent `DEFM14A`), `0001193125-24-096376` (Landos `PREM14A`) and `0001193125-24-095445` (Agiliti `DEFM14C`) - every one carries `FILER:` blocks and **no** `SUBJECT COMPANY:` block at all. `party_structure` states which shape the row is, and the counterparty of a registrant-only row is recovered by JOINING on `registration_file_number`, never by guessing. See `docs/datasets/edgar_deal_events.md`.

One row per One row per deal document, keyed by its ACCESSION. The key is the accession and NOT the archive path because EDGAR indexes one submission under one path PER associated CIK, and this family fans out further than any other: measured over 2015 Q2 + 2024 Q2, 4,608 index rows carry only 1,901 distinct submissions, and ONE S-4 (0001571049-15-002892, Yuba Aviv L.L.C.) appears under 500 separate co-registrant paths. SC TO-T and SC TO-T/A are 2.00 rows per accession every time - the offeror's path and the subject's - while SC 14D9, SC TO-I and DEFM14A are exactly 1.00. Keying on the path would store one guarantor-heavy S-4 as 500 rows and every genuine tender-offer edge twice..

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 edgar_deal_events: filing_join: available_date is the EDGAR DISSEMINATION day, taken from the bronze object's own day partition, never from the header's FILED AS OF DATE. These documents carry no embargo - a deal filing is public the day EDGAR disseminates it - but the header's legal filing date is NOT that day, measured in BOTH directions inside this family: accession 0001838126-24-000032 (HPS Corporate Lending Fund, SC TO-I) is stamped FILED AS OF DATE 20240501 and appears in master.20240502.idx and in NEITHER master.20240430.idx NOR master.20240501.idx, so dating it from the header is a one-day look-ahead; accession 0001096199-15-000039 (Geeknet, SC 14D9) was accepted 2015-05-26 17:48:15 after the daily cutoff and SEC rolled its legal date FORWARD to 20150527.

Refresh cadence

Obscura refreshes edgar_deal_events every 6 hours - 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 - 34 columns

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

ColumnTypeDescription
accessiontext · not nullPK. SEC accession number of the submission, e.g. `0001104659-24-041703`. The key is the accession, not the archive path: EDGAR lists a two-party Schedule TO under the offeror's CIK path AND the subject's, and a co-registered `S-4` under one path per guarantor - up to 500 of them on a single accession.
filenametext · not nullThe FILING party's SEC EDGAR Archives path for this submission (`edgar/data/{filer_cik}/{accession}.txt`), derived from the payload's own filing-party CIK rather than from whichever index row was walked - so it is the same value on every ingestion path. The join key into `edgar_filings`.
available_datedatePublic availability date: the EDGAR DISSEMINATION day, recovered from the bronze object's day partition. A deal filing IS a publication, so this is both when it happened and when it could be read; it is the point-in-time anchor and the only date a backtest may key on.
accepted_attimestamp with time zoneWhen SEC ACCEPTED the submission (`<ACCEPTANCE-DATETIME>`), US-Eastern wall clock stored under a UTC type. Deliberately NOT the availability date: an after-cutoff acceptance is disseminated the next business day (`0001096199-15-000039`, accepted 2015-05-26 17:48:15, legally dated 2015-05-27). NULL on a row ingested from the dissemination feed rather than from Archives - the feed's PDS envelope does not carry this stamp, so a NULL here is a fact about the envelope and not a decoder gap.
filed_as_ofdateSEC's LEGAL filing date for the submission (`FILED AS OF DATE`), which is what a Williams Act or proxy-rule deadline means by "filed". Kept for parity with `edgar_filings`; never an availability date - SEC both back-dates it (measured one day on `0001838126-24-000032`) and rolls it forward past an after-cutoff acceptance (measured on `0001096199-15-000039`).
form_typetext · not nullThe EDGAR form type literal, verbatim: `S-4`, `S-4/A`, `S-4MEF`, `F-4`, `F-4/A`, `F-4MEF`, `SC TO-T`, `SC TO-T/A`, `SC TO-I`, `SC TO-I/A`, `SC TO-C`, `SC 14D9`, `SC 14D9/A`, `SC14D9C`, `SC 13E3`, `SC 13E3/A`, `PREM14A`, `DEFM14A`, `PREM14C`, `DEFM14C`. Note that `SC14D9C` has no space and the other `SC ` forms do - SEC's own spelling, preserved rather than normalised.
document_kindtext · not nullWhat KIND of deal document this is, derived from `form_type` alone and therefore never guessed: `merger_registration` (S-4/F-4 - the securities issued as consideration), `tender_offer_third_party` (SC TO-T - an outside bidder), `tender_offer_issuer` (SC TO-I - the company bidding for its OWN shares), `tender_offer_communication` (SC TO-C), `target_response` (SC 14D9 - the board's recommendation), `target_response_communication` (SC14D9C), `merger_proxy` (PREM14A/DEFM14A/PREM14C/DEFM14C), `going_private` (SC 13E3). **`tender_offer_issuer` is NOT a change of control** and is flagged distinctly for that reason - 276 of the 677 Schedule TO filings measured over the two probed quarters are `SC TO-I`, and the population is dominated by closed-end-fund and BDC periodic repurchase offers (PIMCO, Aetos, HPS, Audax, Hamilton Lane) plus corporate self-tenders and split-off exchange offers (Cummins/Atmus).
stagetext · not nullWhere in the deal's document sequence this filing sits, derived from `form_type` alone: `preliminary` (PREM14A/PREM14C - filed before SEC review, routinely the FIRST detailed public document on a deal), `definitive` (DEFM14A/DEFM14C - the version actually mailed to holders), `pre_commencement` (SC TO-C/SC14D9C - written material published before the offer formally begins), `as_filed` (everything else). Amendment status is carried separately by `is_amendment` so the two facts never have to be untangled from one string.
is_amendmentboolean · not nullTRUE when `form_type` ends in `/A` - an amendment to an earlier filing of the same family rather than a new one. The COMMON case for tender offers: 401 of 677 Schedule TO filings and 282 of 368 `SC TO-T` filings measured over the two probed quarters are amendments, because a tender offer is amended on every extension and every price change. Derived, and the derivation is enforced by a CHECK rather than trusted.
party_structuretext · not nullWhich parties the SGML header actually names, stated structurally so a consumer never has to infer it: `counterparty` (a `SUBJECT COMPANY:` block and a `FILED BY:` block naming DIFFERENT CIKs - a genuine offeror → target edge), `self_filed` (both blocks naming the SAME CIK - an issuer self-tender, or a target responding about itself), `registrant_only` (NO `SUBJECT COMPANY:` block at all - every S-4/F-4 and every merger proxy), `subject_only` (a subject named with no identified filing party). Derived from the CIK pair, and the derivation is enforced by a CHECK.
subject_cikbigintCentral Index Key of the company the filing is ABOUT - the TARGET of a tender offer, the company being taken private, the issuer repurchasing its own shares. From the header's `SUBJECT COMPANY:` / `<SUBJECT-COMPANY>` block. **NULL on every S-4, F-4 and merger proxy**, because those submissions carry no such block; that is a fact about the form, not a gap, and `party_structure` says so.
subject_nametextSubject company name as EDGAR conforms it, e.g. `Inland Real Estate Income Trust, Inc.`.
subject_sic_codeintegerThe SUBJECT company's SIC code, read from its own header block - the industry of the thing being acquired. An unscoped read of the header would return the same code for both parties on a two-party filing and silently record the acquirer as being in the target's industry.
subject_state_of_incorporationtextSubject's domicile from its own header block, e.g. `DE`, `MD`, `C9` (Belgium), `E9` (Cayman). The offshore codes are what identify a cross-border or inversion structure.
subject_file_numbertextThe subject's SEC file number on this filing. On a Williams Act schedule this is the `005-` TENDER OFFER file number (`005-90261`), which is the stable per-target key that links every `SC TO-T`, `SC TO-T/A` and `SC 14D9` of one offer together. `001-`/`000-` (Exchange Act listing) and `811-` (Investment Company Act) also occur.
filer_cikbigintCentral Index Key of the party that FILED the document - the OFFEROR on an `SC TO-T`, the registrant issuing the consideration securities on an `S-4`, the company soliciting the vote on a merger proxy, the target itself on an `SC 14D9`. From `FILED BY:` / `<FILED-BY>`, falling back to the general `FILER:` block that single-party submissions use instead.
filer_nametextName of the filing party as EDGAR conforms it, e.g. `COMRIT INVESTMENTS 1, LIMITED PARTNERSHIP`.
filer_sic_codeintegerThe FILING party's SIC code, read from its own header block. NULL when that block states none, which really happens on investment vehicles and foreign filers.
filer_state_of_incorporationtextThe filing party's domicile from its own header block.
filer_file_numbertextThe filing party's SEC file number. On an `S-4` this is the `333-` SECURITIES ACT REGISTRATION the deal registers on (`333-278589`) - the key that links the registration statement to every Rule 425 communication about the same deal.
registration_file_numbertextThe `333-` Securities Act registration this filing belongs to - the filer's own number when it is one (every `S-4`/`F-4`), else the subject's, else NULL. **This is how the counterparty of a registrant-only row is recovered**: `edgar_merger_communications.registration_file_number` carries the same number on every Rule 425 communication about the same deal, so joining on it names the other side from a document that DOES state both parties, rather than guessing one out of prose. Derived, and the derivation is enforced by a CHECK.
group_membersjsonb · not nullJSON array of the names in the header's `GROUP MEMBERS:` lines - the members of the bidding or buyout group who are party to the filing but do not have their own header block. **NAMES ONLY: EDGAR states no CIK for a group member**, so these are unresolved strings and must not be treated as identifiers. This is where the real buyers of a going-private hide: `0001144204-15-030844` (deltathree `SC 13E3`) is filed by the TARGET about itself, so the party pair is degenerate, and `D4 ACQUISITION, INC.` and `D4 HOLDINGS, LLC` appear only here. Empty array when the header names none.
group_member_countinteger · not nullNumber of `GROUP MEMBERS:` names on the filing (0, 1 for the Gilead/CymaBay merger sub, 2 for the deltathree buyout vehicles). A non-zero value on a `self_filed` row is the signal that the real counterparty is in `group_members` rather than in `filer_cik`.
co_registrant_ciksjsonb · not nullJSON array of `{cik, name, file_number}` for the SECOND and subsequent `FILER:` blocks - the guarantor subsidiaries co-registering a business-combination shelf. Empty on a two-party Williams Act schedule, which uses `SUBJECT COMPANY:`/`FILED BY:` and has no `FILER:` block at all.
co_registrant_countinteger · not nullNumber of co-registrants beyond the primary one. Usually 0, but this family has the most extreme fan-out on EDGAR: 60 on `0001193125-24-151983` (WBP Leasing) and 499 on `0001571049-15-002892` (Yuba Aviv). It is the guard against fanning one registration statement into 500 rows, and a cheap proxy for a guaranteed-debt exchange offer as opposed to a corporate merger.
references_429textThe earlier registration this statement folds into under Securities Act Rule 429 (`REFERENCES 429:` in the header, e.g. `333-254140`) - a combined prospectus covering securities registered on a previous statement as well. Present only on registration statements, and NULL on the Williams Act schedules and proxies, which have no such concept.
document_countintegerNumber of documents in the submission (`PUBLIC DOCUMENT COUNT:`) - a size/complexity proxy: 1 for a bare `SC 13E3` cover, 15 for a Schedule TO with its offer to purchase, letter of transmittal and eight images.
exhibit_typesjsonb · not nullOrdered JSON array of the submission's document types, e.g. `["S-4","EX-5.1","EX-23.1","EX-FILING FEES","GRAPHIC"]`. The manifest is kept; the bodies are NOT - a merger proxy runs to 1.5-22 MB of prose and images (measured: `0001213900-24-013589`, 21.9 MB) against ~1 KB of signal per row.
has_transaction_agreementboolean · not nullTRUE when an `EX-2.x` (merger / business-combination / purchase agreement) rides on the submission - the filing publishes the EXECUTED deal document rather than describing it.
has_filing_fee_exhibitboolean · not nullTRUE when the submission carries an `EX-FILING FEES` document - SEC's Exhibit 107 "Calculation of Filing Fee Tables", a structured cover-page table rather than prose. This is a HEADER-ONLY fact (it is read off the document manifest) and is therefore total and exact, which is what makes it the honest gate on the three monetary columns below: measured present on 5 of 5 sampled 2024 filings and 0 of 3 sampled 2015 filings, so those columns are populated on the modern era and NULL before it.
transaction_valuationnumeric**The deal's own stated size, in USD**, from the `Total Transaction Valuation` line of the `EX-FILING FEES` exhibit - the value SEC's filing fee is computed on under Exchange Act Rule 0-11. Read ONLY from that labelled line in that document type, so it is the filer's own number and not an inference: `$17,010,000` on the Comrit / Inland REIT tender offer, `$1,379,088,054.30` on the Cummins/Atmus split-off exchange offer, `$214,409,599` on the Landos merger proxy. NULL - deliberately, and NULL beats a wrong number - whenever the submission carries no `EX-FILING FEES` document (everything before Exhibit 107 existed), whenever that exhibit states no such line (**every S-4 and F-4**, whose fee table states a `Total Offering Amount` instead - a different quantity, kept in its own column), and whenever the line carries no `$` amount.
offering_amountnumeric**NOT a deal value.** The `Total Offering Amount` line of a registration statement's `EX-FILING FEES` exhibit - the maximum aggregate price of the SECURITIES BEING REGISTERED as consideration, which is a floor on the equity leg of a stock deal and says nothing about cash, debt assumed or the target's total value. `$95,562,500` on the Asure Software `S-4`. Kept in a separate column from `transaction_valuation` precisely because collapsing the two would publish a registered-share amount as a transaction size.
filing_feenumericThe fee SEC charged for the filing, in USD, from the `Total Fees Due for Filing` line of the same exhibit. Useful as a cross-check on `transaction_valuation`: the two are related by the published annual fee rate (`0.00014760` for FY2024), so a row where the ratio is off is a parse to distrust.
primary_descriptiontextThe filer's own label for the primary document (`<DESCRIPTION>` on sequence 1), e.g. `SCHEDULE TO-T`, `FORM SC TO-C`, `S-4`. Free text and NOT a controlled vocabulary - useful as a document-kind hint only, since `document_kind` above is derived from the form type instead.

Access edgar_deal_events

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="edgar_deal_events",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 122 datasets

Frequently asked questions

What is in the edgar_deal_events dataset?

Tender offers, going-private transactions, merger proxies and deal registration statements - SC TO, SC 14D9, SC 13E3, S-4/F-4 and PREM/DEFM proxies - one row per filing with both sides of the deal, the registration it is filed on, and the deal's own stated transaction value where the filer tagged a filing-fee exhibit. One **merger / change-of-control document** filed on EDGAR: a registration of the securities issued in a business combination (`S-4`, `F-4`), a tender offer (`SC TO-T`, `SC TO-I`, `SC TO-C`), the target board's response to one (`SC 14D9`, `SC14D9C`), the proxy or information statement that puts a merger to a vote (`PREM14A`, `DEFM14A`, `PREM14C`, `DEFM14C`), or a going-private transaction (`SC 13E3`). These are LOW-COUNT, HIGH-SIGNAL. Measured over two full quarters (2015 Q2 and 2024 Q2 `form.idx`): **4,608 index rows carrying 1,901 distinct submissions**, i.e. ~950 per quarter and ~3,800 a year, against 70,018 Rule 425 communications since 2015. A `PREM14A` is routinely the FIRST detailed public document on a deal - ahead of the definitive proxy - and tender offers (`SC TO-T` + `SC 14D9`) are an entire deal category with no coverage at all today. **The header shape is BIMODAL, and the schema says which one a row is rather than averaging them.** The Williams Act schedules name two parties - `SUBJECT COMPANY:` (the target) and `FILED BY:` (the offeror) - so the row is a dated, directed offeror → target edge, exactly like a Rule 425 communication. The registration statements and merger proxies name **only their own registrant**: verified live on `0001104659-24-045287` (Asure Software `S-4`), `0001193125-24-095515` (Catalent `DEFM14A`), `0001193125-24-096376` (Landos `PREM14A`) and `0001193125-24-095445` (Agiliti `DEFM14C`) - every one carries `FILER:` blocks and **no** `SUBJECT COMPANY:` block at all. `party_structure` states which shape the row is, and the counterparty of a registrant-only row is recovered by JOINING on `registration_file_number`, never by guessing. See `docs/datasets/edgar_deal_events.md`.

How do I avoid look-ahead bias with edgar_deal_events?

Filter on edgar_deal_events.available_date, the day the publisher made the row public. For this dataset that date is derived as follows - filing_join: available_date is the EDGAR DISSEMINATION day, taken from the bronze object's own day partition, never from the header's FILED AS OF DATE. These documents carry no embargo - a deal filing is public the day EDGAR disseminates it - but the header's legal filing date is NOT that day, measured in BOTH directions inside this family: accession 0001838126-24-000032 (HPS Corporate Lending Fund, SC TO-I) is stamped FILED AS OF DATE 20240501 and appears in master.20240502.idx and in NEITHER master.20240430.idx NOR master.20240501.idx, so dating it from the header is a one-day look-ahead; accession 0001096199-15-000039 (Geeknet, SC 14D9) was accepted 2015-05-26 17:48:15 after the daily cutoff and SEC rolled its legal date FORWARD to 20150527. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get edgar_deal_events?

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="edgar_deal_events". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_deal_events.

Can I filter edgar_deal_events by company or symbol?

Yes. edgar_deal_events carries subject_cik, the column the API's symbols filter resolves against.

How often is edgar_deal_events updated?

Obscura refreshes edgar_deal_events on a every 6 hours 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 Traders (COT)The CFTC's weekly Commitments of Traders report: how commercial, non-commercial and small traders are positioned in each… EPA Environmental Enforcement ActionsEnvironmental enforcement actions and penalties from the EPA's ECHO database. One row per case, with the facility, the s… EPA Regulated Facilities and ComplianceEPA-regulated facilities and their compliance history, from ECHO: one row per facility, with location, industry, permit … 13F Filing MetadataMetadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. … 13F Institutional HoldingsThe line-item positions inside each 13F: which manager held which security, and how much, each quarter. Deep history is … 13F Other Included ManagersWhich other manager reports a fund's 13F holdings, from the 13F-NT notices managers file when their positions appear on … SEC 8-K Item Codes and Material EventsThe item numbers reported on each 8-K (5.02 officer changes, 2.01 acquisitions, 1.01 material agreements, and so on), so… Asset-Backed Securities Distributions (Form 10-D)Form 10-D distribution reports for asset-backed securities: which trust paid out, for which distribution period, its dep…