# SEC Form D Funding Tracker (`frank_conifer_af4/sec-form-d-funding-tracker`) Actor

Daily feed of US private fundraises from official SEC Form D filings: issuer, industry, amount raised, exemptions, executives and directors. Filters out pooled-fund noise and can return only filings that are new since your last run.

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

## Pricing

from $4.00 / 1,000 form d filing delivereds

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 Funding Tracker

Get every US private fundraise filed with the SEC each day: who raised, how much, in what industry, and who runs the company. The data comes straight from official Form D filings, as clean structured rows.

### What does SEC Form D Funding Tracker do?

Companies and funds that raise money privately in the US file a Form D with the Securities and Exchange Commission, usually within 15 days of their first sale. This Actor lists every Form D filed in the dates you choose (by default yesterday and today), reads each filing's structured XML from SEC EDGAR and returns one row per raise. Each row has the issuer, address and phone, industry, amount sold and offering size, exemptions used, date of first sale, investor count, broker or placement agents, and the executives, directors and promoters named on the filing. By default it drops the pooled investment funds that make up more than half of all filings, so you get operating companies. Schedule it daily with **Only filings not delivered in earlier runs** and you get a clean feed of new raises.

### Why use it

- **Official source, no scraping roulette.** Data comes from SEC EDGAR, the legal record of US private offerings. There are no logins, no CAPTCHAs and no third-party database that blocks you halfway through a run.
- **The noise is filtered for you.** On a typical day 55 to 60% of new Form D notices are hedge, private equity, venture and SPV fund vehicles. One switch removes them. Filters for industry, state, country, minimum amount sold, minimum offering size and issuer name keep only what you care about, and filtered-out filings cost nothing.
- **A daily delta, not a dump.** Monitoring mode remembers which filings you already received. Every scheduled run delivers only filings you haven't seen yet, so it never double-counts and never skips a day.
- **Clean, typed fields.** Amounts are numbers (or `"Indefinite"`), booleans are booleans, dates are ISO, industry groups come with their sector, and the issuer name is also given as a cleaned `companySearchHint` ready for a domain lookup.
- **Weekend-proof.** SEC doesn't accept filings on weekends and federal holidays. If your dates contain no filings, the Actor automatically uses the most recent filing day, and the run summary says so.
- **Fair to SEC and stable for you.** Requests are capped at 5 per second (SEC allows 10) and carry a declared User-Agent, as SEC's fair-access policy requires. That keeps runs from being blocked.
- **Priced per useful row.** $4 per 1,000 delivered filings, a fraction of what funding-data scrapers usually charge.

### Who uses it, and how it fits a pipeline

- **VCs, angels and investor relations:** see new raises in your sectors and regions daily, track competitors' and portfolio companies' filings, and spot co-investment and secondary opportunities.
- **B2B sales:** a company that has just raised has budget and a mandate to grow. Filter by industry, state and `minAmountSold`, then work the list while it's fresh.
- **Fintech and data teams:** a structured, typed feed of private-market activity for scoring models, CRMs and dashboards.
- **Journalists and researchers:** catch raises before they're announced, and see who signs, who sells and how much.

**Hiring and outreach pipeline.** Form D doesn't include a website. Take `companySearchHint` with `address.city` and `address.state`, resolve the company's domain (with a search step or your enrichment tool), then:

1. Feed the domains to our **Company Career Page Jobs Scraper** to see who the newly funded companies are hiring. A raise followed by new sales or engineering roles is a strong buying signal.
2. Feed them to our **B2B Outreach Route Finder** to get the best inbox, contact form or phone line for each company.

### What Form D is, and what it isn't

**Form D is** the "notice of exempt offering of securities." A company or fund files it when it sells securities without SEC registration under Regulation D (Rule 504, 506(b) or 506(c)) or Section 4(a)(5). It is public, filed electronically, and usually appears on EDGAR within minutes of acceptance. It is the earliest public signal of many seed, venture, real estate and private credit raises.

**Form D is not** a complete funding-round database:

