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

New private placements from SEC Form D filings: issuer, address and phone, industry, offering size, amount sold and remaining, first sale date, investor count, exemptions and executives. Filter by date, state, industry and amount. $3 per 1,000 filings.

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

## Pricing

from $2.70 / 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.
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

Find **startup funding leads in SEC Form D filings**: every company or fund that just raised money privately under Regulation D files a Form D within 15 days of its first sale. This Actor returns one clean row per filing with the issuer's name, address and phone, industry group, offering size, amount sold and remaining, minimum investment, first sale date, number of investors, federal exemptions (506(b), 506(c), …) and the executives, directors and promoters named in the filing. Filter by filing date, state, industry, offering size and keywords, and leave out investment funds. Built for sales teams, investors, service providers and AI agents prospecting newly funded companies.

- **What you get:** issuer, address, phone, industry, revenue range, offering size, sold, remaining, first sale date, investors, exemptions, brokers, executives, document links.
- **Price:** $0.003 per filing ($3 per 1,000); filings left out by your filters are free.
- **Works everywhere:** API, MCP for AI agents, Make, Zapier, n8n, schedules and webhooks (for example a daily run of yesterday's raises).

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `dateFrom` / `dateTo` | string | `7 days` / `today` | Filing-date window: `YYYY-MM-DD`, `today` or a span back from today such as `7 days`, `1 month`. |
| `states` | string\[] | all | Issuer's principal place of business, two-letter codes (`CA`, `NY`, `TX`, …). |
| `industryGroups` | string\[] | all | Form D industry groups, e.g. `Other Technology`, `Biotechnology`, `Pharmaceuticals`, `Computers`, `Telecommunications`, `Business Services`, `Retailing`, `Restaurants`, `Manufacturing`, `Commercial`, `Residential`, `Other Real Estate`, `REITS and Finance`, `Insurance`, `Investing`, `Pooled Investment Fund`, `Oil and Gas`, `Other Energy`, `Other Health Care`, `Agriculture`, `Construction`, `Other`. |
| `searchQuery` | string | – | Words or an exact phrase (in double quotes) the Form D must contain. |
| `minOfferingAmount` / `maxOfferingAmount` | integer | – | Offering size bounds in US dollars (indefinite offerings pass a minimum, never a maximum). |
| `excludePooledFunds` | boolean | false | Leave out venture, private equity, hedge and real-estate funds. |
| `includeAmendments` | boolean | false | Also return amended filings (D/A). |
| `maxFilings` | integer | 50 | Matching filings to return, newest first (1–5,000). |
| `includeRaw` | boolean | false | Attach the parsed Form D document. |

```json
{
  "dateFrom": "7 days",
  "states": ["CA", "NY"],
  "industryGroups": ["Other Technology", "Biotechnology"],
  "minOfferingAmount": 1000000,
  "excludePooledFunds": true,
  "maxFilings": 100
}
```

### Output

Each filing is one row (`recordType: "filing"`, charged); the run also writes one summary record (`recordType: "summary"`, never charged). Example (fictional company and people):

```json
[
  {
    "input": { "dateFrom": "7 days", "dateTo": "today", "states": ["CA"], "industryGroups": ["Other Technology"], "searchQuery": null, "minOfferingAmount": 1000000, "maxOfferingAmount": null, "excludePooledFunds": true, "includeAmendments": false },
    "recordType": "filing",
    "position": 1,
    "accessionNumber": "0009990010-26-000001",
    "filingDate": "2026-10-13",
    "form": "D",
    "isAmendment": false,
    "previousAccessionNumber": null,
    "cik": 9990010,
    "issuerName": "Example Robotics, Inc.",
    "entityType": "Corporation",
    "jurisdictionOfIncorporation": "DELAWARE",
    "incorporationAge": "within_five_years",
    "yearOfIncorporation": 2024,
    "street1": "100 EXAMPLE STREET",
    "street2": null,
    "city": "SAN FRANCISCO",
    "state": "CA",
    "stateDescription": "CALIFORNIA",
    "zipCode": "94105",
    "phone": "415-555-0100",
    "otherIssuers": [],
    "industryGroup": "Other Technology",
    "investmentFundType": null,
    "isPooledInvestmentFund": false,
    "revenueRange": "Decline to Disclose",
    "aggregateNetAssetValueRange": null,
    "totalOfferingAmount": 4000000,
    "offeringAmountIndefinite": false,
    "totalAmountSold": 3250000,
    "totalRemaining": 750000,
    "minimumInvestment": 25000,
    "dateOfFirstSale": "2026-10-02",
    "firstSaleYetToOccur": false,
    "moreThanOneYear": false,
    "securitiesOffered": ["equity"],
    "isBusinessCombination": false,
    "exemptions": ["06b"],
    "totalInvestors": 11,
    "hasNonAccreditedInvestors": false,
    "nonAccreditedInvestors": null,
    "salesCommissions": 0,
    "findersFees": 0,
    "salesCompensationRecipients": [],
    "relatedPersons": [
      { "name": "Sam A Sample", "relationships": ["Executive Officer", "Director"], "clarification": "Chief Executive Officer" },
      { "name": "Kim B Example", "relationships": ["Director"], "clarification": null }
    ],
    "signatureDate": "2026-10-13",
    "documentUrl": "https://www.sec.gov/Archives/edgar/data/9990010/000999001026000001/primary_doc.xml",
    "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/9990010/000999001026000001/0009990010-26-000001-index.htm",
    "status": "ok",
    "charged": true,
    "chargedEvent": "form-d-filing",
    "source": "sec-edgar",
    "fetchedAt": "2026-10-14T10:00:00.000Z"
  },
  {
    "input": { "dateFrom": "7 days", "dateTo": "today", "states": ["CA"], "industryGroups": ["Other Technology"], "searchQuery": null, "minOfferingAmount": 1000000, "maxOfferingAmount": null, "excludePooledFunds": true, "includeAmendments": false },
    "filedFrom": "2026-10-07",
    "filedTo": "2026-10-14",
    "states": ["CA"],
    "filingsInWindow": 214,
    "filingsScanned": 214,
    "recordType": "summary",
    "resultsDelivered": 37,
    "stopReason": "end",
    "status": "ok",
    "charged": false,
    "source": "sec-edgar",
    "fetchedAt": "2026-10-14T10:00:00.000Z"
  }
]
```

| Field | Description |
| --- | --- |
| `issuerName`, `cik`, `entityType`, `jurisdictionOfIncorporation`, `incorporationAge`, `yearOfIncorporation` | The issuer (co-issuers of a joint filing in `otherIssuers`). |
| `street1` … `zipCode`, `phone` | Principal place of business and phone as filed. |
| `industryGroup`, `investmentFundType`, `isPooledInvestmentFund`, `revenueRange`, `aggregateNetAssetValueRange` | Industry and size class (funds report net asset value instead of revenue). |
| `totalOfferingAmount`, `offeringAmountIndefinite`, `totalAmountSold`, `totalRemaining`, `minimumInvestment` | Offering amounts in US dollars. |
| `dateOfFirstSale`, `firstSaleYetToOccur`, `moreThanOneYear` | When the raise started and whether it runs longer than a year. |
| `exemptions` | Federal exemptions claimed: `04` (Rule 504), `06b` / `06c` (Rule 506(b) / 506(c)), `3C`, `3C.1`, `3C.7` (fund exclusions). |
| `totalInvestors`, `hasNonAccreditedInvestors`, `nonAccreditedInvestors` | Investors who have already invested. |
| `salesCommissions`, `findersFees`, `salesCompensationRecipients` | Placement agents and their compensation. |
| `relatedPersons` | Executive officers, directors and promoters as named in the filing, with their roles. |
| `filingsInWindow`, `filingsScanned`, `resultsDelivered`, `stopReason` | Summary only: Form D filings in the window and states, filings read, rows delivered, and why delivery stopped. |

`status`: filing rows are always `ok`. The summary is `ok` (also when nothing matched), `error` when EDGAR failed (not charged), or `skipped_budget` when the maximum cost per run could not pay for a single filing.

### Pricing

Store discounts: the FREE and BRONZE tiers use the list prices below. SILVER receives 5% off; GOLD, PLATINUM and DIAMOND receive 10% off billable result events. The platform start fee is unchanged. Check the Actor's Store pricing table for the prices currently in effect.

Pay-per-event, charged only for delivered results:

| Event | Price | When |
| --- | --- | --- |
| `form-d-filing` | $0.003 ($3 / 1,000) | once per Form D row delivered |

Set **Maximum cost per run** to cap spend: the Actor stops reading filings once the remaining budget cannot pay for another row, and filings left out by your filters are never charged. Accounts on the Apify free plan can process up to 1 search per run with up to 20 filings. Upgrade to any paid Apify plan for larger result sets.

### Use with AI agents (MCP)

Use this Actor from Claude, ChatGPT, Cursor, VS Code or any other MCP client through the [Apify MCP server](https://mcp.apify.com). Add this server URL to your client and sign in with your Apify account when asked:

```text
https://mcp.apify.com?tools=sfoln/sec-form-d-leads
```

To run the MCP server locally instead, start `npx -y @apify/actors-mcp-server --tools sfoln/sec-form-d-leads` with your `APIFY_TOKEN` in the environment.

Example prompt:

> Find startups in California that filed a Form D for a new raise in the last 7 days, with the amount raised and their executives.

Runs started by an agent are billed like any other run (see Pricing). Agents can cap what a run may spend with `maxTotalChargeUsd`.

### API usage

Run the Actor and get its dataset items in one call (the call waits up to 5 minutes for the run to finish):

```bash
curl -X POST "https://api.apify.com/v2/acts/sfoln~sec-form-d-leads/run-sync-get-dataset-items" \
  -H "Authorization: Bearer <APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"dateFrom": "7 days", "maxFilings": 5}'
```

For large inputs, start the run asynchronously and download the dataset when it has finished:

```bash
## 1. Start a run: the response holds the run ID (data.id) and its dataset ID (data.defaultDatasetId)
curl -X POST "https://api.apify.com/v2/acts/sfoln~sec-form-d-leads/runs" \
  -H "Authorization: Bearer <APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"dateFrom": "7 days", "maxFilings": 5}'
## 2. Repeat until data.status is SUCCEEDED (each call waits up to 60 s)
curl "https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=60" -H "Authorization: Bearer <APIFY_TOKEN>"
## 3. Download the results (format=json, csv or xlsx)
curl "https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=json" -H "Authorization: Bearer <APIFY_TOKEN>"
```

Python ([apify-client](https://pypi.org/project/apify-client/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("sfoln/sec-form-d-leads").call(run_input={"dateFrom": "7 days", "maxFilings": 5})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

Instead of polling, you can attach a webhook to the run (see Integrations). The API tab of this page shows the same calls for JavaScript and the Apify CLI.

### Integrations

- **Make, Zapier and n8n:** run `sfoln/sec-form-d-leads` with the Apify app (in n8n, the Apify node) and pass the dataset items to the next step of your workflow.
- **Google Sheets:** add the items to a sheet with the Google Sheets step of Make, Zapier or n8n, or download them as CSV or Excel from the run's Storage tab or the API (`format=csv` or `format=xlsx`).
- **Webhooks:** get a POST request when a run succeeds or fails: add a webhook in the Actor's Integrations tab, or pass `webhooks` when you start a run through the API.
- **Schedules:** run it hourly, daily or weekly with the same input from Apify Schedules; every run keeps its results in its own dataset.
- **More:** Slack, Google Drive, GitHub, LangChain, LlamaIndex and other [Apify integrations](https://docs.apify.com/platform/integrations).

### Related Actors

- [SEC EDGAR Filings Scraper – 10-K, 10-Q, 8-K](https://apify.com/sfoln/sec-edgar-filings)
- [SEC Insider Trading Tracker – Form 4](https://apify.com/sfoln/sec-insider-trading)
- [Website Contact Details Scraper](https://apify.com/sfoln/company-contacts-finder)
- [LinkedIn Company Details Scraper (No Login)](https://apify.com/sfoln/linkedin-company-lookup)

See [all our Actors](https://apify.com/sfoln) on Apify Store.

### FAQ

#### How much does it cost, and am I charged for failed items?

You pay per event at the prices under Pricing above, plus a run start fee of $0.00005 per GB of memory, with no subscription; platform usage is included. Errors and skipped items (`skipped_…` statuses) are never charged; a lookup that finds nothing is charged only where Pricing says so, and every record's `charged` field shows whether it was billed. Set **Maximum cost per run** to cap what a single run can spend.

#### How fresh is the data?

Each run queries its source while it runs, so you get what the source returns at that moment. Source-specific details, such as how often a provider refreshes its own database, are under Limits & notes.

#### What are the limits?

Per-run caps (for example the maximum number of items) are listed under Input, source limits under Limits & notes, and the free-plan limit under Pricing. For big batches, start the run asynchronously (see API usage) and read the dataset when it has finished.

#### Can I schedule runs or get results by webhook?

Yes. Create a schedule in Apify Console to run it hourly, daily or weekly with the same input, and add a webhook to get a POST request when a run finishes (see Integrations).

#### What does this Actor record about my runs?

This Actor records operational metrics about each run (item counts, duration, charges, error codes and a pseudonymous hash of your Apify user ID) to monitor reliability and costs. It never stores your input or results.

#### What is a Form D?

The notice US companies and funds file with the SEC within 15 days of the first sale in a private placement under Regulation D (rules 504, 506(b), 506(c)). It names the issuer, its executives and promoters, the industry, the offering size and how much has been sold.

#### How do I get only operating startups?

Switch on excludePooledFunds (leaves out venture, private equity, hedge and real-estate funds), pick industry groups such as Other Technology or Biotechnology, and set a minimum offering size.

#### How do I get help?

Open an issue in the Actor's Issues tab and include the link to the run, so we can reproduce the problem. Feature requests are welcome there too.

### Limits & notes

- Data comes live from SEC EDGAR (full-text search over Form D filings, then each filing's `primary_doc.xml`): filings appear minutes after acceptance. Roughly 150–250 Form D filings are filed per business day.
- Each matching filing is one request at SEC's limit of about 10 per second (the Actor uses 8), so 1,000 filings take about two minutes; filters other than states are applied after reading a filing, so strict filters read more filings per delivered row (at most 5,000 per run).
- At most 10,000 filings per date window can be listed; use shorter windows for longer periods.
- Contact data is what the issuer filed: the phone and address are the issuer's principal place of business; no e-mail addresses are filed on Form D.
- If SEC refuses the run for exceeding its request rate (HTTP 403 "Request Rate Threshold Exceeded", a pause of about 10 minutes), the Actor stops reading after a few refused filings instead of skipping them one by one: the summary's `error` has code `rate_limit` (with `status: "error"` when nothing was delivered) and refused filings are not charged. Run again later.

# Actor input Schema

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

Earliest filing date: YYYY-MM-DD or a span back from today such as "7 days" or "1 month".

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

Latest filing date: YYYY-MM-DD, "today" or a span such as "1 day".

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

Issuer's principal place of business: two-letter US state codes (CA, NY, TX, …). Empty: everywhere.

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

Form D industry groups, e.g. Other Technology, Biotechnology, Pharmaceuticals, Computers, Telecommunications, Business Services, Retailing, Restaurants, Manufacturing, Commercial, Residential, Other Real Estate, REITS and Finance, Insurance, Investing, Pooled Investment Fund, Oil and Gas, Other Energy, Other Health Care, Agriculture, Construction, Other. Empty: all.

## `searchQuery` (type: `string`):

Optional words or an exact phrase in double quotes that the Form D must contain, e.g. "artificial intelligence".

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

Only offerings of at least this total amount (offerings of indefinite size are kept).

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

Only offerings of at most this total amount (offerings of indefinite size are left out).

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

Leave out pooled investment funds (venture, private equity, hedge and real-estate funds) to keep operating companies.

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

Also return amended filings (D/A), which update earlier offerings.

## `maxFilings` (type: `integer`):

Matching filings to return, newest first. Accounts on the Apify free plan can process up to 1 search per run with up to 20 filings.

## `includeRaw` (type: `boolean`):

Attach the parsed Form D document to each row.

## Actor input object example

```json
{
  "dateFrom": "7 days",
  "dateTo": "today",
  "excludePooledFunds": false,
  "includeAmendments": false,
  "maxFilings": 5,
  "includeRaw": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "dateFrom": "7 days",
    "maxFilings": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("sfoln/sec-form-d-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 = {
    "dateFrom": "7 days",
    "maxFilings": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("sfoln/sec-form-d-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 '{
  "dateFrom": "7 days",
  "maxFilings": 5
}' |
apify call sfoln/sec-form-d-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sfoln/sec-form-d-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/x2293wdkB7fHsnZad/builds/R7tFt9YdwvzKgCNHQ/openapi.json
