# SEC Form D Funded Companies + Officers (`ceo.sss/sec-form-d-funded-companies`) Actor

Every US company that just filed a Form D funding round with amount raised, industry, address and named officers/directors, fresh from SEC EDGAR. Filters out pooled funds and SPVs. Pay per filing.

- **URL**: https://apify.com/ceo.sss/sec-form-d-funded-companies.md
- **Developed by:** [Swaraj Samant Singh](https://apify.com/ceo.sss) (community)
- **Categories:** Lead generation, Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 filing scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SEC Form D Funded Companies + Officers

Every US company that just filed a Form D funding round, with amount raised and named officers, as JSON/CSV. Fresh from SEC EDGAR.

Form D is the notice a company must file with the SEC within 15 days of the first sale in a private (Reg D) round. It is the earliest public record of most seed to growth-stage rounds, often weeks before a press release. This actor lists new filings for a date range (or looks up specific companies), fetches each filing's structured XML from EDGAR, and returns one flat row per filing: issuer, address, industry, amount sold, investor count, exemption, and every executive officer, director and promoter named on the form. Pooled funds and SPVs, which are half of all Form Ds, are filtered out by default so you get operating companies.

Data source: [sec.gov EDGAR](https://www.sec.gov/edgar) full-text search index plus each filing's `primary_doc.xml`. Public, no login, no browser. New filings show up within minutes of acceptance.

### What you get per filing

```json
{
  "accessionNumber": "0002014393-26-000004",
  "filedAt": "2026-08-14",
  "formType": "D",
  "isAmendment": false,
  "cik": "2014393",
  "issuerName": "CodeRabbit Inc.",
  "entityType": "Corporation",
  "jurisdiction": "DELAWARE",
  "yearOfIncorporation": 2023,
  "incorporatedWithinFiveYears": true,
  "street": "201 SPEAR STREET",
  "city": "SAN FRANCISCO",
  "state": "CA",
  "stateDescription": "CALIFORNIA",
  "zip": "94105",
  "phone": "(413) 378-4002",
  "industryGroup": "Other Technology",
  "revenueRange": "Decline to Disclose",
  "federalExemptions": ["06b"],
  "dateOfFirstSale": "2026-07-31",
  "moreThanOneYear": false,
  "securityTypes": ["Equity"],
  "isBusinessCombination": false,
  "totalOfferingAmount": 142998877,
  "totalAmountSold": 142998760,
  "totalRemaining": 117,
  "hasNonAccreditedInvestors": false,
  "numInvestors": 36,
  "minimumInvestment": 0,
  "salesCommissions": 0,
  "findersFees": 0,
  "signerName": "Harjot Gill",
  "signerTitle": "CEO",
  "relatedPersons": [
    { "firstName": "Harjot", "lastName": "Gill", "roles": ["Executive Officer", "Director"], "city": "SAN FRANCISCO", "state": "CA" },
    { "firstName": "Guritfaq", "lastName": "Singh", "roles": ["Executive Officer", "Director"], "city": "SAN FRANCISCO", "state": "CA" },
    { "firstName": "Alex", "lastName": "Berkenkamp", "roles": ["Executive Officer"], "city": "SAN FRANCISCO", "state": "CA" }
  ],
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/2014393/000201439326000004/0002014393-26-000004-index.htm",
  "primaryDocUrl": "https://www.sec.gov/Archives/edgar/data/2014393/000201439326000004/primary_doc.xml"
}
```

| Field | Always | Meaning |
|---|---|---|
| `accessionNumber` | yes | EDGAR filing ID, unique per filing; rows are deduplicated on it |
| `filedAt` | yes | Filing date (YYYY-MM-DD, SEC acceptance date) |
| `formType`, `isAmendment` | yes | `D` = new notice, `D/A` = amendment. `previousAccessionNumber` is set on amendments |
| `cik`, `issuerName` | yes | SEC Central Index Key and legal name of the issuer. `previousNames` when the issuer changed name |
| `entityType`, `jurisdiction`, `yearOfIncorporation`, `incorporatedWithinFiveYears` | usually | Corporation / LLC / LP..., state or country of incorporation, year (issuers over five years old may report only `incorporatedWithinFiveYears: false`) |
| `street`, `city`, `state`, `stateDescription`, `zip`, `phone` | usually | Issuer's principal address. `state` is a two-letter US state code, or one of the SEC's two-character codes for Canadian provinces and other countries (`A1`, `A6`, `X0`...) for foreign issuers |
| `industryGroup` | yes | SEC's fixed list, e.g. `Other Technology`, `Biotechnology`, `Manufacturing`, `Pooled Investment Fund` |
| `investmentFundType` | funds only | Hedge / private equity / venture capital / other fund |
| `revenueRange` | yes | Issuer's self-reported revenue bucket, usually `Decline to Disclose`. Funds report their net asset value bucket here |
| `federalExemptions` | yes | Rule codes as filed: `06b` = 506(b), `06c` = 506(c) (general solicitation allowed), `04` = 504, `3C`/`3C.1`/`3C.7` = Investment Company Act exclusions (funds) |
| `dateOfFirstSale` | yes | First sale date, or `yet to occur` |
| `moreThanOneYear`, `securityTypes`, `isBusinessCombination` | yes | Offering duration, security types sold (Equity, Debt, Option/Warrant, ...), whether it is a merger/acquisition deal |
| `totalOfferingAmount`, `totalAmountSold`, `totalRemaining` | when numeric | USD. Omitted and `isIndefinite: true` set when the issuer files "Indefinite" (open-ended funds) |
| `hasNonAccreditedInvestors`, `numInvestors`, `minimumInvestment` | yes | Investor count already in the round and minimum ticket |
| `salesCommissions`, `findersFees` | yes | USD paid to brokers/finders (0 for most startup rounds) |
| `signerName`, `signerTitle` | yes | Who signed the form, usually the CEO or CFO |
| `relatedPersons` | with `includeRelatedPersons` | Every executive officer, director and promoter on the form: `firstName`, `middleName`, `lastName`, `roles[]`, `roleClarification`, `city`, `state`. Funds list their GP/management company here with no first name |
| `filingUrl`, `primaryDocUrl` | yes | The filing's EDGAR index page and the raw XML |
| `rawXml` | with `includeRawXml` | The full `primary_doc.xml` |

Fields the filing does not contain are omitted rather than filled with nulls or guesses. Form D has no valuation, round name (seed/Series A), investor names or company website. See Limitations.

### Input

```json
{
  "mode": "new-filings",
  "dateFrom": "2026-08-11",
  "dateTo": "2026-08-15",
  "includeAmendments": false,
  "excludePooledFunds": true,
  "minAmountSold": 1000000,
  "states": ["CA", "NY"],
  "industries": ["Technology", "Biotechnology"],
  "maxItems": 500,
  "includeRelatedPersons": true,
  "userAgentContact": "you@company.com"
}
```

| Field | Default | Notes |
|---|---|---|
| `mode` | `new-filings` | `new-filings` = everything filed in the date range, newest first. `lookup` = all Form D filings of the given `ciks` and/or `accessionNumbers` |
| `dateFrom`, `dateTo` | last 7 days | `YYYY-MM-DD`, inclusive filing dates. In lookup mode leave empty for the issuer's full history |
| `ciks` | `[]` | Issuer CIKs for lookup mode, e.g. `2014393` (leading zeros optional). Find a CIK on any EDGAR company page |
| `accessionNumbers` | `[]` | Specific filings for lookup mode, e.g. `0002014393-26-000004` |
| `includeAmendments` | `false` | Off returns only new notices, i.e. fresh rounds. On adds `D/A` amendments (annual refilings of open offerings, closes, corrections) |
| `excludePooledFunds` | `true` | Drops funds and SPVs: industry `Pooled Investment Fund`, `REITS & Finance`, `Commercial`, `Residential`, `Other Real Estate`; any Investment Company Act 3(c) exclusion; fund interests as the security; investment fund type set; or an issuer name matching Fund / SPV / Feeder / Syndicate / "a Series of" / QOZF / Opportunity Zone / Capital Partners. `Construction` and operating real-estate companies with other industry codes are kept. Turn off to get everything |
| `minAmountSold` | `0` | Keep rows with `totalAmountSold >= minAmountSold`. Filings that report 0 sold are dropped when this is above 0 |
| `states` | `[]` | Issuer address state codes. Applied before the XML fetch, so it also saves requests |
| `industries` | `[]` | Case-insensitive substring match on `industryGroup`. `Technology` matches Computers, Telecommunications and Other Technology. Full value list is in the input schema |
| `maxItems` | `500` | Rows pushed after filters |
| `includeRelatedPersons` | `true` | Officers / directors / promoters per row |
| `includeRawXml` | `false` | Attach the filing XML (5-15 KB per row) |
| `userAgentContact` | placeholder | The SEC requires automated clients to identify themselves with a contact address in the User-Agent. Put your own email here |
| `minDelayMs` | `250` | Pause between requests to sec.gov. 250 ms = 4 requests/second, well inside the SEC's 10/s limit. Values below 100 are rejected |
| `proxyConfiguration` | none | Not needed for EDGAR. Available if your Apify IP is already throttled |

In new-filings mode the actor issues one listing request per 100 filings plus one request per filing that survives the amendment and state pre-filters. 200 rows is roughly 300 requests, about 90 seconds at the default pace.

### Pricing

Pay per event:

| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Filing scraped | $0.003 per row |

1,000 filings = about $3.00 plus the start fee. Only rows that pass your filters are charged; funds you excluded and amendments you skipped cost nothing. Set "Maximum total charge" on the run to cap spend; the actor stops cleanly when it is reached and you keep everything already scraped.

### Why this one

Compared with the other Form D actors on the store: every field of the structured XML is parsed (not just name, amount and a link), the officers and directors are on the row, funds and SPVs are filtered out by default so a "last 7 days" run is a list of operating companies rather than mostly Series-of-LLC SPVs (in a mid-August 2026 test week 90 of 140 new notices were funds or SPVs), and amendments are opt-in so a re-filed 2023 fund offering does not look like a new round. Rows are flat and CSV-friendly; nothing is invented.

### Limitations

- **Reg D only.** Companies raising under other exemptions (Reg A, Reg CF crowdfunding, Reg S offshore-only) do not file Form D. Non-US companies appear only if they sell to US investors under Reg D.
- **Up to 15 days behind the round.** Form D is due 15 days after the first sale, and many companies file late or, for small rounds, never. `dateOfFirstSale` tells you the real timing. Amendments are due annually for offerings still open after a year.
- **No valuation, no round name, no investor names.** Form D reports amounts, investor counts and the people who run the company, not who invested or at what price. `totalOfferingAmount` minus `totalRemaining` is what has been sold so far, not a post-money.
- **Amounts are self-reported.** Some issuers file `Indefinite` (open-ended funds) or `0` sold when the round has not closed; a few file placeholder phone numbers like `(000) 000-0000`. The actor passes through what was filed.
- **The fund/SPV filter is a heuristic.** It catches the vast majority (industry code, 3(c) exclusion, fund security type, name patterns) but an SPV that files as "Other Technology" with a neutral name will slip through, and a genuine company called "X Syndicate Inc" would be dropped. Turn `excludePooledFunds` off and filter yourself if you need certainty.
- **Listing depth.** EDGAR full-text search stops paging at 10,000 hits per query. Split a large date range into weeks if you need more than that.
- **Rate limits.** The SEC allows 10 requests/second per client and blocks for about 10 minutes beyond that. The actor paces at 4/s, backs off (5s, 15s, 45s, 135s) on 429/403 and always sends the declared User-Agent. Local runs and Apify runs without a proxy are fine.

### FAQ

**Is this real-time?** New filings appear in EDGAR's search index within minutes of acceptance and the actor reads that index, so a run for `dateTo = today` includes today's filings. The 15-day lag is between the round and the filing, not between the filing and this actor.

**How do I get only serious rounds?** `minAmountSold: 1000000` and `excludePooledFunds: true` (default). Add `industries: ["Technology", "Biotechnology", "Pharmaceuticals"]` for venture-style sectors.

**Why does the same company appear several times?** Each Form D is one offering. A company that sells several security classes or runs a parallel debt round files one Form D per offering, each with its own accession number.

**Where are the amendments?** Off by default. Set `includeAmendments: true`. `isAmendment`, `formType` and `previousAccessionNumber` let you tell them apart.

**Can I track one company?** `mode: "lookup"`, `ciks: ["2014393"]` returns its full Form D history (CodeRabbit: 2024 $3.6M, 2025 $68.4M, 2026 $143M).

**Does it use a browser?** No. Plain HTTP against `efts.sec.gov` and `www.sec.gov/Archives`, which is why it runs on 256 MB.

**Can I schedule it?** Yes. A daily schedule with the defaults (`last 7 days`) gives a rolling feed; deduplicate on `accessionNumber` downstream.

### Local development

```bash
npm install
## put your input in storage/key_value_stores/default/INPUT.json
apify run --purge   # or: npm start
npm test            # offline parser checks on saved primary_doc.xml fixtures + one live check (skips when offline / throttled)
```

To exercise pay-per-event locally: `ACTOR_TEST_PAY_PER_EVENT=1 ACTOR_MAX_TOTAL_CHARGE_USD=4 npm start` charges $1 per event and stops after the start event plus three filings.

# Actor input Schema

## `mode` (type: `string`):

new-filings: every Form D filed between dateFrom and dateTo (default: last 7 days). lookup: all Form D filings of the given ciks / accessionNumbers.

## `dateFrom` (type: `string`):

Inclusive filing date. Default: 7 days ago (new-filings mode). In lookup mode leave empty for the full history.

## `dateTo` (type: `string`):

Inclusive filing date. Default: today.

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

SEC Central Index Keys of issuers, e.g. 2014393. Leading zeros optional.

## `accessionNumbers` (type: `array`):

Filing accession numbers, e.g. 0002014393-26-000004.

## `includeAmendments` (type: `boolean`):

Off: only new Form D notices (fresh rounds). On: also D/A amendments (annual updates, closes, corrections).

## `excludePooledFunds` (type: `boolean`):

Drops filings whose industry is Pooled Investment Fund / REITS & Finance, that claim an Investment Company Act 3(c) exclusion, sell fund interests, or whose name looks like a fund/SPV ("Fund", "a Series of", "SPV", "Feeder", "Syndicate"). Roughly half of all Form Ds are funds; turn this off to keep them.

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

Keep filings with totalAmountSold >= this. Filings that report 0 sold (offering not yet closed) are dropped when > 0.

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

Two-letter US state / SEC country codes of the issuer's address, e.g. CA, NY, TX. Empty = all.

## `industries` (type: `array`):

Case-insensitive substring match on the Form D industry group, e.g. "Technology" matches Computers, Telecommunications, Other Technology. Values: Agriculture, Commercial Banking, Insurance, Investing, Investment Banking, Pooled Investment Fund, Other Banking & Financial Services, Business Services, Coal Mining, Electric Utilities, Energy Conservation, Environmental Services, Oil & Gas, Other Energy, Biotechnology, Health Insurance, Hospitals & Physicians, Pharmaceuticals, Other Health Care, Manufacturing, Commercial, Construction, REITS & Finance, Residential, Other Real Estate, Retailing, Restaurants, Computers, Telecommunications, Other Technology, Airlines & Airports, Lodging & Conventions, Tourism & Travel Services, Other Travel, Other.

## `maxItems` (type: `integer`):

Stop after this many rows are pushed (after filters).

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

Adds relatedPersons\[] with name, roles, city, state per person.

## `includeRawXml` (type: `boolean`):

Attach the filing's primary\_doc.xml as rawXml (about 5-15 KB per row).

## `userAgentContact` (type: `string`):

The SEC requires every automated client to declare a contact in its User-Agent header ("Apify Actor sec-form-d (contact: you@company.com)"). Put your own address here.

## `minDelayMs` (type: `integer`):

SEC fair-access limit is 10 requests/second; 250 ms = 4/s leaves headroom. Below 100 is rejected.

## `proxyConfiguration` (type: `object`):

Off by default: SEC EDGAR is public and rate-limits per IP + User-Agent, a proxy adds nothing unless your IP is already blocked.

## Actor input object example

```json
{
  "mode": "new-filings",
  "includeAmendments": false,
  "excludePooledFunds": true,
  "minAmountSold": 0,
  "maxItems": 500,
  "includeRelatedPersons": true,
  "includeRawXml": false,
  "userAgentContact": "swaraj@example.com",
  "minDelayMs": 250,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per Form D filing: issuer, amounts, investors, address, industry, related persons, filing URLs.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ceo.sss/sec-form-d-funded-companies").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 = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("ceo.sss/sec-form-d-funded-companies").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 '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call ceo.sss/sec-form-d-funded-companies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ceo.sss/sec-form-d-funded-companies"
        }
    }
}

```

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/z3OhrlCLd47gO7mPx/builds/ISrNKhf8bo34de4AA/openapi.json