- Amounts are **self-reported** by the issuer and describe the offering, not a priced round. `totalAmountSold` is the amount sold *so far*. A $5M SAFE round can show $4.5M sold, and later amendments (Form D/A) update it.
- Investor names and valuations are **not** disclosed. Only the number of investors and whether any are non-accredited.
- Many raises never file a Form D (for example some SAFEs and convertible notes, foreign raises, or companies that rely on other exemptions), and some file late.
- A Form D can describe a fund, a real estate deal or an SPV as easily as a startup. That is why the pooled-fund filter and industry filters matter.

Use it as a fast, official signal and combine it with your own research.

### What data you get

One row per filing (`type: "filing"`). If a filing can't be downloaded or parsed, you get an uncharged status row (`type: "status"`).

| Field | Description |
|---|---|
| `accessionNumber` | SEC's unique filing ID, for example `0002160401-26-000001` |
| `formType`, `isAmendment`, `previousAccessionNumber` | `D` (new notice) or `D/A` (amendment), and the filing it amends |
| `filedAt` | EDGAR filing date (YYYY-MM-DD, US Eastern) |
| `cik`, `issuerName`, `companySearchHint` | SEC company ID, legal name as filed, and the cleaned name for domain lookup (`Acme Robotics, Inc.` → `Acme Robotics`, `X LLC d/b/a Y` → `Y`) |
| `entityType`, `jurisdictionOfInc` | Corporation, LLC, Limited Partnership…, and the state or country of incorporation |
| `yearOfInc`, `yearOfIncRange` | Year of incorporation when disclosed, and `within_five_years`, `over_five_years` or `yet_to_be_formed` |
| `address` | `{ street, city, state, zip, country }` of the principal place of business. `state` is the 2-letter code for US issuers |
| `phone`, `previousNames`, `coIssuers[]` | Issuer phone, former names, and co-issuers on the same filing |
| `industryGroup`, `industrySector` | Form D industry, for example `Computers` in sector `Technology`, or `Biotechnology` in `Health Care` |
| `isPooledInvestmentFund`, `investmentFundType`, `is40Act` | Fund flag (industry Pooled Investment Fund, or pooled fund interests offered), fund type (Venture Capital, Private Equity, Hedge…) |
| `revenueRange`, `aggregateNetAssetValueRange` | Size bracket when disclosed, for example `No Revenues`, `$1 - $1,000,000`, `Decline to Disclose` |
| `securityTypes[]` | Equity, Debt, Option or warrant, Pooled fund interests, `Other: SAFE`… |
| `federalExemptions[]` | Exemptions claimed, as filed (see the codes below) |
| `dateOfFirstSale`, `firstSaleYetToOccur` | Date of the first sale, or `true` if no sale has happened yet |
| `isMoreThanOneYear`, `isBusinessCombination` | Offering expected to last over a year; offering is part of a merger or acquisition |
| `totalOfferingAmount`, `totalAmountSold`, `totalRemaining` | USD numbers. Offering size and remaining can be `"Indefinite"` |
| `minimumInvestment` | Minimum investment accepted (USD) |
| `hasNonAccreditedInvestors`, `numberNonAccreditedInvestors`, `totalNumberAlreadyInvested` | Investor counts |
| `salesCommissions`, `findersFees`, `useOfProceeds` | USD amounts, and `useOfProceedsNote` / `offeringNote` with the issuer's own clarifications |
| `salesCompensationRecipients[]` | Brokers and placement agents: `{ name, crdNumber, associatedBrokerDealer, associatedBrokerDealerCrd, statesOfSolicitation[] }` |
| `relatedPersons[]` | Executive officers, directors and promoters as filed: `{ name, relationships[], relationshipClarification, city, state }` |
| `signatureDate` | Date the filing was signed |
| `filingUrl`, `formViewUrl`, `primaryDocUrl` | EDGAR filing index, the human-readable form, and the source XML |
| `isNew`, `scrapedAt` | `true` in monitoring mode; time of extraction |

**Exemption codes:** `06b` = Rule 506(b), `06c` = Rule 506(c) (general solicitation allowed), `04` = Rule 504 (with `04.1`–`04.3` sub-items), `4a5` = Securities Act Section 4(a)(5), `3C` = Investment Company Act Section 3(c), with `3C.1` = 3(c)(1) (100-investor funds) and `3C.7` = 3(c)(7) (qualified purchasers). `3C` codes almost always mean a fund.

