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
Nomad.Dev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
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. 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 and used to keep each basket's delta history separate. |
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. |
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; 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) |
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 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.
- 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,"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": []}
isNew (delta mode) is added on top of this shape when that input is on.
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 (echoed onto every record) and, in delta mode, to keep each basket's "already-seen" history separate — so two scheduled watchlists on this same Actor never mask each other's new filings.
{"mode": "all","watchlist": ["ClimateRock", "AlphaVest", "0001903392"],"watchlistName": "Active de-SPACs","onlyNewSinceLastRun": true}
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, and is namespaced by
watchlistNameso separate baskets keep independent histories.
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, and in delta mode you only pay for filings you haven't already seen.
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.