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

Turn official SEC EDGAR Form D filings into clean startup-funding leads: issuer, raise amount, amount sold, investors, 506(b)/506(c), executives & directors with addresses, placement agents, links. Filters by state, industry, amount, date, exemption.

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

## Pricing

$3.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 Leads (EDGAR)

Find companies **that just raised money** — straight from official SEC EDGAR **Form D** filings, parsed field-by-field from the filing XML. Every private placement under Regulation D (startups, SPVs, VC/PE/hedge funds, real-estate syndications) must file a Form D within 15 days of first sale. This Actor turns those filings into clean, CRM-ready leads.

**$3 per 1,000 filings.** No API key, no proxies, no Crunchbase subscription.

### Use cases

- **VC deal sourcing / scouting** – new Delaware C-corps in *Other Technology* or *Biotechnology* raising $1M–$20M, incorporated in the last 2 years, first sale this month.
- **B2B sales leads** – freshly funded companies are buying: payroll, banking, insurance, SaaS, recruiting, office space. Get the issuer phone, address, CEO/directors and website.
- **Fintech, legal & fund-admin prospecting** – target 506(c) issuers (actively marketing), new fund launches (Pooled Investment Fund, 3(c)(1)/3(c)(7)), placement agents and broker-dealers (CRD numbers) by state.
- **Market research** – track capital-raising volume by industry, state and exemption over time.

### What you get (per filing)

| Group | Fields |
|---|---|
| Issuer | `issuerName`, `cik`, full `issuerAddress` + flat `issuerStreet/City/State/Zip`, `issuerPhone`, `stateOfIncorporation`, `entityType`, `yearOfIncorporation` (+ `yearOfIncorporationRange`), `industryGroup`, `investmentFundType`, `revenueRange` |
| Offering | `totalOfferingAmount`, `totalAmountSold`, `totalRemaining` (numbers, with explicit `…Indefinite` flags instead of strings), `minimumInvestment`, `numberOfInvestors`, `hasNonAccreditedInvestors`, `dateOfFirstSale`, `exemptions` (`06b`, `06c`, `3C.7`…) + human labels, `is506b` / `is506c`, `securitiesTypes`, `salesCommissions`, `findersFees` |
| People | `relatedPersons` (name, roles like Executive Officer / Director / Promoter, clarification e.g. "CEO", address), `executives` one-line summary, `salesCompensationRecipients` (placement agent, CRD, broker-dealer, states solicited), signer name/title |
| Filing | `formType` (D / D/A), `isAmendment`, `previousAccessionNumber`, `accessionNumber`, `filingDate`, links: `filingIndexUrl`, `formDHtmlUrl`, `formDXmlUrl`, `edgarCompanyUrl` |
| Enrichment (optional) | `website`, `sicCode`, `sicDescription`, `ein`, `formerNames`, `edgarFormDFilingCount` (repeat raiser?), `isPublicReporter` |

Dataset views: **Overview**, **Contacts / related persons**, **Offering details**.

### Input examples

Startups only, last 7 days:

```json
{ "lastNDays": 7, "filingType": "new", "excludePooledFunds": true, "maxResults": 500 }
```

California tech raising $1M–$25M under 506(b) or 506(c):

```json
{ "lastNDays": 30, "states": ["CA"], "industryGroups": ["Other Technology", "Computers"],
  "minOfferingAmount": 1000000, "maxOfferingAmount": 25000000, "exemptions": ["506(b)", "506(c)"] }
```

New funds launched in a date range:

```json
{ "startDate": "2026-09-01", "endDate": "2026-09-30", "industryGroups": ["Pooled Investment Fund"], "filingType": "new" }
```

Full-text search: `{ "fullTextQuery": "\"artificial intelligence\"", "lastNDays": 30 }`

### How it works

1. Lists Form D / D/A filings from EDGAR **daily form indexes** (falls back to the quarterly index) or **EDGAR full-text search**.
2. Downloads each filing's structured `primary_doc.xml` and parses every field (no HTML scraping, no third-party data).
3. Applies your filters, de-duplicates by accession number (optionally one row per company), and optionally enriches from the SEC **submissions API**.

Fair access: descriptive User-Agent, ≤5 requests/second by default (hard cap 8, SEC limit 10), exponential backoff on 429/5xx. You can set your own User-Agent contact.

### Pricing

Pay per event: **$0.003 per output filing** (`filing` event) plus the tiny Apify start fee. Filters are applied before charging — you only pay for leads that match. A typical business day has 250–450 Form D filings.