The key-value store has a `SUMMARY` record with the date range used, whether the weekend fallback kicked in, counts per stage (listed, amendments skipped, seen before, read, filtered out per filter, delivered, failed), industries seen, and the SEC request rate actually used.

### How to use

1. Pick the dates: **Filed in the last N days** (1 = yesterday plus today so far), or set **Filed from** / **Filed to**.
2. Keep **Exclude pooled investment funds** on unless you research funds. Optionally pick **Industry groups** (for example Technology or Health Care), **Issuer US states**, **Minimum amount sold** and other filters.
3. Set **Max filings to return**. It caps both the result size and the cost.
4. Optionally enter **Your contact email for SEC**. See the FAQ.
5. Click **Start**, then export the **Raises** or **Outreach** view as CSV, Excel or JSON.

```json
{
  "lastNDays": 7,
  "excludePooledFunds": true,
  "includeAmendments": false,
  "industryGroups": ["Technology", "Biotechnology", "Other Health Care"],
  "states": ["CA", "NY", "MA", "TX"],
  "minAmountSold": 1000000,
  "includeRelatedPersons": true,
  "maxFilings": 500
}
```

### Daily monitoring recipe

1. Save a task with `"lastNDays": 1`, `"onlyNewSinceLastRun": true` and your filters. Use a unique **State store name** per task, for example `form-d-biotech-ny`.
2. Add a **Schedule** in Apify Console, for example every day at 08:00 and 20:00 New York time. Each run lists yesterday and today and delivers only filings that earlier runs did not process. The overlap means nothing is missed when filings land late in the evening. On weekends a run simply returns nothing new.
3. Add an **integration** on the task: Slack, email, Google Sheets, Zapier, Make, n8n or a webhook on "run succeeded". Use the dataset's `overview` view for a compact digest.
4. The first run delivers the backlog for the window. Later runs deliver only new raises. If **Max filings** cuts a run short, the filings left over stay "new" and arrive in the next run.

### Output example

A real row from a local test run (2026-10-15), trimmed. Person names and the phone number are redacted here, but the Actor returns them as filed.

```json
{
  "type": "filing",
  "accessionNumber": "0002160401-26-000001",
  "formType": "D",
  "isAmendment": false,
  "filedAt": "2026-10-15",
  "cik": "0002160401",
  "issuerName": "Jaccard, Inc",
  "companySearchHint": "Jaccard",
  "entityType": "Corporation",
  "jurisdictionOfInc": "DELAWARE",
  "yearOfInc": 2026,
  "yearOfIncRange": "within_five_years",
  "address": { "street": "2261 MARKET ST., STE 13487", "city": "San Francisco", "state": "CA", "zip": "94114", "country": "United States" },
  "phone": "415-xxx-xxxx",
  "industryGroup": "Computers",
  "industrySector": "Technology",
  "isPooledInvestmentFund": false,
  "revenueRange": "No Revenues",
  "securityTypes": ["Option, warrant or other right to acquire"],
  "federalExemptions": ["06b"],
  "dateOfFirstSale": "2026-07-31",
  "isMoreThanOneYear": false,
  "totalOfferingAmount": 5000000,
  "totalAmountSold": 4517000,
  "totalRemaining": 483000,
  "minimumInvestment": 5000,
  "hasNonAccreditedInvestors": false,
  "totalNumberAlreadyInvested": 41,
  "salesCommissions": 0,
  "findersFees": 0,
  "useOfProceeds": 37500,
  "salesCompensationRecipients": [],
  "relatedPersons": [
    { "name": "(name as filed)", "relationships": ["Executive Officer", "Director"], "relationshipClarification": null, "city": "San Francisco", "state": "CA" }
  ],
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/2160401/000216040126000001/0002160401-26-000001-index.htm",
  "formViewUrl": "https://www.sec.gov/Archives/edgar/data/2160401/000216040126000001/xslFormDX01/primary_doc.xml",
  "scrapedAt": "2026-10-16T11:29:08.434Z"
}
```

