# SEC Form D Scraper: Startup Funding Rounds & Funded Companies (`northbell/sec-form-d-filings`) Actor

Recently funded US companies and their funding rounds, from every new SEC Form D filing on EDGAR: how much each raised and is raising, industry, state, year founded, investors and exemptions. Filter by state, industry and amount, and get only filings new since your last run. No login.

- **URL**: https://apify.com/northbell/sec-form-d-filings.md
- **Developed by:** [Northbell](https://apify.com/northbell) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.20 / 1,000 filings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper: Startup Funding Rounds & Funded Companies

When a US company raises money privately — a seed or Series A round, a real estate syndication, a new fund — it files a **Form D** with the SEC within 15 days of the first sale. This Actor reads every new Form D from SEC EDGAR and returns one clean row per filing: **the company, how much it has sold, how much it is raising, the industry, city and state, the year it was incorporated, its revenue range, how many investors are in, the securities and the exemption used**. **$4 per 1,000 filings**, no login, no API key.

Put it on a daily schedule with **Only new** and you get each day's newly funded companies, filtered to the states, industries and sizes you care about, without paying twice for the same filing.

It reads the SEC's own daily filing lists and the structured form each company submits, so the numbers are the ones on the form — not a news write-up.

**Try it now. The input is already filled in.** Press **Start**: Form D filings from the last 3 days, pooled funds left out — **50 filings in about 30 seconds, for $0.21** (measured on 28 Oct 2026). Three of the rows:

| `companyName` | `state` | `industryGroup` | `totalOfferingAmount` | `totalAmountSold` | `filedOn` |
| --- | --- | --- | --- | --- | --- |
| ACES Diagnostics, Inc. | AZ | Other | 8,702,366 | 7,082,529 | 2026-10-27 |
| ArcLoom Infrastructure LLC | UT | Other Technology | 65,000 | 30,000 | 2026-10-27 |
| Avery & Masa Media, LLC | NC | Other | 500,000 | 50,000 | 2026-10-27 |

Each row also has the CIK, entity type, year of incorporation, revenue range and a link to the filing on SEC EDGAR.

### What you get

| Field | What it is |
|---|---|
| `companyName`, `cik` | the company as filed, and its SEC number |
| `filedOn`, `formType`, `accessionNumber` | the filing date, `D` (new) or `D/A` (amendment), and the SEC filing number |
| `totalAmountSold`, `totalOfferingAmount`, `offeringIndefinite`, `totalRemaining` | US dollars sold so far, the offering size (or `true` when the size is open-ended) and what is left |
| `minimumInvestment` | the smallest investment accepted |
| `dateOfFirstSale`, `firstSaleYetToOccur`, `moreThanOneYear` | when the first investor came in, or that none has yet, and whether the offering runs over a year |
| `industryGroup`, `investmentFundType`, `isPooledFund` | the industry chosen on the form (`Other Technology`, `Biotechnology`, `Pooled Investment Fund`…), and for funds the fund type (`Venture Capital Fund`, `Hedge Fund`…) |
| `entityType`, `jurisdiction`, `yearOfIncorporation`, `incorporatedWithinFiveYears` | LLC, corporation, partnership…, where it is incorporated and when |
| `city`, `state`, `stateName`, `zip` | the city, state and ZIP of the company's main address |
| `revenueRange`, `netAssetValueRange` | the size band the company gave (often "Decline to Disclose") |
| `investorsAlreadyInvested`, `hasNonAccreditedInvestors`, `nonAccreditedInvestors` | how many investors are in, and whether any are non-accredited |
| `securities`, `exemptions` | `Equity`, `Debt`, `Option, warrant or other right`…; `06b`, `06c` (Rule 506(b)/(c)), `3C.1`… |
| `salesCommissions`, `findersFees`, `proceedsToRelatedPersons` | dollars paid to brokers and finders, and proceeds going to officers and directors |
| `relatedPersonsCount`, `additionalIssuers`, `isBusinessCombination` | how many executives, directors and promoters are listed, co-issuers, and whether it is part of a merger |
| `isAmendment`, `previousAccession` | for amendments, the filing it updates |
| `isNewSinceLastRun` | `true` when an earlier run with the same filters had not returned it (`null` on the first run) |
| `filingUrl`, `xmlUrl` | the filing on sec.gov and the form itself |

### Run it again and again

- **On a schedule**: save your input as a task and add a **Schedule** every morning with *Only new*. Send each run to Google Sheets, a CRM, Slack or email with an integration on the task.
- **Watch a niche**: Tech companies in Texas that raised $1M or more; biotech in Massachusetts; new venture funds anywhere.
- **In bulk**: Up to 30 days and 5,000 filings in one run for a backfill.

### Use it for

- **Sales prospecting**: a company that just raised money is about to hire, buy software, rent an office and find an accountant, a lawyer and an insurer
- **Investor and deal research**: who is raising, how much, in which industry and state, and how far along the round is
- **Fund and market tracking**: new venture, private equity and real estate funds, and the size of private fundraising week by week
- **Local business news**: the companies in your city or state that raised money this week

### Input

```json
{
  "filedWithinDays": 3,
  "excludePooledFunds": true,
  "industries": ["Technology", "Health Care"],
  "states": ["CA", "TX"],
  "minAmountSold": 1000000,
  "output": "new",
  "maxResults": 500
}
```

- **filedWithinDays** (default 3, up to 30) — days back from today, in US Eastern time. SEC publishes a day's list after the day ends, so today's filings appear tomorrow, and weekends and holidays have none.
- **excludePooledFunds**: about half of all Form D filings are investment funds. Tick it for operating companies only.
- **industries**, **states**, **keywords** — the industry on the form, the state code of the main address, and words in the company name. Each matches any of its lines.
- **minAmountSold**, **minOfferingAmount** — in US dollars. Offerings with an open-ended size pass the offering-size filter.
- **includeAmendments**: also return D/A filings (yearly updates and corrections). Off means new raises only.
- **output**: `all` or `new` (see above). The filings already returned are remembered per set of filters in a named key-value store in your Apify account.

### Pricing

**$4 per 1,000 filings**, plus $0.01 per run. Error rows are free, and so are filings left out by *Only new*. A day of operating companies (about 120) is about $0.50; every filing of a day (about 250) is about $1.

### Notes

- On 22 Oct 2026 SEC's list for 21 Oct had 259 first filings and 83 amendments; in a sample of 60 first filings, 34 were investment funds. 60 filings took 16 seconds. Every filing had the company, amount sold, industry, city and state; 51 of 60 gave the year of incorporation and 51 a revenue range.
- **The names and addresses of the people on the form are not returned**: the executives, directors and promoters listed, and the person who signed. Neither is the company's phone number or street address: small companies and one-off investment vehicles often use a home address, so the row stops at city, state and ZIP. `relatedPersonsCount` says how many people are listed, and `filingUrl` leads to the filing on sec.gov.
- The Actor identifies itself to SEC as SEC asks of automated tools, and stays well below SEC's limit of 10 requests a second. If SEC refuses the request, the run ends with a free error row; it does not try to get around that.
- The amounts are what the company reported. A filing is a notice, not a registration: the SEC does not review or approve it.

For businesses newly registered with US states, see [US Business Registrations](https://apify.com/northbell/us-business-registrations). For newly licensed businesses in US and Canadian cities, see [New Business Licenses](https://apify.com/northbell/new-business-licenses).

### For AI agents

`{"filedWithinDays": 3, "excludePooledFunds": true, "maxResults": 20}` returns up to 20 rows with `type: "filing"`. Fields the company did not fill are `null` (or an empty list), never missing. Amounts are numbers in US dollars. Run the same input later with `"output": "new"` to get only filings you have not seen.

# Actor input Schema

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

How many days back to look, counting today in US Eastern time. SEC publishes each day's list after that day ends, so today's filings appear tomorrow; weekends and holidays have no list. A daily schedule only needs 2 or 3.

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

About half of all Form D filings are pooled investment funds (hedge funds, private equity and venture funds, real estate funds). Tick this to get operating companies only.

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

Words to find in the industry the company chose on the form, one per line: "Technology", "Biotechnology", "Health Care", "Real Estate", "Energy", "Banking", "Venture Capital Fund". A filing that matches any line is returned. Leave empty for all.

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

Two-letter codes of the state (or country code) of the company's main address, one per line: CA, NY, TX, DE. Leave empty for all.

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

Only filings where the company says it has already sold at least this much, e.g. 1000000 for $1M or more.

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

Only offerings of at least this size. Offerings with no fixed size ("Indefinite") are kept.

## `keywords` (type: `array`):

Words to find in the company name, one per line: "Therapeutics", "AI", "Capital". A filing that matches any line is returned. Leave empty for all.

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

Also return Form D/A, the yearly updates and corrections to earlier filings. Off means first filings only: new raises.

## `output` (type: `string`):

With "Only new", filings returned by an earlier run with the same filters are left out and not charged. The first run returns everything, because there is nothing to compare with yet.

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

Stop after this many filings. A normal business day has about 250 first filings and 80 amendments.

## Actor input object example

```json
{
  "filedWithinDays": 3,
  "excludePooledFunds": true,
  "includeAmendments": false,
  "output": "all",
  "maxResults": 50
}
```

# Actor output Schema

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

Company, amount sold, offering size, industry, state and filing date for each Form D.

# 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 = {
    "filedWithinDays": 3,
    "excludePooledFunds": true,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("northbell/sec-form-d-filings").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 = {
    "filedWithinDays": 3,
    "excludePooledFunds": True,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("northbell/sec-form-d-filings").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 '{
  "filedWithinDays": 3,
  "excludePooledFunds": true,
  "maxResults": 50
}' |
apify call northbell/sec-form-d-filings --silent --output-dataset

```

## MCP server setup

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

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/isNVHwGu6MTIlo1ja/builds/YUbPr2JJauS61ib81/openapi.json