### Notes & limitations

- Form D shows **target and sold amounts**, not valuation, round name or investor names (investors are not disclosed — related persons are officers, directors and promoters).
- No emails: Form D doesn't contain them. Use `website` + `relatedPersons` for enrichment.
- Exact year of incorporation is only reported for companies formed within the last five years.
- Filings appear in the daily index the evening of the filing day (ET); today's filings may be incomplete until then.
- Data comes from SEC EDGAR, a public U.S. government source. Not affiliated with the SEC.

# Actor input Schema

## `lastNDays` (type: `integer`):

Scan filings from the last N calendar days (today included). Ignored when Start date is set.

## `startDate` (type: `string`):

Filing date from (YYYY-MM-DD). Overrides 'Last N days'. Example: 2026-10-01

## `endDate` (type: `string`):

Filing date to (YYYY-MM-DD), inclusive. Defaults to today.

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

Maximum number of leads (filings) to output. You pay per output record only.

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

New notices usually mean a fresh raise; amendments update an existing one (annual or material changes).

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

Drop hedge/PE/VC fund and SPV filings to keep operating companies (startups) only. Great for B2B sales leads.

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

Keep only these Form D industry groups (e.g. Other Technology, Biotechnology, Computers).

## `excludeIndustryGroups` (type: `array`):

Drop these industry groups (e.g. Pooled Investment Fund, Other Real Estate).

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

Two-letter state code of the issuer's principal place of business, e.g. CA, NY, TX. EDGAR country codes also work (e.g. X0 = UK).

## `statesOfIncorporation` (type: `array`):

Match the jurisdiction of incorporation, e.g. DELAWARE, CAYMAN ISLANDS.

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

Corporation, LLC, LP etc.

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

Keep filings claiming any of these exemptions. 506(c) = general solicitation allowed (actively marketing).

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

Minimum target raise. Example: 1000000

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

Maximum target raise. Example: 50000000

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

Many funds report the offering size as 'Indefinite'. When an offering-amount filter is set, keep (true) or drop (false) these.

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

Minimum capital already raised. Example: 500000

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

Maximum capital already raised.

## `firstSaleAfter` (type: `string`):

Date of first sale on or after (YYYY-MM-DD). Filings without a first sale yet are excluded when set.

## `firstSaleBefore` (type: `string`):

Date of first sale on or before (YYYY-MM-DD).

## `yearOfIncorporationMin` (type: `integer`):

Young companies only, e.g. 2023. Form D gives the exact year only for companies formed within 5 years.

## `keyword` (type: `string`):

Case-insensitive substring of the issuer name, e.g. 'AI' or 'Bio'.

## `fullTextQuery` (type: `string`):

Optional. Use EDGAR full-text search (efts.sec.gov) to find Form D filings mentioning a phrase, e.g. "artificial intelligence". Replaces the daily index scan.

## `onePerIssuer` (type: `boolean`):

Keep only the newest filing per company (CIK). Filings are always de-duplicated by accession number.

## `enrichWithCompanyData` (type: `boolean`):

Add SIC code, website, EIN, former names and prior Form D count from the SEC submissions API (1 extra request per company).

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

SEC requires a descriptive User-Agent with contact, e.g. 'Acme Research jane@acme.com'. Leave empty to use the Actor default.

## `requestsPerSecond` (type: `number`):

SEC fair-access limit is 10/s; this Actor caps at 8 and defaults to 5.

## Actor input object example

```json
{
  "lastNDays": 3,
  "maxResults": 50,
  "filingType": "all",
  "excludePooledFunds": false,
  "industryGroups": [
    "Other Technology",
    "Biotechnology"
  ],
  "states": [
    "CA",
    "NY"
  ],
  "statesOfIncorporation": [
    "DELAWARE"
  ],
  "exemptions": [
    "506(c)"
  ],
  "includeIndefiniteOfferings": true,
  "onePerIssuer": false,
  "enrichWithCompanyData": true,
  "requestsPerSecond": 5
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `contacts` (type: `string`):

No description

## `offering` (type: `string`):

No description

## `all` (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 = {
    "lastNDays": 3,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("cleaner_86/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 = {
    "lastNDays": 3,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("cleaner_86/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 '{
  "lastNDays": 3,
  "maxResults": 50
}' |
apify call cleaner_86/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,cleaner_86/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/seIN57PKeIFGkROmh/builds/flOiKiLw9uveH7IWV/openapi.json
