SEC Form D · private-market data
Every U.S. private capital raise, as clean JSON.
Form D filings — seed rounds, growth equity, private funds — pulled from EDGAR, parsed out of nested XML, deduped across amendments, enriched, and served through one modern API. Query the history or get a signed webhook the moment a raise is filed.
# operating companies (no funds) raising for the first time curl -s "https://raisewire.dev/v1/filings?exclude_funds=true&is_first_raise=true&min_offering=1000000&order=-latest_filed_date" \ -H "Authorization: Bearer $RAISEWIRE_KEY"
{ "count": 50, "next_offset": 50, "results": [{ "issuer_name": "Nimbus Robotics Inc.", "issuer_cik": "0001999999", "sector": "Technology", "total_offering_amount": 8000000, "total_amount_sold": 5250000, "amount_sold_pct": 0.6563, "is_first_raise": true, "issuer_raise_number": 1, "federal_exemptions": ["06b"], "date_of_first_sale": "2026-08-15", "amendment_count": 0, "latest_filed_date": "2026-08-27" }] }
What you get
The parsing, dedup, and enrichment you'd otherwise build and babysit.
Form D is public. Making it usable isn't. Raisewire does the unglamorous part once.
Deduped & canonical
One row per raise. D/A amendments fold into the original with an amendment_count, keyed on the SEC file number.
Enriched, not just relayed
Coarse sector bucket, amount_sold_pct, and is_first_raise / issuer_raise_number from the issuer's full filing history.
Real-time webhooks
A signed POST minutes after EDGAR indexes a matching raise. Server-side filters by sector, size, or fund-vs-operating so you only get what matters.
Full history & search
Filter by industry, sector, state, offering size, amount sold, amendment status, and date. Paginated, sortable, boring in the good way.
Related persons
Executives, directors, and promoters named on each filing, with roles — resolvable back to the issuer and every raise they've touched.
Honest provenance
Data is U.S. government work, public domain, freely redistributable. Every record links back to its primary_doc.xml on sec.gov.
Quickstart
A working integration in five minutes.
Grab a free key below, then:
# latest raises, funds excluded, biggest first curl -s "https://raisewire.dev/v1/filings?exclude_funds=true&order=-total_offering_amount" \ -H "Authorization: Bearer $RAISEWIRE_KEY" | jq '.results[0]'
import requests r = requests.get( "https://raisewire.dev/v1/filings", params={"exclude_funds": True, "is_first_raise": True, "min_offering": 1_000_000}, headers={"Authorization": f"Bearer {KEY}"}, ) for f in r.json()["results"]: print(f["issuer_name"], f["sector"], f["total_offering_amount"])
const res = await fetch( "https://raisewire.dev/v1/filings?exclude_funds=true&min_sold=5000000", { headers: { Authorization: "Bearer " + KEY } } ); const { results } = await res.json(); console.table(results.map(f => ({ name: f.issuer_name, sold: f.total_amount_sold })));
# register once curl -X POST "https://raisewire.dev/v1/webhooks" -H "Authorization: Bearer $RAISEWIRE_KEY" \ -d '{"url":"https://you.example/hook","filter_exclude_funds":true,"filter_min_offering":1000000}' # then verify each delivery (Python) import hmac, hashlib digest = "sha256=" + hmac.new(SECRET.encode(), request.body, hashlib.sha256).hexdigest() assert hmac.compare_digest(digest, request.headers["X-Raisewire-Signature"])
/v1/filings?sector=Technology&is_first_raise=true&order=-total_offering_amount
First-ever raises in tech, biggest first — a clean new-company pipeline./v1/filings?exclude_funds=true&min_sold=5000000&filed_since=2026-09-01
Operating companies that have already closed $5M+ this month./v1/issuers/0001999999/filings
Every raise a given issuer has ever filed, oldest to newest.Pricing
Start free. Scale when the data earns its keep.
Free
- 500 requests / month
- Full history & every filter
- 1 webhook
Starter
- 20,000 requests / month
- 5 real-time webhooks
- Email support
Pro
- 200,000 requests / month
- 25 webhooks + bulk export
- Priority support
Paid plans go live shortly. Grab a free key now — you'll be first to hear.
Get a free API key
One key per email. 500 requests a month, no card, no wait.
Questions
Where does the data come from?
Every record is parsed directly from a company's Form D primary_doc.xml on SEC EDGAR. It's U.S. government work — public domain — so you can store and redistribute it. Raisewire adds the pipeline, the dedup, the enrichment, and the uptime.
How fresh is it?
Every 15 minutes a poller runs EDGAR's full-text search for the last few days and ingests anything new or amended. EDGAR itself indexes a filing within roughly 10–30 minutes of acceptance, so a raise typically lands in Raisewire — and in your webhook — under an hour after it's filed. A nightly pass also reconciles against EDGAR's complete daily index so nothing slips through.
Why exclude funds?
About two-thirds of all Form D filings are pooled investment funds rather than operating companies. If you're tracking startups or M&A signal, exclude_funds=true removes the noise in one parameter.
Is this investment advice?
No. Raisewire is a data API. Nothing here is a recommendation to buy, sell, or hold anything.