SPAC Redemptions Scraper — SEC EDGAR Lifecycle Tracker
Pricing
from $1.50 / 1,000 spac filing results
SPAC Redemptions Scraper — SEC EDGAR Lifecycle Tracker
Track the full SPAC lifecycle from SEC EDGAR: blank-check S-1 IPO filings, Rule 425 merger communications, DEFM14A merger-vote proxies with parsed meeting dates, and 8-K redemption disclosures with redeemed-share counts, per-share price and trust withdrawals. Official public SEC data — no login.
Track the full SPAC lifecycle straight from SEC EDGAR: new blank-check S-1 IPO filings, Rule 425 merger communications, DEFM14A merger-vote proxies (meeting date parsed out of the proxy) and 8-K redemption disclosures (redeemed share count, per-share redemption price and trust-account withdrawal parsed out of the filing). Official public SEC data — no login, no proxies, no API key.
This is the structured SPAC event feed that arbitrage desks, merger-arb analysts and SPAC-tracking products otherwise assemble by hand from EDGAR — or buy as a $300+/month database subscription. Point it at a date range, a single SPAC (by name, ticker or CIK), or run it on a schedule with delta mode to get only new events.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | "redemptions" | Which lifecycle stage to track: ipos (S-1 blank-check filings), mergers (Form 425 communications), votes (DEFM14A proxies), redemptions (8-K redemption disclosures) or all (all four in sequence, sharing one maxItems budget). |
entity | string | (empty) | Filter to one SEC filer — company name (e.g. "AlphaVest"), ticker or CIK. Empty = all SPACs. |
fromDate | date | (empty) | Only filings filed on/after this date. |
toDate | date | (empty) | Only filings filed on/before this date. |
parseFilingText | boolean | true | Fetch each proxy/8-K document and extract meeting date, redeemed shares, price per share and trust withdrawal (see Parsed fields). Applies to votes and redemptions; ipos and mergers records are index metadata only. |
onlyNewSinceLastRun | boolean | false | Only output filings not seen in previous runs with this flag — see Delta mode. |
maxItems | integer | 100 | Hard cap on filings returned per run (1–2000). |
concurrency (Advanced) | integer | 3 | Parallel document fetches when parseFilingText is on (1–5). All SEC requests are rate-spaced internally to respect EDGAR fair-access limits. |
What SPAC data does this scraper extract?
One flat JSON record per filing (one per accession number — exhibit hits are deduplicated). All fields are present on every record; fields that don't apply to an event type, or that could not be extracted with confidence, are null — never guessed.
| Field | Meaning |
|---|---|
id | SEC accession number, e.g. 0001493152-25-014682 — stable and unique per filing |
source | Always "sec-edgar" |
eventType | ipo_filing | merger_communication | merger_vote_proxy | redemption_disclosure |
company | Filer name as registered with the SEC |
cik | SEC CIK, zero-padded 10 digits |
ticker | Primary listed ticker, or null when the filer has none on record |
tickers | All listed tickers (common/rights/units/warrants), possibly empty |
formType | Root form: S-1, 425, DEFM14A or 8-K |
matchedFileType | The specific file the search matched (8-K, EX-99.1, ...) |
filedAt | Filing date YYYY-MM-DD |
accessionNumber | Same as id |
filingUrl | Direct URL of the matched document on sec.gov |
indexUrl | Filing folder on sec.gov (all documents + exhibits) |
redeemedShares | Parsed share count redeemed (redemptions only) |
redemptionPricePerShare | Parsed per-share redemption price in USD (redemptions only) |
trustAmountRemoved | Parsed total USD removed from the trust account (redemptions only) |
hasVoteResults | true when the 8-K contains Item 5.07 vote results (redemptions only) |
meetingDate | Parsed shareholder-meeting date YYYY-MM-DD (votes only) |
excerpt | ≤300-char snippet of the filing text the numbers were read from — verify at a glance |
parse_confidence | "high" / "medium" / "low" — see below; null when text parsing was skipped |
warnings | Human-readable notes on anything ambiguous or unparsed (empty array when clean) |
isNew | true on every pushed record — only present when Only new since last run is on |
Parsed fields & parse confidence
SEC filings state redemption facts in prose. The parser extracts them with strict rules and reports how sure it is:
high— all primary facts for the event type found unambiguously (redemptions: share count and per-share price; votes: one consistent meeting date;ipos/mergers: alwayshigh, the record is index metadata).medium— some facts found; the rest arenullwith awarningsentry.low— nothing recognized; all parsed fieldsnull,warningssays why (unusual phrasing, data in an unfetched exhibit, document fetch failed).
When a filing mentions multiple conflicting values (e.g. per-meeting redemption counts plus a combined total that can't be told apart), the field is left null and the candidates are listed in warnings — the actor never picks a number for you. The excerpt field shows the exact sentence so you can verify in one glance.
How to track SPAC redemptions with this Actor
- Pick a lifecycle stage —
redemptionsfor trust redemptions,votesfor upcoming merger votes,iposfor new blank-check registrations,mergersfor de-SPAC announcements, orall. - Optionally set entity (one SPAC) and a date range.
- Leave Parse filing text on to get the structured numbers, not just filing metadata.
- Turn on Only new since last run and put the actor on a daily schedule to get a clean feed of new SPAC events only — new redemption results land on EDGAR the same day they're filed.
- Run and export JSON, CSV or Excel — or call it over the API:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/spac-redemptions-scraper").call(run_input={"mode": "redemptions","fromDate": "2026-01-01","maxItems": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["filedAt"], item["company"], item["redeemedShares"],item["redemptionPricePerShare"], item["filingUrl"])
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~spac-redemptions-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"mode": "redemptions", "fromDate": "2026-01-01", "maxItems": 50}'
Output example
Real record (live run, June 2026):
{"id": "0001213900-26-053305","source": "sec-edgar","eventType": "redemption_disclosure","company": "ClimateRock","cik": "0001903392","ticker": "CLRCF","tickers": ["CLRCF", "CLRRF"],"formType": "8-K","matchedFileType": "8-K","filedAt": "2026-05-07","accessionNumber": "0001213900-26-053305","filingUrl": "https://www.sec.gov/Archives/edgar/data/1903392/000121390026053305/ea0289583-8k_climate.htm","indexUrl": "https://www.sec.gov/Archives/edgar/data/1903392/000121390026053305/","redeemedShares": 4543,"redemptionPricePerShare": 13.19,"trustAmountRemoved": 59900000.0,"hasVoteResults": true,"meetingDate": null,"excerpt": "...Shareholders holding 4,543 Public Shares exercised their right to redeem such Public Shares for a pro rata portion of the funds in the Trust Account. As a result, approximately $59.9 million (or approximately $13.19 per share) will be removed from the T...","parse_confidence": "high","warnings": []}
isNew (delta mode) is added on top of this shape when that input is on.
Delta mode
Turn on Only new since last run (onlyNewSinceLastRun) to have the Actor remember which filings it has already returned (keyed by event type + accession number) across runs, and skip filings it has already seen.
- Skipped (already-seen) filings are not pushed and not billed — repeat runs only charge for genuinely new events.
- Every filing that is pushed with this flag on is tagged
"isNew": true. - State is kept in a dedicated key-value store (separate from the run's default store) so it persists across scheduled runs.
How the four searches work
Each stage is one EDGAR full-text search using the standard terms of art in SPAC filings, verified against live filings:
| Stage | Form filter | Matches filings containing |
|---|---|---|
ipos | S-1 | "blank check company" |
mergers | 425 | "business combination" |
votes | DEFM14A | "special meeting" + "business combination" |
redemptions | 8-K | "exercised their right to redeem" |
EDGAR full-text search covers filings from 2001 onwards and indexes exhibits too — redemption numbers announced in an EX-99.1 press release attached to an 8-K are found and parsed just the same.
Integrations
Export results as JSON, CSV or Excel, or wire this Actor into Make, Zapier or n8n; call it programmatically with run-sync-get-dataset-items; or use it from AI agents via the Apify MCP server.
Pricing
Pay per event: $0.05 per Actor start and $0.004 per filing returned. 100 filings ≈ $0.45. No subscription — pay only for what you fetch.
Use cases
- SPAC arbitrage: daily feed of redemption results, trust withdrawals and per-share redemption prices
- Merger-arb calendars: upcoming de-SPAC votes with parsed meeting dates
- Deal-flow monitoring: new blank-check S-1 registrations and 425 merger announcements as they hit EDGAR
- Law firms / advisors: track redemption levels and extension votes across the active SPAC universe
- Quant/data teams: replace a $300+/month SPAC database subscription for event-date data you can re-derive from primary sources
FAQ
Is it legal to scrape this data? Yes. SEC filings are public-domain U.S. government records, and this Actor uses the SEC's own public search API and archive URLs, honoring the SEC's fair-access guidance (identified User-Agent, throttled request rate well under the published 10 req/s limit).
Do I need an API key or login? No. All endpoints used are unauthenticated public SEC services.
How fresh is the data? Every run queries EDGAR live. Full-text search indexes new filings within minutes to a few hours of acceptance — same-day for redemption 8-Ks.
Why is a numeric field null when the filing clearly states the number?
The parser only reports values it can extract unambiguously. If a filing states several conflicting counts (common when one 8-K covers two meetings), the field is null and warnings lists the candidates — check excerpt and filingUrl. That's deliberate: no silent guessing.
Does it cover redemptions announced only in press-release exhibits? Yes — EDGAR full-text search indexes exhibits (EX-99.x), and the parser runs on whichever document matched.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and fixes ship fast.