# SEC Form D Startup Funding Leads (`bareezh_codes/sec-form-d-funding-leads`) Actor

Crunchbase alternative: companies that just filed SEC Form D (startups, funds, real estate raises) with raise size, investor count, contact info and executives.

- **URL**: https://apify.com/bareezh\_codes/sec-form-d-funding-leads.md
- **Developed by:** [Salman Bareesh](https://apify.com/bareezh_codes) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 funding leads

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?

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

Get a fresh list of companies that just raised private funding — startups, VC/PE funds, and real estate syndications — the moment they file **Form D** with the SEC. This actor is a **SEC EDGAR API** wrapper: it reads directly from [SEC EDGAR](https://www.sec.gov/edgar)'s public full-text search index and the structured `primary_doc.xml` of every filing, giving you company name, address, phone number, how much was raised, how many investors bought in, and the names of the founders/executives/directors who signed the filing — the same kind of data Crunchbase and PitchBook charge for, sourced straight from the primary filing.

### Why use SEC Form D Startup Funding Leads?

Any US company raising money privately under Regulation D (the exemption almost every startup, fund, and real-estate sponsor uses instead of a public IPO) must file a **Form D** with the SEC within 15 days of the first sale of securities. That filing is public and structured, and it tells you, in effect, "this company just got cash and a reason to spend it." That makes Form D one of the highest-signal, lowest-competition lead sources available: unlike a press release or a **Crunchbase alternative** profile that lags, gets curated, or hides behind a paywall, Form D is the primary source, filed by the company's own lawyers, and it appears in EDGAR within days of the raise.

Main capabilities:

- Queries the SEC EDGAR full-text search API (`efts.sec.gov`) for Form D / Form D/A filings in your date range.
- Downloads the structured `primary_doc.xml` for each filing directly from SEC's public Archives — no scraping of rendered HTML, no third-party data broker.
- Parses each filing into one flat, consistently-shaped JSON record and applies your filters (industry, state, minimum raise size, exclude pooled funds, amendments).
- Runs on the Apify platform, so you get scheduling (daily/weekly lead feeds), API and webhook access, integrations, and monitoring out of the box.

Typical use cases:

- **B2B sales prospecting** — build a list of companies that just received cash and are about to spend it on software, office space, hiring, or services.
- **VC / PE deal sourcing** — track who else is raising in your sector or geography, and see round sizes and investor counts as they're filed.
- **Recruiting** — newly-funded companies hire. Get ahead of job postings by watching the raise itself.
- **Real estate & fund services** — filter to "Pooled Investment Fund" / "Other Real Estate" issuers to find sponsors raising new funds or property syndications.
- **Crunchbase alternative** — for anyone who wants "who raised money recently, with contact info," sourced directly from SEC EDGAR instead of a curated database.

### What data can SEC Form D Startup Funding Leads extract?

| Field | Type | Description |
|---|---|---|
| `companyName` | string | Issuer name |
| `address`, `phone` | object, string | Issuer's registered business address and phone number |
| `industryGroup` | string | SEC industry classification (e.g. "Other Technology", "Pooled Investment Fund") |
| `totalOfferingAmount`, `totalAmountSold` | number | Size of the raise, in USD |
| `numberOfInvestors` | number | Number of investors who have already put money in |
| `dateOfFirstSale`, `filingDate` | string | Date of first sale of securities, and date the filing hit EDGAR |
| `relatedPersons` | array | Executives, directors, promoters and general partners listed on the filing |
| `filingUrl`, `xmlUrl` | string | Links to the filing's index page and structured XML on SEC EDGAR |

See [Output](#output) below for the full field reference and a complete real example.

### How to use SEC Form D Startup Funding Leads

1. Click **Try for free** (or **Run**) on this actor's page.
2. Optionally set `dateFrom` / `dateTo` to pick a filing date range (defaults to the last 7 days).
3. Optionally narrow results with `industryGroups`, `states`, `minAmountSold`, `minTotalOffering`, or `excludePooledFunds`.
4. Set `maxItems` to cap how many leads you want back.
5. Click **Start** and wait for the run to finish.
6. Open the **Dataset** tab and export your leads as JSON, CSV, or Excel — or pull them programmatically via the **API** tab.

### How much will it cost to use SEC Form D Startup Funding Leads?

You pay only for leads delivered — no subscription, no charge for filings that don't match your filters.

| Your Apify discount tier | Price per lead | 1,000 leads |
|---|---|---|
| Free | $0.009 | $9 |
| Bronze | $0.008 | $8 |
| Silver | $0.007 | $7 |
| Gold | $0.006 | $6 |
| Platinum / Diamond | $0.006 | $6 |

Apify's free plan includes $5 of monthly credit — enough for about 500 leads at no cost. A typical weekly pull of 100 fresh funded companies costs under $1. Compare: funding databases charge $0.06–$0.08 per record.

A run stops automatically once it has returned `maxItems` results, once it hits your run's maximum charge (Apify's pay-per-result cost cap), or once it has scanned `max(maxItems * 20, 500)` candidate filings without finding enough matches, whichever comes first — so tightening your filters or `maxItems` directly controls what a run can cost you.

### Input

All fields are optional — running the actor with an empty input (`{}`) returns Form D filings from the last 7 days. See the **Input** tab for the full configuration schema.

| Field | Type | Default | Description |
|---|---|---|---|
| `dateFrom` | string (`YYYY-MM-DD`) | 7 days ago | Start of the filing date range |
| `dateTo` | string (`YYYY-MM-DD`) | today | End of the filing date range (inclusive) |
| `minAmountSold` | integer | `0` | Only companies that have already sold at least this much (USD) |
| `minTotalOffering` | integer | `0` | Only filings targeting at least this total offering (USD) |
| `industryGroups` | array of strings | `[]` (all) | SEC industry groups to keep, e.g. `["Other Technology", "Biotechnology"]` |
| `states` | array of strings | `[]` (all) | Issuer business-address state codes to keep, e.g. `["CA", "NY"]` |
| `excludePooledFunds` | boolean | `true` | Skip VC/PE/hedge/real-estate funds (industry group "Pooled Investment Fund") so results focus on operating companies |
| `includeAmendments` | boolean | `false` | Include Form D/A amendments, not just original Form D filings |
| `maxItems` | integer | `100` | Maximum number of leads to return |

`dateFrom` must not be later than `dateTo` — the run fails immediately with an error message if it is.

Example input for "operating tech companies in California that raised at least $1M in the last 2 weeks":

```json
{
  "dateFrom": "2026-08-30",
  "dateTo": "2026-09-13",
  "minAmountSold": 1000000,
  "industryGroups": ["Other Technology"],
  "states": ["CA"],
  "excludePooledFunds": true,
  "maxItems": 200
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One item is produced per filing, with the same keys every time (`null` when the filing doesn't include that data). This is a real item from a live run of this actor (`tests/smoke_input.json`, filings from 2026-09-10 to 2026-09-13):

```json
{
  "accessionNumber": "0002072307-26-000001",
  "filingDate": "2026-09-11",
  "formType": "D",
  "cik": 2072307,
  "companyName": "CleanBotix, Inc.",
  "entityType": "Corporation",
  "yearOfIncorporation": "2025",
  "stateOfIncorporation": "DELAWARE",
  "address": {
    "street1": "4540 East Paris",
    "street2": "Suite F",
    "city": "GRAND RAPIDS",
    "state": "MI",
    "zip": "49512"
  },
  "phone": "(501) 270-0636",
  "industryGroup": "Other Technology",
  "investmentFundType": null,
  "revenueRange": "Decline to Disclose",
  "totalOfferingAmount": 10000000,
  "totalAmountSold": 5999991,
  "totalRemaining": 4000009,
  "minimumInvestment": 0,
  "numberOfInvestors": 1,
  "dateOfFirstSale": "2026-08-31",
  "isEquity": true,
  "securitiesTypes": ["Equity"],
  "federalExemptions": ["06b"],
  "relatedPersons": [
    { "name": "Adam Jacques", "relationship": ["Executive Officer", "Director"], "city": "Grand Rapids", "state": "MI" },
    { "name": "Killian Lapeyre", "relationship": ["Director"], "city": "Harahan", "state": "LA" },
    { "name": "Scot Lindemann", "relationship": ["Director"], "city": "Grand Rapids", "state": "MI" },
    { "name": "Kelly Conley", "relationship": ["Executive Officer"], "city": "Grand Rapids", "state": "MI" }
  ],
  "salesCompensationRecipients": [],
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/2072307/000207230726000001/0002072307-26-000001-index.htm",
  "xmlUrl": "https://www.sec.gov/Archives/edgar/data/2072307/000207230726000001/primary_doc.xml"
}
```

#### Field reference

| Field | Description |
|---|---|
| `accessionNumber` | SEC accession number of this filing |
| `filingDate` | Date the filing hit EDGAR |
| `formType` | `D` (new filing) or `D/A` (amendment) |
| `cik` | Issuer's SEC Central Index Key |
| `companyName`, `entityType`, `yearOfIncorporation`, `stateOfIncorporation` | Issuer identity |
| `address`, `phone` | Issuer's registered business address and phone number |
| `industryGroup`, `investmentFundType` | SEC industry classification; `investmentFundType` is set only when `industryGroup` is "Pooled Investment Fund" |
| `revenueRange` | Issuer's self-reported revenue bracket (or "Decline to Disclose") |
| `totalOfferingAmount`, `totalAmountSold`, `totalRemaining` | Size of the raise, in USD |
| `minimumInvestment` | Minimum check size accepted |
| `numberOfInvestors` | Number of investors who have already put money in |
| `dateOfFirstSale` | Date of the first sale of securities in this offering |
| `isEquity`, `securitiesTypes` | Whether equity was offered, and the full list of security types checked on the form |
| `federalExemptions` | Regulation D exemption(s) claimed (e.g. `06b` = Rule 506(b)) |
| `relatedPersons` | Executives, directors, promoters and general partners listed on the filing |
| `salesCompensationRecipients` | Names of any brokers/finders paid a sales commission (most filings report none; SEC returns this list empty in that case) |
| `filingUrl` | Link to the filing's index page on SEC EDGAR |
| `xmlUrl` | Direct link to the filing's structured `primary_doc.xml` |

### FAQ, disclaimers, and support

**Is this legal?** Yes. Form D filings are public records that the SEC requires issuers to file and explicitly publishes for anyone to read at [sec.gov/edgar](https://www.sec.gov/edgar). This actor only reads that public data through SEC's own public endpoints — no login, no scraping of rendered HTML, no third-party data broker.

**How fresh is the data?** As fresh as EDGAR itself — usually filings appear in SEC's full-text search index within minutes to a few hours of being filed. Run this actor daily or weekly with a rolling `dateFrom`/`dateTo` to build an ongoing lead feed.

**Why is `investmentFundType` null for most rows?** It's only present when `industryGroup` is "Pooled Investment Fund" (i.e., a VC/PE/hedge/real-estate fund). By default (`excludePooledFunds: true`) those are filtered out anyway, since most B2B sales/recruiting use cases want operating companies, not funds.

**Some numeric fields are missing on a filing that should have them.** A small number of filings report offering amounts as "Indefinite" rather than a number (allowed by SEC for some fund types); such values are passed through as text rather than dropped, so always check the type of the numeric fields before doing math on them.

**Can I get every Form D ever filed?** Yes, in principle — set `dateFrom` far enough in the past. SEC's full-text search index covers filings back to 2001. Very large date ranges will take longer to run and scan more candidate filings before filters are applied.

**Why did my run stop before reaching `maxItems`?** A run stops when it reaches `maxItems`, when it hits your run's maximum charge limit, or after scanning `max(maxItems * 20, 500)` candidate filings without finding enough matches (strict filters can discard most filings, so this bounds how many SEC requests a single run makes). Relax your filters or widen the date range to get more results.

**Why did my run fail immediately?** `dateFrom` cannot be later than `dateTo` — the actor rejects that combination up front with an error message instead of running.

#### Legal & compliance note

All data comes from SEC EDGAR, a public government database (17 CFR 230.503 requires Form D to be filed electronically and EDGAR publishes it openly). This actor does not access any non-public data. Per SEC's fair-access policy for automated tools (see [sec.gov/os/webmaster-faq#developers](https://www.sec.gov/os/webmaster-faq#developers)), every request identifies this actor with a descriptive `User-Agent` and the actor paces its own requests well under SEC's stated limit of ~10 requests/second.

Our actors are ethical and do not extract any private user data, such as personal email addresses, gender, or location. They only extract what is already public on SEC EDGAR — Form D filings that companies are legally required to file for public disclosure. You should be aware that filings can include the names of individual executives and directors; personal data is protected by the GDPR in the European Union and by other regulations around the world, so you should not repurpose this data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

#### Limits & notes

- Only Form D and Form D/A are covered (Regulation D private offerings). Other exempt-offering forms (e.g. Form C for Reg CF) are out of scope.
- `salesCompensationRecipients` is best-effort: the vast majority of Form D filings report no paid brokers/finders, so this list is empty on most items.
- The actor retries transient SEC EDGAR errors automatically (SEC's servers occasionally return a temporary "unavailable" page); a filing is skipped (and logged) only after repeated retries fail, so a handful of items may be silently absent from a very large run rather than causing the whole run to fail.

#### Support

Found a bug or have a feature request? Use the **Issues** tab on this actor's page. For programmatic access, see the **API** tab for ready-made code snippets in your language of choice.

# Actor input Schema

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

Start of the filing date range (YYYY-MM-DD). Defaults to 7 days before today.

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

End of the filing date range (YYYY-MM-DD), inclusive. Defaults to today.

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

Only include filings where the total amount already sold is at least this many US dollars.

## `minTotalOffering` (type: `integer`):

Only include filings where the total offering amount is at least this many US dollars.

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

Only include filings whose SEC industry group matches one of these (e.g. "Other Technology", "Pooled Investment Fund", "Biotechnology"). Leave empty to include all industries.

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

Only include filings where the issuer's business address is in one of these two-letter US state codes (e.g. "CA", "NY", "TX"). Leave empty to include all states.

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

Skip filings from VC/PE/hedge/real-estate funds (industry group "Pooled Investment Fund") so results focus on operating companies. Most B2B sales use cases want this on.

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

Include Form D/A amendments in addition to original Form D filings. Amendments update an earlier filing rather than announcing a brand-new raise.

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

Maximum number of leads to return.

## Actor input object example

```json
{
  "minAmountSold": 0,
  "minTotalOffering": 0,
  "industryGroups": [],
  "states": [],
  "excludePooledFunds": true,
  "includeAmendments": false,
  "maxItems": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

One item per matching Form D filing

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("bareezh_codes/sec-form-d-funding-leads").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("bareezh_codes/sec-form-d-funding-leads").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 '{}' |
apify call bareezh_codes/sec-form-d-funding-leads --silent --output-dataset

```

## MCP server setup

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

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/5q4vZB9ZfgllZjuaO/builds/mFO9gVmwxrVhCYM10/openapi.json
