# SEC Form D Startup Funding Feed (EDGAR) (`krundle/sec-form-d-funding-feed`) Actor

Private funding rounds from official SEC EDGAR Form D filings: a free-source alternative to Crunchbase funding data. Filter by date, state, industry, amount raised, exemption (506b/506c), new vs amendment and company name. Daily alerts for new filings only.

- **URL**: https://apify.com/krundle/sec-form-d-funding-feed.md
- **Developed by:** [Krundle Freako](https://apify.com/krundle) (community)
- **Categories:** Lead generation, Business, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 form d filings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SEC Form D Startup Funding Feed (EDGAR)

Track **private funding rounds** as they are filed with the SEC. Companies that raise money under Regulation D (startups raising seed, Series A and later rounds, plus private funds, real-estate deals and oil & gas programs) must file a **Form D** within 15 days of the first sale. The Actor turns those filings into clean, structured records: issuer, address, industry, revenue range, **amount raised**, **amount still available**, **number of investors**, **minimum investment**, exemption (506(b), 506(c), 504…), first-sale date and links back to EDGAR.

It reads only official, free SEC sources: **EDGAR full-text search**, the **Form D XML** of each filing and the SEC's **quarterly Form D data sets**. You don't need an API key, a login or a Crunchbase subscription. Daily alert mode returns only filings you haven't seen yet.

### What you can do

- **Filter funding rounds** by **filing date** (last N days or a date range back to 2008), issuer **state** (US states, DC, territories, Canadian provinces), **industry group** (Biotechnology, Other Technology, Health Insurance, Commercial, REITs, Pooled Investment Fund… all 35 SEC groups), **offering amount** and **amount sold** (min/max), **number of investors**, **exemption** (Rule 506(b), 506(c), 504, 4(a)(5), Investment Company Act 3(c)(1)/3(c)(7)…), **new filing vs amendment**, **entity type**, **revenue range**, **year of incorporation** and **issuer name keywords** (include or exclude).
- **Startups only.** Use *Exclude pooled investment funds* to drop hedge, PE, VC and real-estate funds, which make up a large share of Form D filings.
- **Company history.** Enter one or more **CIKs** to get every Form D and amendment a company has filed.
- **Alerts.** *Only new since last run* remembers delivered filings in a named key-value store, so a daily schedule returns, and charges for, new filings only. An optional free **baseline** run marks today's matches as seen without outputting them.
- **Privacy by default.** Names of executives, directors and promoters (related persons), sales-compensation recipients and signers are **not included** unless you turn on *Include names of related persons*. Counts and broker-dealer firm names are always included.
- **Fast backfills.** For completed quarters the Actor reads the SEC's structured quarterly data set: a whole quarter (~16,000 filings) loads in a few seconds with 2 requests. Recent days come from the live EDGAR feed, so filings show up the day they are made.

### Use cases

- **Startup funding leads.** Sales teams selling to freshly funded startups (SaaS, recruiting, banking, insurance, office space) get a daily list of companies that just raised, with address, industry and amount.
- **VC and fundraise tracking.** Investors, analysts and journalists monitor new rounds by sector, state and size, follow a company's amendments by CIK, and spot 506(c) raises that can advertise publicly.
- **AI agents and MCP.** Give an LLM agent a live, structured "who just raised money" tool via the Apify MCP server or REST API, priced per filing.
- **Market research.** Backfill whole quarters to measure private-capital activity by industry or region.

### Example inputs

California tech and biotech rounds from the last 7 days:

```json
{ "filedWithinDays": 7, "states": ["CA"], "industryGroups": ["Other Technology", "Biotechnology"], "maxResults": 0 }
```

New (non-amendment) 506(c) rounds outside of pooled funds with at least $1M already sold, for Q3 2026:

```json
{
    "filedFrom": "2026-07-01",
    "filedTo": "2026-09-30",
    "filingType": "new",
    "exemptions": ["506c"],
    "excludePooledInvestmentFunds": true,
    "minAmountSold": 1000000,
    "maxResults": 0
}
```

Daily alert: young New York companies raising $2M–$50M, starting with a free baseline:

```json
{
    "filedWithinDays": 3,
    "states": ["NY"],
    "excludePooledInvestmentFunds": true,
    "incorporatedWithinFiveYearsOnly": true,
    "minOfferingAmount": 2000000,
    "maxOfferingAmount": 50000000,
    "onlyNew": true,
    "stateKey": "ny-young-2m-50m",
    "baselineOnFirstRun": true,
    "maxResults": 0
}
```

Every Form D a company has filed:

```json
{ "ciks": ["2107833"], "filedWithinDays": 0, "maxResults": 0 }
```

Name keywords: `["Therapeutics", "Bio"]` matches *Acme Therapeutics Inc* and *BioNova LLC* (case-insensitive, matching from the start of a word).

### Output

One item per Form D or Form D/A filing (shortened):

```json
{
    "issuerName": "F42 Corp",
    "cik": "2131684",
    "accessionNumber": "0002131684-26-000003",
    "formType": "D",
    "filingType": "new",
    "filingDate": "2026-09-30",
    "address": { "street1": "4343 VON KARMAN AVE., SUITE 250-C", "city": "NEWPORT BEACH", "state": "CA", "zip": "92660" },
    "state": "CA",
    "phone": "702-485-0110",
    "jurisdictionOfIncorporation": "WYOMING",
    "entityType": "Corporation",
    "yearOfIncorporation": 2026,
    "yearOfIncorporationRange": "withinFiveYears",
    "industryGroup": "Other Technology",
    "isPooledInvestmentFund": false,
    "revenueRange": "No Revenues",
    "totalOfferingAmount": 30000000,
    "totalAmountSold": 4000000,
    "totalRemaining": 26000000,
    "percentSold": 13.3,
    "minimumInvestment": 100000,
    "totalInvestors": 0,
    "hasNonAccreditedInvestors": false,
    "exemptions": ["06c"],
    "exemptionLabels": ["Rule 506(c)"],
    "firstSaleYetToOccur": true,
    "securitiesOffered": ["debt", "security to be acquired upon exercise"],
    "findersFees": 4000000,
    "relatedPersonsCount": 1,
    "brokerDealers": [],
    "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/2131684/000213168426000003/0002131684-26-000003-index.htm",
    "formDHtmlUrl": "https://www.sec.gov/Archives/edgar/data/2131684/000213168426000003/xslFormDX01/primary_doc.xml",
    "formDXmlUrl": "https://www.sec.gov/Archives/edgar/data/2131684/000213168426000003/primary_doc.xml",
    "edgarCompanyUrl": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=2131684&type=D&dateb=&owner=include&count=40",
    "dataSource": "sec-form-d-quarterly-dataset"
}
```

Other fields: `previousAccessionNumber` (for amendments), `signatureDate`, `previousNames`, `entityTypeOther`, `investmentFundType`, `is40Act`, `aggregateNetAssetValueRange` (funds), `offeringAmountIndefinite`/`remainingIndefinite`, `salesAmountClarification`, `nonAccreditedInvestors`, `dateOfFirstSale`, `durationMoreThanOneYear`, `otherSecurityDescription`, `isBusinessCombination`, `salesCommissions`, `grossProceedsUsedForRelatedPersons`, `coIssuers` (CIK, name, state, entity type) and `salesCompensationRecipientsCount`. With *Include names of related persons* on, you also get `relatedPersons` (name, relationships, clarification, city, state), `salesCompensationRecipients` (name, CRD, broker-dealer, states of solicitation) and `signatures`.

Each run also stores a `RUN_SUMMARY` record in the default key-value store: date range, filters, days listed, EDGAR hits, documents read, matches, already-seen skips, events charged and HTTP statistics.

### Alerts: "only new since last run"

1. Turn on **Only new since last run** and set a **State key** (e.g. `ca-biotech`).
2. Optionally turn on **Baseline on first run**. The first run then marks everything that currently matches as seen, without outputting or charging for it.
3. Schedule the Actor daily (for example at 22:00 US Eastern, after EDGAR's 17:30 filing cutoff; keep *Filed within last N days* at 3–7 so late-indexed filings are caught) and connect the dataset to email, Slack, Google Sheets, a CRM, Zapier or Make.

Seen accession numbers live in the named key-value store `sec-formd-state` on your account. Already-seen filings are skipped **before** their XML is downloaded, so alert runs are quick. Delete the store or change the state key to start over. Amendments (D/A) have their own accession number, so an amended round shows up as a new item with `filingType: "amendment"`. Use *New or amendment → New filings only* if you only want first-time filings.

### Pricing (pay per event)

| Event | Price | When |
|---|---|---|
| Actor start | $0.00005 | once per run (Apify standard) |
| Form D filing | **$0.004** ($4 per 1,000) | each filing saved to the dataset |

You don't pay for platform compute. Filings skipped in alert mode and baseline runs are free. Set a maximum cost per run in the Console and the Actor stops cleanly at that limit. Example: a daily alert that finds 20 new California tech rounds costs 20 × $0.004 + $0.00005 ≈ **$0.08** a day. A full quarter of all Form D filings (~16,000) costs about $64.

### SEC fair-access rules (User-Agent)

The SEC asks automated tools to identify themselves with a User-Agent that includes contact details, and to stay under 10 requests per second. The Actor sends a declared default User-Agent and paces all SEC requests to **5 per second** (configurable up to 9). **Please put your own name or company and email in the *User-Agent* field** (for example `Acme Research jane@acme.com`). It is sent only to sec.gov. If the SEC blocks a User-Agent, the run stops with a clear message instead of retrying forever.

### Use from AI agents and the API (MCP, x402, Skyfire)

**Tool summary for agents.** Input (all optional): `filedWithinDays` or `filedFrom`/`filedTo`, `states`, `industryGroups`, `excludePooledInvestmentFunds`, `minOfferingAmount`/`maxOfferingAmount`, `minAmountSold`, `exemptions` (`506b`, `506c`, `504`…), `filingType` (`new`/`amendment`), `issuerNameKeywords`, `ciks`, `maxResults` (default 100). Output: one JSON item per Form D filing with `issuerName`, `cik`, `state`, `industryGroup`, `totalOfferingAmount`, `totalAmountSold`, `totalInvestors`, `exemptions`, `filingDate`, `filingIndexUrl`… Cost: $0.004 per filing. A default call (last 7 days, 100 filings) costs about $0.40 and takes about 30 seconds.

- **REST API:** `POST https://api.apify.com/v2/acts/krundle~sec-form-d-funding-feed/run-sync-get-dataset-items` with `Authorization: Bearer <token>` and the input JSON as the body.
- **MCP:** `https://mcp.apify.com?tools=krundle/sec-form-d-funding-feed` works in Claude, Cursor, ChatGPT and other MCP clients.
- **Agentic payments (no Apify account):** agents can pay with **x402** or **MPP** through a prepaid token from [agi.apify.com](https://agi.apify.com), or with **Skyfire** via `https://mcp.apify.com?payment=skyfire&tools=krundle/sec-form-d-funding-feed`.

### FAQ

**Is this data legal to use?** Yes. Form D filings are public records published by the SEC on EDGAR. The Actor uses only official free SEC endpoints and follows SEC fair-access rules.

**How fresh is it?** Live mode reads EDGAR full-text search, so filings appear the same day they are filed.

**Does it include valuations or investor names?** No. Form D does not contain valuations, round names or investor names. Executive/director names are available only if you enable *Include names of related persons*.

**How do I get daily alerts?** Turn on *Only new since last run*, then add a daily schedule in Apify Console. You pay only for new filings.

**How much does it cost?** $0.004 per filing plus a tiny start fee. A run with 100 filings costs about $0.40.

**Can I use it from Claude, ChatGPT or Cursor?** Yes, through `https://mcp.apify.com?tools=krundle/sec-form-d-funding-feed`.

### Tips and limitations

- **What Form D covers.** Only offerings that rely on Regulation D or section 4(a)(5) are filed, and only by the issuer. Valuation, round names (Seed/Series A), lead investors and investor names are **not part of Form D**. `totalInvestors` counts investors so far, without naming them. Amounts are what the issuer reported; `totalOfferingAmount` can be `null` with `offeringAmountIndefinite: true` (common for funds). By default, *Min/Max offering amount* filters drop indefinite offerings; turn on *Include 'Indefinite' offering amounts* to keep them.
- **Year of incorporation** is given only when the company was incorporated within the last five years. Older issuers report `yearOfIncorporationRange: "overFiveYears"` and `yearOfIncorporation: null`.
- **State matching.** By default the Actor matches the issuer address on the Form D itself (*Exact*). *Fast* first screens filings by EDGAR's business-address index, which is quicker for state-only searches over many days, but that index often differs from the form (many startups list a Delaware registered-agent address with EDGAR), so it missed about 1 in 10 California tech filings in our tests.
- **Name keywords** are matched against the issuer name on the filing. In live mode, filings are pre-selected by EDGAR's current company name, so a company that renamed itself after filing might be skipped.
- **Data sources.** The quarterly data set covers only completed quarters and is published a few weeks after quarter end; until then the Actor uses the live feed automatically. The two sources contain the same filings (verified filing-by-filing); minor differences are possible, e.g. the data set sometimes carries a person's middle initial that the XML omits.
- **Speed.** The live feed needs one request per filing, about 5 filings per second (~260 Form D filings on a busy day take under a minute). Industry filters are applied inside EDGAR's search, so filtered live runs are much faster. Quarterly data set backfills are almost instant.
- **History.** Form D has been filed electronically since 2008-2009. Quarterly data sets start in 2008 Q1.

# Actor input Schema

## `filedWithinDays` (type: `integer`):

Form D filings from the last N calendar days (US Eastern, today included). Ignored when <i>Filed from</i> is set. Default 7 (0 with CIKs = all history).

## `filedFrom` (type: `string`):

First filing date (YYYY-MM-DD). Form D data on EDGAR starts in 2008/2009.

## `filedTo` (type: `string`):

Last filing date (YYYY-MM-DD). Default: today.

## `filingType` (type: `string`):

<b>New</b> = original Form D (a new offering). <b>Amendment</b> = Form D/A (updates, e.g. more money sold, annual renewals).

## `states` (type: `array`):

Issuer address state codes or names, e.g. <code>CA</code>, <code>NY</code>, <code>Texas</code>. Non-US issuers use EDGAR country codes (e.g. <code>X0</code> UK, <code>A6</code> Canada (Ontario)... see EDGAR state/country codes).

## `stateMatchMode` (type: `string`):

<b>exact</b> (default): matches the issuer address on the Form D itself; every filing in the date range that passes the other pre-filters is read. <b>fast</b>: first skips filings whose EDGAR business-address state differs, which is much quicker for state-only searches but misses issuers whose EDGAR address is elsewhere (e.g. a Delaware registered-agent address; about 1 in 10 California tech filings in our tests).

## `industryGroups` (type: `array`):

Form D industry groups (Item 4). Leave empty for all.

## `excludePooledInvestmentFunds` (type: `boolean`):

Skip VC/PE/hedge/real-estate fund vehicles (about 2/3 of all Form D filings) to keep operating companies (startups) only.

## `issuerNameKeywords` (type: `array`):

Only issuers whose name (or co-issuer / previous name) contains one of these words or phrases (word-start, case-insensitive), e.g. <code>AI</code>, <code>Therapeutics</code>, <code>Robotics</code>.

## `excludeIssuerNameKeywords` (type: `array`):

Skip issuers whose name contains any of these, e.g. <code>Fund</code>, <code>SPV</code>, <code>LP</code>.

## `minOfferingAmount` (type: `integer`):

Only offerings of at least this size (Item 13 total offering amount).

## `maxOfferingAmount` (type: `integer`):

Only offerings up to this size.

## `includeIndefiniteOfferings` (type: `boolean`):

Offerings reported as <i>Indefinite</i> (common for funds) have no number. When a minimum amount is set, include them anyway (they never pass a maximum).

## `minAmountSold` (type: `integer`):

Only filings where at least this much has already been sold (raised).

## `maxAmountSold` (type: `integer`):

Only filings where at most this much has been sold.

## `minInvestors` (type: `integer`):

Only filings with at least this many investors so far (Item 14).

## `exemptions` (type: `array`):

Federal exemptions claimed (Item 6), any of. Rule 506(b) is the classic private round; 506(c) allows general solicitation.

## `entityTypes` (type: `array`):

Issuer legal form (Item 2).

## `revenueRanges` (type: `array`):

Issuer revenue range (Item 5). Most issuers decline to disclose.

## `incorporatedWithinFiveYearsOnly` (type: `boolean`):

Young companies only (Item 2: incorporated within the last five years or yet to be formed).

## `minYearOfIncorporation` (type: `integer`):

Only issuers incorporated in or after this year. Form D reports the year only for issuers younger than five years, so older issuers are excluded.

## `ciks` (type: `array`):

Track specific issuers by SEC CIK number (e.g. <code>2159256</code>). Returns their Form D filings in the date range (all history when no date is set).

## `maxResults` (type: `integer`):

Maximum filings to output, newest first. 0 = unlimited.

## `includeIssuerPhone` (type: `boolean`):

The issuer's business phone number as filed.

## `includeRelatedPersons` (type: `boolean`):

Off by default: personal names are left out. Turn on to add executive officers, directors and promoters (name, relationship, city/state - no street addresses), sales-compensation recipients and signers. Use this personal data only for lawful purposes.

## `onlyNew` (type: `boolean`):

Remembers delivered filings (named key-value store <code>sec-formd-state</code>) and outputs, and charges for, new ones only. Schedule daily for a funding alert feed.

## `stateKey` (type: `string`):

Name of the alert memory. Runs with the same key share it even when filters change. Empty = derived from the filters.

## `baselineOnFirstRun` (type: `boolean`):

The first only-new run records all current matches as seen without outputting or charging for them, so alerts start from the next new filing.

## `dataSource` (type: `string`):

<b>auto</b>: SEC's quarterly Form D datasets for completed quarters (one download per quarter, fast for long ranges) and live EDGAR (full-text search + each filing's primary_doc.xml) for recent days. <b>live</b>: always live EDGAR. <b>datasets</b>: quarterly datasets only.

## `userAgent` (type: `string`):

SEC requires automated tools to declare who they are. Put your company or name and a contact e-mail here, e.g. <code>Acme Research jane@acme.com</code>. Default: the Actor's own identification.

## `maxRequestsPerSecond` (type: `number`):

Requests to SEC hosts per second (SEC allows at most 10). Default 5; the Actor never exceeds 9.

## `maxRetries` (type: `integer`):

Retries with backoff on network errors, 429/5xx and SEC throttling.

## Actor input object example

```json
{
  "filedWithinDays": 7,
  "filingType": "all",
  "states": [
    "CA"
  ],
  "stateMatchMode": "exact",
  "industryGroups": [
    "Other Technology",
    "Biotechnology"
  ],
  "excludePooledInvestmentFunds": false,
  "includeIndefiniteOfferings": false,
  "incorporatedWithinFiveYearsOnly": false,
  "maxResults": 100,
  "includeIssuerPhone": true,
  "includeRelatedPersons": false,
  "onlyNew": false,
  "baselineOnFirstRun": false,
  "dataSource": "auto",
  "maxRequestsPerSecond": 5,
  "maxRetries": 5
}
```

# Actor output Schema

## `filings` (type: `string`):

One item per Form D / D/A filing: issuer, CIK, address, entity type, incorporation year, industry, revenue range, offering amount, amount sold and remaining, investors, minimum investment, exemptions, first sale date, filing date, accession number and EDGAR links.

## `runSummary` (type: `string`):

RUN_SUMMARY record: date range, filters, EDGAR listing and document counts, matches, already-seen skips, charged events and estimated cost.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "states": [
        "CA"
    ],
    "industryGroups": [
        "Other Technology",
        "Biotechnology"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("krundle/sec-form-d-funding-feed").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "states": ["CA"],
    "industryGroups": [
        "Other Technology",
        "Biotechnology",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("krundle/sec-form-d-funding-feed").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "states": [
    "CA"
  ],
  "industryGroups": [
    "Other Technology",
    "Biotechnology"
  ]
}' |
apify call krundle/sec-form-d-funding-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,krundle/sec-form-d-funding-feed"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tqWeO2pMhkJCWA4Fc/builds/2zk45Ig8KErLxP5Zq/openapi.json
