SEC Form D Startup Funding & Private Placement Filings (EDGAR)
Pricing
from $2.10 / 1,000 filings
SEC Form D Startup Funding & Private Placement Filings (EDGAR)
Newly filed SEC Form D private placements from EDGAR: company, industry, amount raised and offered, investors count, issuer address and phone, executives and directors (city/state only). Skips pooled funds; filter by state, industry and size. Fresh funding-round data.
Extract newly filed SEC Form D private placement and startup funding notices directly from the U.S. Securities and Exchange Commission's EDGAR system. Every record is parsed from the official structured primary_doc.xml filing and includes:
- Issuer details: legal entity name, CIK, entity type, jurisdiction & year of incorporation, business street address, and phone number
- Funding round metrics: total offering amount, total amount already sold, remaining amount, minimum outside investment, number of investors, date of first sale, and Regulation D / Investment Company Act exemptions claimed (
06b,06c,3C.1,3C.7, etc.) - Pooled fund filtering: automatically flags and optionally excludes hedge funds, venture capital funds, and private equity funds (
excludePooledInvestmentFunds: trueby default) so B2B sales teams get real operating companies and newly funded startups - Executive & director roster: full names, roles (
Executive Officer,Director,Promoter), and city/state fromrelatedPersonsList(street addresses of related persons are intentionally omitted as they are often private residences)
Found a problem or need a field? Open an issue on the Issues tab; we respond quickly.
Who it's for
- B2B sales, SaaS, cloud, recruiting & agency BD teams using newly filed Form D capital raises as high-intent buying triggers before rounds are announced in tech press
- Venture capital, growth equity & private credit analysts tracking private placements across technology, biotechnology, healthcare, energy, and real estate
- Corporate service providers (accounting, legal, fractional CFO, commercial banking, insurance) reaching newly capitalized companies
Input
All filters are optional. The default input returns up to 200 newly filed Form D operating-company offerings from the past 7 days. secUserAgent is optional: SEC asks automated tools to identify themselves, and if you leave it empty the Actor sends its own contact string.
{"dateFrom": "2026-10-16","dateTo": "2026-10-23","industryGroups": ["Other Technology", "Computers", "Biotechnology"],"excludePooledInvestmentFunds": true,"minOfferingAmountUsd": 500000,"states": ["CA", "NY", "TX"],"includeAmendments": false,"secUserAgent": "Acme Corp ops@acme.com","maxItems": 200}
| Field | Type | Default | Description |
|---|---|---|---|
dateFrom | string (YYYY-MM-DD) | today - 7 days | Start of filing date window. |
dateTo | string (YYYY-MM-DD) | today | End of filing date window. |
industryGroups | array of strings | [] (all) | Case-insensitive match on Form D industryGroupType (e.g. ["Other Technology", "Computers", "Health Care"]). |
excludePooledInvestmentFunds | boolean | true | Exclude pooled investment funds (industry is Pooled Investment Fund, investmentFundInfo is present, or the securities offered are pooled fund interests). |
minOfferingAmountUsd | integer | 0 | Minimum USD amount offered or sold. |
states | array of strings | [] (all) | 2-letter issuer business state codes (e.g. ["CA", "NY"]). |
includeAmendments | boolean | false | Include D/A amendment filings in addition to new D filings. |
secUserAgent | string | "" (Actor default) | Optional SEC Fair Access User-Agent (Organization Name email@domain.com). Leave empty to use the Actor's own contact. |
maxItems | integer | 200 | Maximum number of rows to output. |
Output
| Field | Type | Description |
|---|---|---|
accessionNumber | string | SEC 18-digit accession number with hyphens |
cik | string | 10-digit SEC Central Index Key |
filingDate | string | Filing date (YYYY-MM-DD) |
formType | string | D or D/A |
entityName | string | Primary issuer legal name (a filing whose XML is missing it is skipped, never emitted) |
entityType | string | null | Entity type (Corporation, Limited Liability Company, Limited Partnership, etc.) |
jurisdictionOfIncorporation | string | null | State or country of incorporation |
yearOfIncorporation | string | null | Year of incorporation |
industryGroup | string | null | Form D industry classification |
isPooledInvestmentFund | boolean | true when the industry is Pooled Investment Fund, investmentFundInfo is present, or isPooledInvestmentFundType is true |
totalOfferingAmountUsd | number | null | Total offering amount in USD (null when "Indefinite") |
totalAmountSoldUsd | number | null | Total amount already sold in USD |
totalRemainingUsd | number | null | Total remaining to be sold in USD (null when "Indefinite") |
minimumInvestmentUsd | number | null | Minimum outside investor commitment in USD |
investorsCount | integer | null | Total number of investors who have already invested |
dateOfFirstSale | string | null | Date of first sale (YYYY-MM-DD) |
exemptions | array of strings | Federal exemptions/exclusions claimed (06b, 06c, 3C.1, 3C.7, etc.) |
issuerAddress | object | { street1, street2, city, state, zip } of the issuer |
issuerPhone | string | null | Issuer telephone number |
relatedPersons | array of objects | [{ name, relationships, city, state }] (street addresses omitted) |
filingIndexUrl | string | EDGAR filing folder URL |
xmlUrl | string | Direct URL to primary_doc.xml |
Sample output row
Fictitious example (company, person, address and 555 phone number are made up):
{"accessionNumber": "0009999999-26-000001","cik": "0009999999","filingDate": "2026-10-23","formType": "D","entityName": "Example Analytics Holdings LLC","entityType": "Limited Liability Company","jurisdictionOfIncorporation": "DELAWARE","yearOfIncorporation": "2026","industryGroup": "Other Technology","isPooledInvestmentFund": false,"totalOfferingAmountUsd": 4000000.0,"totalAmountSoldUsd": 4000000.0,"totalRemainingUsd": 0.0,"minimumInvestmentUsd": 50000.0,"investorsCount": 10,"dateOfFirstSale": "2026-10-08","exemptions": ["06b"],"issuerAddress": {"street1": "100 EXAMPLE AVENUE","street2": "SUITE 100","city": "ATLANTA","state": "GA","zip": "30301"},"issuerPhone": "4045550147","relatedPersons": [{"name": "Jordan Q. Sample","relationships": ["Executive Officer", "Director"],"city": "Atlanta","state": "GA"}],"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/9999999/000999999926000001/","xmlUrl": "https://www.sec.gov/Archives/edgar/data/9999999/000999999926000001/primary_doc.xml"}
How pricing works
Pay per result. You only pay for rows returned.
Data source and terms
Data is retrieved from the official U.S. Securities and Exchange Commission (SEC) EDGAR system:
- Primary discovery: EDGAR Full-Text Search API (
https://efts.sec.gov/LATEST/search-index) read one day at a time, newest day first - Fallback discovery: EDGAR Daily Form Index files (
https://www.sec.gov/Archives/edgar/daily-index/YYYY/QTR{1-4}/form.YYYYMMDD.idx)
About the search endpoint: efts.sec.gov powers EDGAR full-text search on SEC.gov but is not a formally documented, versioned API, so SEC could change it without notice. If it fails or changes shape, the Actor automatically switches to the official, documented EDGAR daily form index files for the same date range (weekdays only; weekends have no index file). Results are the same filings, but the fallback is slower and can't pre-filter by state, so a run may take longer. Every filing's data is always read from the official primary_doc.xml in the EDGAR archive.
- Filing XML:
https://www.sec.gov/Archives/edgar/data/<cik>/<accession>/primary_doc.xml
Filings are published in real time on SEC business days (6:00 AM – 10:00 PM ET). All requests strictly comply with SEC Fair Access rate limits (throttled to ≤ 5 requests/second with required User-Agent identification).
Limits and FAQ
-
Is this polite to SEC.gov? Yes. The Actor never sends more than 5 requests per second (SEC allows 10), always identifies itself with a User-Agent, and backs off (honoring
Retry-After) if SEC signals it is busy. If SEC keeps refusing requests, the run stops with a clear message instead of retrying forever. -
Do I need to set
secUserAgent? No. SEC.gov blocks automated requests that don't identify themselves, so the Actor always sends a descriptiveUser-Agent. Set your own (Company Name contact@domain.com) if you prefer SEC to see your contact details. -
Why are
totalOfferingAmountUsdortotalRemainingUsdsometimesnull? Issuers (especially evergreen offerings) may mark those XML fields as"Indefinite", which maps tonull. -
Why are street addresses omitted from
relatedPersons? Executive and director addresses on Form D frequently contain residential home addresses; onlycityandstateare emitted for related persons, while the company's full business street address is included inissuerAddress. -
What does a healthy canary run look like? Run the labelled canary input
{"dateFrom": "2026-10-23", "dateTo": "2026-10-23", "maxItems": 5}(any recent SEC business day works). A healthy run endsComplete: 5 rows, newest filings first (reached maxItems=5).
Troubleshooting
- The run failed with "no matching records": no Form D filings matched your filters in that window. Weekends and US holidays have few or no filings; widen the date range, clear
states/industryGroups, or setexcludePooledInvestmentFundsto false. - The run stopped with a "Blocked by SEC" message: SEC rate-limited the requests. The Actor already throttles to 5 requests/second and backs off; wait 10+ minutes and retry, or set
secUserAgentto your ownCompany Name email@domain.com. - The run ended PARTIAL: some filings could not be delivered (for example the EDGAR search 9,000-hit-per-day cap, the run's charge limit, or individual filing XML that was missing or unreadable). The status message states exactly what was skipped and why; rows already delivered are complete and correct.
- The run failed with a "source format appears to have drifted" message: more than 20% of the filings fetched in the run were unreadable or missing core sections, which points to an EDGAR format change rather than a few bad filings. The run fails instead of delivering mostly-empty data; rows pushed before the failure are named in the status message.
- Amounts show as
null: the issuer filed those amounts as "Indefinite", which maps tonullby design.
Changelog
-
v0.3 — Deeper drift hardening: an empty or syntactically broken filing XML is now skipped and counted like any other unreadable filing (it previously could crash the run); a filing missing the core
offeringSalesAmountsorindustryGroupsections insideofferingDatais skipped instead of being emitted with hollow amount/industry fields; if more than 20% of fetched filings are skipped, the run fails as a source error rather than succeeding on mostly-empty data. -
v0.2 — Drift hardening: a filing whose XML is missing
entityNameorofferingDatais now skipped and counted (run ends PARTIAL naming the skip count) instead of being emitted with silent null fields; PARTIAL status messages end with the standard Issues-tab call to action. -
v0.1.3 — Pooled-fund exclusion also catches filings whose securities are pooled investment fund interests (
isPooledInvestmentFundType), even when the industry is "Other". Documented the daily-index fallback. -
v0.1.2 — Hard cap of 5 SEC requests per second per run (half SEC's 10/s fair-access limit). On HTTP 429/403 the Actor honors Retry-After, backs off exponentially and pauses all requests; after 6 blocks in a row it stops with a clear message. Every request sends the User-Agent.
-
v0.1.1 —
secUserAgentis now optional. Fixed a batching bug that could skip some filings near the end of a run. -
v0.1 — Initial release with EFTS 3-day chunked discovery, daily-index fallback, token-bucket fair-access rate limiting (≤ 5 req/s), and structured XML parsing.