# SEC Form D Monitor — Private Placement Alerts (`incontrovertible_gate/form-d-monitor`) Actor

Real-time alerts on SEC Form D filings — track which startups raised, which hedge funds opened to LPs, which fund managers filed their first vehicle. Granular filtering by industry, offering size, exemption type, related persons. The
PitchBook / CB Insights alternative built on EDGAR.

- **URL**: https://apify.com/incontrovertible\_gate/form-d-monitor.md
- **Developed by:** [Netsrac](https://apify.com/incontrovertible_gate) (community)
- **Categories:** Lead generation, News, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $300.00 / 1,000 filing alert 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### SEC Form D Monitor — Real-Time Private Placement Alerts

**Get a Slack, email, or webhook notification the moment a startup raises capital, a hedge fund opens to LPs, or an emerging fund manager files their first Form D.** Built directly on the official **SEC EDGAR** Form D feed — no scraping, no anti-bot, no auth needed. Granular filtering by industry, offering size, exemption rule, related persons, and more.

A modern, programmable alternative to **PitchBook**, **CB Insights**, **Preqin**, **Crunchbase Pro**, and **DealCloud** — for VC associates, PE deal-flow teams, executive recruiters, fund-of-funds, family offices, and anyone who needs to know about private placements **the same day they're filed**.

> **TL;DR:** Every private fundraise in the US must file Form D with the SEC within 15 days of the first sale. This actor watches that feed in real time, filters for what matters to you, and pushes alerts. Pay only $0.30 per matched filing delivered.

### What does Form D Monitor do?

This actor polls the official **SEC EDGAR Form D / D/A real-time feed** — the regulatory filing every issuer of unregistered securities (private placements, VC rounds, PE/hedge fund LP raises, real estate funds, crypto venture funds, angel investments) **must file within 15 days of the first sale**.

For each new Form D, it parses the issuer's primary XML, extracts every meaningful field (issuer name, entity type, industry group, offering amount, amount sold, federal exemption rule cited, related officers/directors/promoters, jurisdiction, year of incorporation), applies your filters, and delivers structured alerts.

#### Why this beats free alternatives
- **The free SEC EDGAR website** lets you search Form D filings, but doesn't push alerts, support watchlists, or filter by offering size / industry / exemption type.
- **Existing Apify Form D scrapers** are batch dumps — you pay, get a CSV, and that's it. **No real-time monitoring.**
- **n8n / Zapier DIY** workflows break the moment EDGAR's RSS shape changes.

#### Why this beats expensive alternatives
- **PitchBook** ≈ $30K/seat/year. **CB Insights** ≈ $60K/year. **Preqin** ≈ $20K/year. **DealCloud** ≈ $XK/seat/year.
- This actor: ~$10–$100/month for typical use, depending on how broad your filters are.

### Why use Form D Monitor?

#### Buyer personas + use cases

##### 🏦 VC / PE associate — deal-flow scouting
Watch for new Form D filings in your sector (e.g. `Biotechnology`, `Other Technology`) with offering amounts in your check-size range. The moment a YC or a16z portfolio company files, you know — usually before the press release. **Cold outreach to founders within 24 hours of their announce.**

##### 👥 Executive recruiter
Set `firstTimeFilerOnly: true` to surface brand-new entities. New corporations + new LPs = new C-suites being formed. Monitor by `relatedPersonNames` to track repeat-founder moves.

##### 🏛️ Fund-of-funds / wealth manager
Filter `investmentFundOnly: true` + minimum offering $25M+. Surfaces every fund manager raising LP capital. Family offices use this to scout new emerging managers before they're on the conference circuit.

##### 💼 Competitive sales intelligence
Watch competitors (`issuerNameKeywords: ["Acme Corp", "Stripe"]`). When they raise, your sales team gets a Slack ping — "competitor just raised $50M, expect aggressive hiring/expansion."

##### 📰 Financial journalist / newsletter creator
Beat the Reuters/Bloomberg cycle. Filter to >$50M offerings by hot-sector startups. Alerts hit Slack within 5 minutes of EDGAR posting.

##### 🏢 Real estate / specialty finance
Filter `industryGroupTypes: ["Real Estate Funds", "REITS & Finance"]`. Track every new real estate syndication.

### How to use Form D Monitor

> ⚠️ **Important: this actor must be scheduled to receive ongoing alerts.** A single run only checks once. Use Apify's **built-in Schedules** feature — no Zapier, n8n, cron server, or external tool needed.

1. **Click "Try for free"** to add the actor to your Apify account.
2. **Configure the input:** narrow your filters (industry, min offering, related persons, etc.) — see the detailed Input section below. The narrower, the higher the signal-to-noise.
3. **Pick a notification channel:** Slack, Email digest, or Custom webhook. Or `none` to write to dataset only and use Apify integrations.
4. **First run: enable `testMode`** to fire one alert for the most recent matching filing and verify your channel works.
5. **Set up the Schedule:** Actor → Schedules → New schedule → cron `0 */2 * * *` (every 2 hours) is the recommended default for active deal-flow monitoring.

#### Schedule cadence cheat sheet

| Cron | Frequency | Best for |
|------|-----------|----------|
| `*/30 * * * *` | every 30 min | Active deal-flow scouting at peak Q1/Q4 |
| `0 */2 * * *` | every 2 hours | Standard VC/PE scouting (default) |
| `0 9 * * 1-5` | weekdays 9am UTC | Daily morning digest only |

### Input fields (granular filtering — this is the product)

| Field | Description |
|---|---|
| `industryGroupTypes` | Issuer-reported industry. e.g. `Other Technology`, `Biotechnology`, `Pooled Investment Fund`. **Empty = all industries.** |
| `minOfferingAmount` | Min `totalOfferingAmount` USD. Default $1M (filters out friends-and-family). Set 0 for no min. |
| `maxOfferingAmount` | Max cap. Useful for early-stage scouting (e.g. <$10M = pre-Series B). |
| `requireAmountSold` | If true, only include filings where capital was actually closed (`totalAmountSold > 0`). |
| `entityTypes` | Corporation / LP / LLC / etc. VCs typically watch `Corporation`. PE/hedge funds = `Limited Partnership`. |
| `investmentFundOnly` | True = only pooled investment vehicles (3(c)(1) / 3(c)(7) hedge/PE/VC funds). |
| `operatingCompanyOnly` | True = exclude all funds, only operating companies. **Use this for VC deal-flow scouting.** |
| `federalExemptions` | 506(b) traditional / 506(c) general solicitation OK / 504 small / 4(a)(6) crowdfunding. |
| `states` | 2-letter US state codes filter by issuer address. |
| `excludeAmendments` | Exclude Form D/A re-filings. Default true for clean new-deal signal. |
| `firstTimeFilerOnly` | Only alert for issuers' very first SEC filing. Strongest "brand new entity" signal. |
| `relatedPersonNames` | Track specific GPs, board members, founders by name (substring match). |
| `issuerNameKeywords` | Substring match on issuer name. e.g. `["Sequoia", "Andreessen", "Tiger"]`. |
| `lookbackHours` | How far back to scan each run. Default 24h. Dedup ensures no duplicate alerts. |
| `notificationChannel` | `none` / `slack` / `email` / `webhook` |
| `slackWebhookUrl` / `emailRecipient` / `customWebhookUrl` | Channel credentials |
| `userAgent` | **Required.** SEC fair-access policy: `"Your Name your@email.com"`. |
| `testMode` | First-run sanity check — fires one alert without dedup. |

### Output

Every match is also pushed to the run's dataset. Example item:

```json
{
  "accessionNumber": "000163834326000005",
  "filedAt": "2026-05-07T14:01:49-04:00",
  "isAmendment": false,
  "formType": "D",
  "cik": "0001638343",
  "issuerName": "Passage Inc.",
  "previousNames": ["Core LLC"],
  "entityType": "Corporation",
  "jurisdictionOfInc": "DELAWARE",
  "yearOfInc": "Over 5 years",
  "city": "DETROIT",
  "state": "MI",
  "industryGroup": "Other Technology",
  "investmentFundType": "",
  "is3c1": false,
  "is3c7": false,
  "federalExemptions": ["06b"],
  "totalOfferingAmount": 1175000,
  "totalAmountSold": 610000,
  "totalRemaining": 565000,
  "salesCommissions": 0,
  "clarificationOfResponse": "Of the total amount sold, $285,000 represents new money for Series A Preferred Stock...",
  "relatedPersons": ["Alex Linebrink", "Patrick Misch", "Donald W. Layden, Jr."],
  "firstTimeFiler": false,
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/1638343/000163834326000005/0001638343-26-000005-index.htm"
}
````

You can download the dataset in **JSON, CSV, Excel, or HTML** from the Apify Console.

### Pricing — pay-per-event

This actor uses **Apify pay-per-event pricing: ~$0.30 per matched filing delivered**. Quiet days cost $0. Compare to:

| Service | Approx cost |
|---|---|
| PitchBook | $30,000 / seat / year |
| CB Insights | $60,000 / year |
| Preqin Pro | $20,000 / year |
| DealCloud | $XK / seat / year |
| **Form D Monitor** | **~$5–$100 / month for typical use** |

A VC associate with tight industry filters (`Other Technology` + min $1M offering) typically sees 30–80 matches/month = **$9–$24/month**.

A wide-net family office tracking all investment funds typically sees 200–500 matches/month = **$60–$150/month**.

### FAQ

**Is this legal?** Yes. SEC EDGAR is the official public US securities filing system under the Open Government initiative. All Form D data is public-domain.

**How fresh is the data?** EDGAR's RSS updates every few minutes. Latency from filing acceptance to your alert is your scheduled-run interval (~2 hours by default) plus ~10 seconds for parsing.

**Why is `totalAmountSold` zero on some filings?** Many issuers file Form D before they've actually closed capital — the sale completes later. Use `requireAmountSold: true` to filter to only closed rounds.

**Can I track specific people across companies?** Yes — `relatedPersonNames` does exactly that. Useful for repeat-founder tracking.

**Does this cover Form D in non-US jurisdictions?** No — US SEC EDGAR only. UK private placements, EU private offerings, etc. would need separate actors.

**Does this cover Form ADV (RIA registration)?** No — Form D only. ADV is a separate actor opportunity.

### Support

Open an issue on the actor's **Issues** tab. Feature requests welcome.

***

*Disclaimer: This actor is an information-retrieval tool for publicly available SEC filings. Nothing in its output constitutes investment advice. Form D filings can be amended; always verify via SEC.gov before making any decision.*

**Keywords:** SEC Form D alerts, Form D monitor, private placement alerts, EDGAR Form D, Form D API, Form D tracker, VC deal flow software, PE deal sourcing, fund manager database, hedge fund LP raise alerts, 3(c)(1) filings, 3(c)(7) filings, 506(b) Reg D, 506(c) general solicitation, PitchBook alternative, CB Insights alternative, Preqin alternative, DealCloud alternative, Crunchbase alternative, fund-of-funds intelligence, family office deal flow, private fund formation tracker.

# Actor input Schema

## `industryGroupTypes` (type: `array`):

Filter Form D filings to these issuer-reported industries. Leave empty to match all.

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

Only alert on filings with `totalOfferingAmount` ≥ this value. Filters out tiny friends-and-family rounds. Set 0 for no filter.

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

Cap by offering size. Useful for early-stage scouting (e.g. set 10000000 to see only sub-$10M raises). Leave 0 for no cap.

## `requireAmountSold` (type: `boolean`):

If true, only include filings where `totalAmountSold > 0` (i.e. capital actually closed, not just offered).

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

Filter by issuer's legal entity type. Most VC/PE deals = Corporation or Limited Partnership. Hedge funds = Limited Partnership or LLC.

## `investmentFundOnly` (type: `boolean`):

If true, only include filings where issuer claimed an Investment Company Act exemption (3(c)(1) for ≤100 LPs, 3(c)(7) for qualified purchasers). This is the canonical signal for hedge funds + PE/VC funds raising LP capital.

## `operatingCompanyOnly` (type: `boolean`):

If true, EXCLUDE pooled-investment-vehicle filings. Use this for VC deal-flow scouting (you want startups, not other VCs' fund raises).

## `federalExemptions` (type: `array`):

Filter by Reg D rule cited. 506(b) = traditional accredited-only private placement. 506(c) = general solicitation allowed. 504 = small offerings up to $10M.

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

2-letter state codes (e.g. CA, NY, MA). Filters by issuer's primary address. Empty = include all states + international.

## `excludeAmendments` (type: `boolean`):

If true, only count first-filed Form D. Form D/A = re-filing with updated info. Default true for clean deal-flow signal.

## `firstTimeFilerOnly` (type: `boolean`):

If true, only alert when this CIK has never filed any SEC document before. Strong signal for brand-new entities (just-formed startups, just-launched funds).

## `relatedPersonNames` (type: `array`):

Match if any of these strings appears (case-insensitive) in the related-persons list (officers, directors, promoters). Use to track GPs, board members, repeat founders.

## `issuerNameKeywords` (type: `array`):

Substring match on issuer name. Useful for tracking specific fund families (e.g. 'Sequoia', 'Andreessen', 'Tiger'). Empty = match all.

## `lookbackHours` (type: `integer`):

Each run checks the most recent EDGAR filings. The actor's RSS-only window is the last ~100 Form Ds (≈last day during peak Q1). Dedup ensures no duplicate alerts even if you run frequently.

## `notificationChannel` (type: `string`):

Where to push alerts. 'none' = dataset only (use Apify integrations like Zapier or Make to wire alerts to your stack).

## `slackWebhookUrl` (type: `string`):

Incoming-webhook URL from your Slack app. Required when channel is 'slack'.

## `emailRecipient` (type: `string`):

Email address to send alerts to. Required when channel is 'email'. Sent via Apify's mail-sending service (no SMTP config needed).

## `emailSubjectPrefix` (type: `string`):

Prepended to every email alert subject. e.g. '\[Form D]'.

## `customWebhookUrl` (type: `string`):

Any HTTPS endpoint receiving JSON POST per match. Pipe to Affinity, Salesforce, Notion, or your own backend.

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

SEC requires a real User-Agent with name + email per their fair-access policy. Format: 'Your Name your@email.com'.

## `testMode` (type: `boolean`):

Ignore dedup state and fire one alert for the most recent matching filing. Use this to confirm your channel works before scheduling.

## Actor input object example

```json
{
  "industryGroupTypes": [],
  "minOfferingAmount": 1000000,
  "maxOfferingAmount": 0,
  "requireAmountSold": false,
  "entityTypes": [],
  "investmentFundOnly": false,
  "operatingCompanyOnly": false,
  "federalExemptions": [],
  "states": [],
  "excludeAmendments": true,
  "firstTimeFilerOnly": false,
  "relatedPersonNames": [],
  "issuerNameKeywords": [],
  "lookbackHours": 24,
  "notificationChannel": "none",
  "emailSubjectPrefix": "[Form D Monitor]",
  "userAgent": "Form D Monitor your-email@example.com",
  "testMode": false
}
```

# Actor output Schema

## `alerts` (type: `string`):

All matched Form D filings from this run. Download as JSON, CSV, Excel, or HTML.

## `runConsole` (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 = {
    "industryGroupTypes": [],
    "entityTypes": [],
    "federalExemptions": [],
    "states": [],
    "relatedPersonNames": [],
    "issuerNameKeywords": [],
    "userAgent": "Form D Monitor your-email@example.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("incontrovertible_gate/form-d-monitor").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 = {
    "industryGroupTypes": [],
    "entityTypes": [],
    "federalExemptions": [],
    "states": [],
    "relatedPersonNames": [],
    "issuerNameKeywords": [],
    "userAgent": "Form D Monitor your-email@example.com",
}

# Run the Actor and wait for it to finish
run = client.actor("incontrovertible_gate/form-d-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "industryGroupTypes": [],
  "entityTypes": [],
  "federalExemptions": [],
  "states": [],
  "relatedPersonNames": [],
  "issuerNameKeywords": [],
  "userAgent": "Form D Monitor your-email@example.com"
}' |
apify call incontrovertible_gate/form-d-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=incontrovertible_gate/form-d-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEC Form D Monitor — Private Placement Alerts",
        "description": "Real-time alerts on SEC Form D filings — track which startups raised, which hedge funds opened to LPs, which fund managers filed their first vehicle. Granular filtering by industry, offering size, exemption type, related persons. The\n  PitchBook / CB Insights alternative built on EDGAR.",
        "version": "0.0",
        "x-build-id": "9KxeCUA1F5xuyRMu8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/incontrovertible_gate~form-d-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-incontrovertible_gate-form-d-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/incontrovertible_gate~form-d-monitor/runs": {
            "post": {
                "operationId": "runs-sync-incontrovertible_gate-form-d-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/incontrovertible_gate~form-d-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-incontrovertible_gate-form-d-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "userAgent"
                ],
                "properties": {
                    "industryGroupTypes": {
                        "title": "Industry groups to watch",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter Form D filings to these issuer-reported industries. Leave empty to match all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Other Technology",
                                "Computers",
                                "Telecommunications",
                                "Other Health Care",
                                "Biotechnology",
                                "Pharmaceuticals",
                                "Health Insurance",
                                "Hospitals & Physicians",
                                "Investing",
                                "Investment Banking",
                                "Pooled Investment Fund",
                                "Hedge Fund",
                                "Private Equity Fund",
                                "Venture Capital Fund",
                                "Other Banking & Financial Services",
                                "Commercial Banking",
                                "Insurance",
                                "Real Estate Funds",
                                "REITS & Finance",
                                "Residential",
                                "Commercial",
                                "Energy",
                                "Coal Mining",
                                "Electric Utilities",
                                "Oil & Gas",
                                "Other Energy",
                                "Manufacturing",
                                "Restaurants",
                                "Retailing",
                                "Travel",
                                "Airlines & Airports",
                                "Lodging & Conventions",
                                "Other Travel",
                                "Construction",
                                "Other Real Estate",
                                "Agriculture",
                                "Business Services",
                                "Other"
                            ]
                        }
                    },
                    "minOfferingAmount": {
                        "title": "Minimum total offering amount (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only alert on filings with `totalOfferingAmount` ≥ this value. Filters out tiny friends-and-family rounds. Set 0 for no filter.",
                        "default": 1000000
                    },
                    "maxOfferingAmount": {
                        "title": "Maximum total offering amount (USD, optional)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap by offering size. Useful for early-stage scouting (e.g. set 10000000 to see only sub-$10M raises). Leave 0 for no cap.",
                        "default": 0
                    },
                    "requireAmountSold": {
                        "title": "Require amount actually sold > 0",
                        "type": "boolean",
                        "description": "If true, only include filings where `totalAmountSold > 0` (i.e. capital actually closed, not just offered).",
                        "default": false
                    },
                    "entityTypes": {
                        "title": "Issuer entity types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter by issuer's legal entity type. Most VC/PE deals = Corporation or Limited Partnership. Hedge funds = Limited Partnership or LLC.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Corporation",
                                "Limited Partnership",
                                "Limited Liability Company",
                                "General Partnership",
                                "Business Trust",
                                "Other"
                            ]
                        }
                    },
                    "investmentFundOnly": {
                        "title": "Investment funds only (3(c)(1) / 3(c)(7))",
                        "type": "boolean",
                        "description": "If true, only include filings where issuer claimed an Investment Company Act exemption (3(c)(1) for ≤100 LPs, 3(c)(7) for qualified purchasers). This is the canonical signal for hedge funds + PE/VC funds raising LP capital.",
                        "default": false
                    },
                    "operatingCompanyOnly": {
                        "title": "Operating companies only (skip funds)",
                        "type": "boolean",
                        "description": "If true, EXCLUDE pooled-investment-vehicle filings. Use this for VC deal-flow scouting (you want startups, not other VCs' fund raises).",
                        "default": false
                    },
                    "federalExemptions": {
                        "title": "Federal exemption types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter by Reg D rule cited. 506(b) = traditional accredited-only private placement. 506(c) = general solicitation allowed. 504 = small offerings up to $10M.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "06b",
                                "06c",
                                "04",
                                "04(a)(5)",
                                "04(a)(6)"
                            ],
                            "enumTitles": [
                                "Rule 506(b) — Traditional Reg D",
                                "Rule 506(c) — General solicitation OK",
                                "Rule 504 — Up to $10M",
                                "Section 4(a)(5)",
                                "Section 4(a)(6) — Crowdfunding"
                            ]
                        }
                    },
                    "states": {
                        "title": "Limit to issuers in these US states (optional)",
                        "type": "array",
                        "description": "2-letter state codes (e.g. CA, NY, MA). Filters by issuer's primary address. Empty = include all states + international.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "excludeAmendments": {
                        "title": "Exclude amendments (Form D/A)",
                        "type": "boolean",
                        "description": "If true, only count first-filed Form D. Form D/A = re-filing with updated info. Default true for clean deal-flow signal.",
                        "default": true
                    },
                    "firstTimeFilerOnly": {
                        "title": "First-time filers only",
                        "type": "boolean",
                        "description": "If true, only alert when this CIK has never filed any SEC document before. Strong signal for brand-new entities (just-formed startups, just-launched funds).",
                        "default": false
                    },
                    "relatedPersonNames": {
                        "title": "Track specific persons by name (optional)",
                        "type": "array",
                        "description": "Match if any of these strings appears (case-insensitive) in the related-persons list (officers, directors, promoters). Use to track GPs, board members, repeat founders.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "issuerNameKeywords": {
                        "title": "Issuer name keywords (optional)",
                        "type": "array",
                        "description": "Substring match on issuer name. Useful for tracking specific fund families (e.g. 'Sequoia', 'Andreessen', 'Tiger'). Empty = match all.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "lookbackHours": {
                        "title": "Lookback window (hours)",
                        "minimum": 1,
                        "maximum": 168,
                        "type": "integer",
                        "description": "Each run checks the most recent EDGAR filings. The actor's RSS-only window is the last ~100 Form Ds (≈last day during peak Q1). Dedup ensures no duplicate alerts even if you run frequently.",
                        "default": 24
                    },
                    "notificationChannel": {
                        "title": "Notification channel",
                        "enum": [
                            "none",
                            "slack",
                            "email",
                            "webhook"
                        ],
                        "type": "string",
                        "description": "Where to push alerts. 'none' = dataset only (use Apify integrations like Zapier or Make to wire alerts to your stack).",
                        "default": "none"
                    },
                    "slackWebhookUrl": {
                        "title": "Slack webhook URL",
                        "type": "string",
                        "description": "Incoming-webhook URL from your Slack app. Required when channel is 'slack'."
                    },
                    "emailRecipient": {
                        "title": "Email recipient address",
                        "type": "string",
                        "description": "Email address to send alerts to. Required when channel is 'email'. Sent via Apify's mail-sending service (no SMTP config needed)."
                    },
                    "emailSubjectPrefix": {
                        "title": "Email subject prefix",
                        "type": "string",
                        "description": "Prepended to every email alert subject. e.g. '[Form D]'.",
                        "default": "[Form D Monitor]"
                    },
                    "customWebhookUrl": {
                        "title": "Custom webhook URL",
                        "type": "string",
                        "description": "Any HTTPS endpoint receiving JSON POST per match. Pipe to Affinity, Salesforce, Notion, or your own backend."
                    },
                    "userAgent": {
                        "title": "SEC User-Agent",
                        "type": "string",
                        "description": "SEC requires a real User-Agent with name + email per their fair-access policy. Format: 'Your Name your@email.com'."
                    },
                    "testMode": {
                        "title": "Test mode",
                        "type": "boolean",
                        "description": "Ignore dedup state and fire one alert for the most recent matching filing. Use this to confirm your channel works before scheduling.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