### Pricing

**$0.004 per delivered filing** (event `form-d-filing`), which is $4 per 1,000 filings.

| Run | Filings delivered | Cost |
|---|---|---|
| One business day, default filters (operating companies, no amendments) | about 90 | about $0.36 |
| One business day, Technology only | about 20 | about $0.08 |
| Daily monitoring, default filters, for a month | about 2,000 | about $8 |
| 1,000 filings | 1,000 | $4.00 |

Counts come from test runs on 13 to 15 October 2026: 1,061 filings listed, 362 amendments skipped, 417 pooled funds filtered out, 282 delivered.

**Not charged:** filings removed by your filters (pooled funds, industry, state, country, amounts, name), amendments when they are excluded, filings already delivered in earlier runs in monitoring mode, and status rows for failed downloads. **Max filings to return** caps every run. If you set a maximum cost per run, the Actor stops cleanly when it is reached and records that in the summary.

### Integrations / scheduling

- **Schedules:** daily or twice daily with monitoring mode, as described above.
- **Integrations and webhooks:** send each run's new raises to Slack, email, Google Sheets, Zapier, Make, n8n or your own endpoint with Apify integrations. No extra setup in the Actor.
- **API:** start runs and read the dataset from any language with the Apify API or the JavaScript and Python clients. Add `?view=overview` or `?view=outreach` for compact tables.
- **MCP and AI agents:** call the Actor as a tool through the Apify MCP server, so an agent can answer "which biotech companies in Massachusetts raised over $5M this week?"

### FAQ & limitations

**What contact email should I enter, and is it required?** It's optional. SEC asks automated tools to identify themselves in the User-Agent header with contact details. With an email, requests are sent as `Juddroid Apify Actor sec-form-d-funding-tracker you@company.com`. Without one, the Actor declares its public Store page instead, which SEC also accepts. Your email is sent only to sec.gov. Enter it if you run large backfills, so SEC can reach you instead of blocking traffic.

**How fresh is the data?** Form D filings appear in EDGAR search within minutes of acceptance. Filings accepted after 5:30 pm Eastern get the next business day's date. Runs that cover "yesterday and today" catch everything, and monitoring mode removes the overlap.

**How fast is it?** About 5 filings per second. A full business day (around 350 filings, of which about 220 new notices) takes under a minute. Each filing is one request, and filtering happens after it is read, so narrow filters don't make a run faster, only cheaper.

**How far back can I go?** Up to 730 days per run. EDGAR has structured Form D XML from 2009 onward. For longer histories, run several date ranges.

**Which date is `filedAt`?** The EDGAR filing date (US Eastern). `dateOfFirstSale` is when the offering's first sale happened, often weeks earlier.

**What if SEC is unreachable?** Filings are listed from EDGAR full-text search. If that fails for a past date, the Actor uses SEC's official daily form index instead. A date that can't be listed at all produces a status row, and if nothing could be read the run is marked as failed so your alerts fire. If SEC ever answers with its rate-limit page, the Actor stops instead of retrying hard.

**Proxy?** Not needed. EDGAR is a public government source. The 5-requests-per-second cap applies with or without a proxy.

**Responsible use.** Form D is a public regulatory filing. The names of executive officers, directors and promoters are disclosed by law and delivered exactly as filed, with city and state only (no street address for people). If you use these names for outreach, follow the CAN-SPAM Act, GDPR and other privacy and marketing rules that apply to you, honor opt-outs, and don't present Form D data as verified financial information. This Actor follows SEC's fair-access policy: it declares itself, stays well under the 10 requests per second limit and does not try to get around blocks. It is not affiliated with or endorsed by the SEC.

# Actor input Schema

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

Used when no dates are set below. 1 = yesterday plus today so far, 7 = the last week plus today (US Eastern filing dates). 0 = today only. A normal business day has 250 to 450 Form D filings, of which roughly half are pooled investment funds. Larger windows take longer (about 5 filings read per second).

## `filedFrom` (type: `string`):

Optional. First filing date (US Eastern, inclusive). Setting a date overrides Last N days. If only this is set, the range runs to today.

## `filedTo` (type: `string`):

