SPAC Redemptions Scraper — SEC EDGAR Lifecycle Tracker
Pricing
from $80.00 / 1,000 spac filing results
SPAC Redemptions Scraper — SEC EDGAR Lifecycle Tracker
Track the full SPAC lifecycle on SEC EDGAR for merger-arbitrage and de-SPAC research: blank-check S-1 IPOs, Rule 425 merger comms, DEFM14A vote proxies with parsed meeting dates, and 8-K redemptions with redeemed shares, $/share and trust withdrawals. Never guesses a number — no login.
Pricing
from $80.00 / 1,000 spac filing results
Rating
0.0
(0)
Developer
NomadDev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Claude / Codex skill to describe and setup this actor: SKILL.md
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 and compare snapshots downstream.
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. Ignored when watchlist is set. |
watchlist | string[] | (empty) | Named basket of SPACs to track — one company name, ticker or CIK per entry. Each lifecycle search runs once per entry, sharing the maxItems budget; a filer matched under both its name and ticker is emitted once. Takes precedence over entity. See Watchlists. |
watchlistName | string | (empty) | Label for the basket — echoed into every record as watchlistName. |
fromDate | date | (empty) | Only filings filed on/after this date. Set one bound and the other is filled in for you (earliest = 2001, latest = today). |
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. |
maxItems | integer | 100 | Hard cap on filings returned per run (1–2000; out-of-range values are clamped). You get the newest filings in the window: EDGAR's own search ranks by keyword relevance, so the Actor scans the whole window and sorts by filing date before applying this cap. |
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" |
watchlistName | The watchlistName input echoed onto the record, or null when none was set |
eventType | ipo_filing | merger_communication | merger_vote_proxy | redemption_disclosure (or diagnostic on the single unbilled row emitted if a run errors) |
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) |
redeemedSharesCandidates | When one 8-K states several rival share counts (e.g. it covers two meetings), redeemedShares stays null and every candidate is listed here as a number — so you can reconcile them without re-parsing the document (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) |
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 narrow to a single entity (one SPAC) or a watchlist (a named basket of SPACs — see Watchlists), and a date range.
- Leave Parse filing text on to get the structured numbers, not just filing metadata.
- Put the Actor on a daily schedule and compare snapshots downstream to identify new SPAC events — 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,"redeemedSharesCandidates": [],"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": []}
Watchlists
Set a Watchlist (watchlist) to track a fixed basket of SPACs instead of a single filer or the whole market. Add one company name, ticker or CIK per entry:
- Each lifecycle search runs once per entry, sharing the single
maxItemsbudget. - A filer that matches under more than one entry (e.g. its name and its ticker) is de-duplicated — one record per filing.
- The watchlist takes precedence over
entity. - Give it a Watchlist name (
watchlistName) to label the output; it is echoed onto every record.
{"mode": "all","watchlist": ["ClimateRock", "AlphaVest", "0001903392"],"watchlistName": "Active de-SPACs"}
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.01 per Actor start and $0.08 per filing returned. 50 filings ≈ $4.01. No subscription — pay only for what you fetch. Filters let you narrow the filings returned and billed.
A SPAC database subscription starts around $275/month whether or not anything was filed that week. There are roughly a dozen redemption 8-Ks in a typical month — monitoring them here costs about a dollar.
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.