Optional. Last filing date (inclusive). If only this is set, the range is that single day.

## `fallbackToLatestFilings` (type: `boolean`):

SEC does not accept filings on weekends and US federal holidays. When the chosen dates contain no Form D filings at all, the Actor uses the most recent earlier filing day instead (it walks back up to three filing days until something matches your filters). The run summary says which day was used. Turn off to get an empty result for such dates.

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

Upper limit of filing rows after filters. This caps your cost: each row is one charged event. Newest filing dates are processed first.

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

Most Form D filings are hedge, private equity, venture and SPV fund vehicles, not operating companies. On (default): drop filings whose industry group is Pooled Investment Fund or that offer pooled fund interests. Turn off to keep funds (useful for LP and fund-formation research). Excluded filings are free.

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

Form D/A updates an earlier notice, for example a new amount sold or annual renewal. Off (default): only new notices (Form D). On: amendments are included and marked isAmendment with the previous accession number.

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

Keep only these Form D industry groups. Pick a whole sector (for example Technology = Computers, Telecommunications, Other Technology) or single groups. Leave empty for all industries.

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

Keep only issuers whose principal place of business is in these US states. Two-letter codes or names, for example CA, NY, Texas. Canadian provinces work by name (Ontario). Leave empty for all.

## `countries` (type: `array`):

Keep only issuers located in these countries, for example United States, Canada, Cayman Islands, United Kingdom (US, USA and UK work too). Leave empty for all.

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

Keep only filings that report at least this much already sold, for example 1000000 for raises of $1M or more. Filings without a number are dropped when this is set.

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

Keep only offerings whose total size is at least this amount. Offerings sized "Indefinite" (no fixed cap) are kept.

## `issuerNameContains` (type: `array`):

Keep only filings whose issuer or co-issuer name contains one of these texts (case-insensitive), for example Therapeutics, AI, Labs.

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

Adds relatedPersons: the names, roles and city/state of the executive officers, directors and promoters listed on the filing. This is public regulatory disclosure, delivered as filed. Turn off for issuer-level data only.

## `onlyNewSinceLastRun` (type: `boolean`):

Monitoring mode. Accession numbers are remembered in the named key-value store below, so each run returns (and charges) only filings that earlier runs did not process. Filings cut by Max filings stay new for the next run. Combine with a daily schedule and Last N days = 1 or 2.

## `stateStoreName` (type: `string`):

Named key-value store that keeps the seen accession numbers between runs (only used with the option above). Use a different name for each saved task that has different filters. Lowercase letters, digits and hyphens.

## `contactEmail` (type: `string`):

SEC asks automated tools to declare who is calling in the User-Agent header. If you enter an email, requests are sent as "Juddroid Apify Actor sec-form-d-funding-tracker you@company.com". Leave empty to declare the Actor's public Store page instead. Only sent to sec.gov.

## `maxConcurrency` (type: `integer`):

How many filings are downloaded at the same time. All requests to SEC are always capped at 5 per second in total (SEC allows 10), so values above 4 rarely make runs faster.

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

Optional and usually not needed: SEC EDGAR is a public government source and works with direct requests. The 5 requests per second cap applies with or without a proxy.

## Actor input object example

```json
{
  "lastNDays": 1,
  "fallbackToLatestFilings": true,
  "maxFilings": 20,
  "excludePooledFunds": true,
  "includeAmendments": false,
  "includeRelatedPersons": true,
  "onlyNewSinceLastRun": false,
  "stateStoreName": "form-d-state",
  "maxConcurrency": 4
}
```

# Actor output Schema

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

No description

## `outreach` (type: `string`):

No description

## `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 = {
    "lastNDays": 1,
    "maxFilings": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("frank_conifer_af4/sec-form-d-funding-tracker").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": 1,
    "maxFilings": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("frank_conifer_af4/sec-form-d-funding-tracker").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": 1,
  "maxFilings": 20
}' |
apify call frank_conifer_af4/sec-form-d-funding-tracker --silent --output-dataset

```

## MCP server setup

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

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/N0wia7bulXccpCwQ9/builds/rYfRak6H6d9OULgBk/openapi.json
