# SEC Form D Funding Leads: Newly Funded US Companies (`moo_iscool/sec-form-d-leads`) Actor

Newly funded US companies from official SEC EDGAR Form D filings. No API key or scraping. Officers, phone, offering size, industry, state. Drops funds and property SPVs. Only-new mode skips filings you already got. About 1 business day behind EDGAR. $4 per 1,000 filings.

- **URL**: https://apify.com/moo_iscool/sec-form-d-leads.md
- **Developed by:** [moo_iscool](https://apify.com/moo_iscool) (community)
- **Categories:** Lead generation, Automation
- **Security:** Limited permissions
- **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 returneds

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 Scraper: Newly Funded Startup & Private Company Leads (Official EDGAR Data)

**Find companies that just raised money, straight from the SEC, without an API key.** Every US company that sells securities privately under Regulation D files a Form D with the SEC within 15 days of its first sale. This actor reads those filings from EDGAR, drops the investment funds and property SPVs, and saves one row per filing: company, address, phone, the officers and directors named on the form, industry, how much is being raised and how much has been sold. Export as JSON, CSV, or Excel, or send it to a CRM, Google Sheets, or a webhook. It uses the SEC's official public files, needs no login, and does not scrape a commercial site.

- **Who it's for:** sales and SDR teams that sell to companies right after a raise, agencies and recruiters, fintech and banking teams, investors and analysts who track private-market activity.
- **Filters:** industry, state, amount sold, offering size, company age, amendments, and three layers of fund filtering so most of what is left is an operating company.
- **Monitor mode:** with only new since last run, a daily schedule returns only filings you haven't received yet, and repeats are not charged.
- **Price:** $4.00 per 1,000 filings ($0.004 each), plus a tiny per-run start fee. Filings removed by the filters, including funds, and filings already seen in only-new mode are free.

#### Quick example

Input (this is the prefilled form):

```json
{
  "filingDays": 1,
  "excludePooledFunds": true,
  "maxResults": 25
}
```

Sample output rows (from a real run on 26 October 2026, which read the Friday 23 October filings; a full record is shown further down):

| company | state | industry | amount sold | primaryContactName | filingDate |
| --- | --- | --- | --- | --- | --- |
| Elucida Labs, Inc. | CA | Other Technology | $225,000 | Suresh Ayyalsamy | 2026-10-23 |
| Upright Education, Inc. | NY | Business Services | $1,533,856 | Benjamin Boas | 2026-10-23 |
| XRHealth, Inc. | MA | Other Health Care | $3,877,693 | Eran Orr | 2026-10-23 |
| Belenus Power Group, Inc. | AZ | Other Energy | $2,689,998 | Jack Bennett | 2026-10-23 |
| Key Proteo, Inc. | WA | Biotechnology | $2,330,000 | SIHOUN HAHN | 2026-10-23 |

#### Limits, up front

- **About one business day behind EDGAR.** The actor reads EDGAR's daily index, which the SEC updates overnight, starting around 10 p.m. Eastern. During the day, and often the next morning, the newest index is the previous business day's. A filer can also wait up to 15 days after its first sale, so a Form D can arrive well after the money moved.
- **US Regulation D filers only.** Form D covers private placements, not IPOs, loans, or companies that raised under other rules. Many private companies never file one.
- **No email addresses.** Form D has none. You get a phone number, a postal address, and the names of the officers, directors, and promoters.
- **The fund filters are heuristics.** Most are based on what the filer ticked on the form, and one goes by the company name. They remove most investment vehicles but not all, and they can drop a real company that looks like one. Each has a switch.
- **Amounts can be "Indefinite".** Some filers do not state an offering amount. Then `offeringAmountIndefinite` is true and `totalOfferingAmount` is null.
- Not affiliated with the SEC.

### How to scrape SEC Form D filings

The actor does three things.

1. Reads EDGAR's daily form index for the days you ask for and picks out the Form D lines (and D/A amendments, if you want them).
2. Opens each filing's structured XML file.
3. Filters the filing, flattens it to one row, and saves it.

It reads the newest day first and skips weekends and holidays, which have no index. It stops as soon as it has your **Max results**. A one-day run with the prefilled input takes about 15 to 20 seconds. If the requested days give no rows at all, it reads up to 2 earlier filing days before it stops, so a normal day does not come back empty. That extra reading is skipped in only-new mode when earlier runs already returned filings for these days.

#### Order of filings

EDGAR lists a day's filings alphabetically. With a small **Max results**, that would return only the early letters. **Order of filings** is set to **Spread across the day** by default, which walks the day's list in an even spread (first, middle, quarters, eighths, and so on), so 25 rows sample the whole alphabet. The order depends only on the day's list, so the same day gives the same order on every run. Pick **Alphabetical** for the EDGAR order.

On the 23 October index with the prefilled input, the 25 company names started with 16 different letters, from A to X, under Spread. Under Alphabetical they started with 11 letters, from A to O.

### How to find newly funded companies every day

With **Only new since last run** on, the actor remembers the accession number of every filing it returned for a given **Monitor name**. The next run skips those filings before it downloads them, so they are not saved and not charged.

1. Create a schedule that runs the actor every weekday morning. US Eastern time fits, because EDGAR files by that clock.
2. Set `onlyNew` to true, give the search a `monitorName`, and set `filingDays` to 2 or 3 so a day that was indexed late is not missed.
3. Use a different monitor name for each saved search.

The memory lives in the named key-value store `sec-form-d-leads-state`, under the key `SEEN_<monitor name>`. The actor saves it right after every batch of rows it pushes, so a restarted run normally does not return those filings again. The save is not atomic with the push. If the run is killed or crashes in the moment between the two, the last few filings can be sent and charged again on the next run. Entries older than 120 days are removed. Named stores stay until you delete them.

Filings that your filters remove are not remembered. If you loosen a filter later, filings from the last few days that it used to remove can come back.

**Do not run two runs of the same monitor name at the same time.** Each run loads the memory when it starts and saves its own copy as it goes. Two overlapping runs can return and bill the same filing, and the later save can drop the other run's entries. Give each schedule its own monitor name, and leave enough time between runs for one to finish.

### Input

Every field is optional.

| Field | What it does |
| --- | --- |
| `filingDays` | How many of the most recent EDGAR filing days to read (1 to 30, default 1). Days with no index are skipped, looking back at most 45 calendar days. If no rows come back, up to 2 earlier days are read as well. |
| `dateFrom`, `dateTo` | `YYYY-MM-DD`. When set, they replace `filingDays`. At most 31 days. One date alone reads just that day. |
| `includeAmendments` | Also return Form D/A filings. Off by default. |
| `excludePooledFunds` | Drop filings whose industry group is Pooled Investment Fund. On by default. |
| `excludeInvestmentVehicles` | Drop filings that the form itself marks as an investment vehicle or a single-asset property company. On by default. |
| `excludeFundLikeNames` | Also drop filings whose company name has a fund or SPV word in it. On by default. |
| `industryGroups` | Keep only industry groups containing one of these words, such as `Technology`, `Health Care`, `Real Estate`. |
| `excludeIndustryGroups` | Drop industry groups containing one of these words. |
| `states` | Issuer state or country codes, such as `CA`, `NY`, `TX`. |
| `minAmountSold`, `minOfferingAmount` | Minimum US dollars sold or offered. |
| `incorporatedWithinFiveYearsOnly` | Keep only companies that say they were incorporated within five years. |
| `includeRelatedPersons` | Add the officers, directors, and promoters named on the filing. On by default. |
| `includeRelatedPersonAddresses` | Add those people's addresses. Off by default. |
| `onlyNew`, `monitorName` | Skip filings earlier runs already returned. |
| `maxResults` | Stop after this many rows (default 200). |
| `order` | `spread` (default) or `alphabetical`. See **Order of filings**. |
| `contactEmail` | Put in the User-Agent sent to sec.gov, as the SEC asks. |

A narrower example, for a sales team selling to young California tech companies that have already taken money:

```json
{
  "filingDays": 5,
  "industryGroups": ["Technology"],
  "states": ["CA"],
  "incorporatedWithinFiveYearsOnly": true,
  "minAmountSold": 100000,
  "onlyNew": true,
  "monitorName": "ca-tech",
  "maxResults": 100
}
```

#### How the filters work

- **Industry groups** match as a case-insensitive "contains". `Technology` also matches `Biotechnology` and `Other Technology`. Use `Other Technology` or `Computers` to be stricter.
- **A missing value never passes a filter that asks for it.** A filing with an `Indefinite` offering has no number, so it is dropped when `minOfferingAmount` is set. A filing that does not report an amount sold is dropped when `minAmountSold` is set.
- **Pooled funds** are the filings where the filer chose the industry group Pooled Investment Fund. Some funds choose another group, so this filter alone lets them through.
- **Investment vehicles** are caught by what the filer ticked, not by name. A filing is dropped when any of these is true:

  - it claims an Investment Company Act exemption: `3C` or any `3C.<number>` item, such as `3C.1`, `3C.5` or `3C.7`. Every 3(c) item on Form D is an exclusion from the definition of an investment company, so all of them are treated the same;
  - the securities offered are pooled investment fund interests;
  - it reports an aggregate net asset value range instead of a revenue range;
  - the industry group is Investing or Pooled Investment Fund;
  - it looks like a single-asset property company: a real estate industry group (Residential, Commercial, REITS and Finance, or Other Real Estate), an LP or LLC, and a revenue answer of Decline to Disclose, No Revenues, or Not Applicable.

  The last rule is a judgment call. It drops property SPVs such as a single apartment building held in its own LLC, and it also drops a small real estate developer that files the same way. On the 23 October index it removed 10 filings, for example "AZI Reed Ave 1517 LP" and "DDC GH LLC" (Commercial, LLC, No Revenues). Turn **Exclude investment vehicles** off to keep them.
- **Fund-like names** catch vehicles the form signals miss. A filing is dropped when its company name contains one of these whole words, ignoring case: fund, funds, feeder, co-invest, coinvest, SPV, vehicle, vehicles, offshore, parallel, aggregator. Examples: "Five Winds Income Fund LLC", "AP Maverick Co-Invest II (B), L.P." Plain LLC, LP, Holdings, and Capital do not count, and the words must stand alone, so "Refund Technologies" and "Fundamental Robotics" stay. It goes by the name only, so a real company called "Parallel Health" is dropped too.
- Filters run in this order: pooled funds, investment vehicles, fund-like names, excluded industries, industries, states, amount sold, offering amount, company age. The `SUMMARY` record counts how many filings each one removed, and `investmentVehicleSignals` shows which signal caught each vehicle.

### What data you get

One row per filing. A company that files several Form Ds in a week appears several times.

| Field | Meaning |
| --- | --- |
| `accessionNumber`, `formType`, `isAmendment`, `filingDate`, `cik` | Which filing it is. `formType` is `D` or `D/A`. `cik` is the issuer's own CIK. |
| `companyName`, `entityType`, `jurisdictionOfIncorporation` | The issuer. |
| `yearOfIncorporation`, `incorporatedWithinFiveYears` | Company age as the filer reports it. The year is null when the form only says "over five years". |
| `street1`, `street2`, `city`, `state`, `stateOrCountryDescription`, `zipCode` | Issuer address. |
| `phone`, `phoneE164` | Phone as filed, and a `+1XXXXXXXXXX` version for 10-digit numbers when the issuer is in a US state, a US territory, or a Canadian province (null otherwise). |
| `industryGroup`, `investmentFundType`, `revenueRange`, `aggregateNetAssetValueRange` | What the company says it does and how big it is. Funds report a net asset value range instead of a revenue range. |
| `federalExemptions`, `securitiesTypes` | Exemption codes such as `06b` (Rule 506(b)) and `06c` (Rule 506(c)), and what is being sold, such as Equity or Debt. |
| `dateOfFirstSale`, `firstSaleYetToOccur` | When the first sale happened, or that it has not yet. |
| `totalOfferingAmount`, `offeringAmountIndefinite`, `totalAmountSold`, `totalRemaining` | The money, in US dollars. |
| `totalInvestors`, `hasNonAccreditedInvestors`, `minimumInvestment` | The investor side. |
| `salesCompensationRecipients`, `hasSalesCompensation` | Brokers or finders named as paid. |
| `relatedPersons`, `primaryContactName`, `relatedPersonsText` | Officers, directors, and promoters. The primary contact is the first Executive Officer, or the first person listed. |
| `filingIndexUrl`, `xmlUrl`, `edgarCompanyUrl` | Links to the filing, its XML, and the company's EDGAR Form D list. |
| `scrapedAt` | When the actor read the filing. |

#### Output example

```json
{
  "accessionNumber": "0002161544-26-000001",
  "formType": "D",
  "isAmendment": false,
  "filingDate": "2026-10-23",
  "cik": "2161544",
  "companyName": "Elucida Labs, Inc.",
  "entityType": "Corporation",
  "jurisdictionOfIncorporation": "DELAWARE",
  "yearOfIncorporation": 2025,
  "incorporatedWithinFiveYears": true,
  "street1": "1133 BARNES LN",
  "street2": null,
  "city": "SAN JOSE",
  "state": "CA",
  "stateOrCountryDescription": "CALIFORNIA",
  "zipCode": "95120",
  "phone": "4082420106",
  "phoneE164": "+14082420106",
  "industryGroup": "Other Technology",
  "investmentFundType": null,
  "revenueRange": "No Revenues",
  "aggregateNetAssetValueRange": null,
  "federalExemptions": ["06b"],
  "securitiesTypes": ["Other: Simple Agreement for Future Equity (SAFE)"],
  "dateOfFirstSale": "2026-10-20",
  "firstSaleYetToOccur": false,
  "totalOfferingAmount": 3000000,
  "offeringAmountIndefinite": false,
  "totalAmountSold": 225000,
  "totalRemaining": 2775000,
  "totalInvestors": 4,
  "hasNonAccreditedInvestors": false,
  "minimumInvestment": 25000,
  "salesCompensationRecipients": [],
  "hasSalesCompensation": false,
  "relatedPersons": [
    { "name": "Suresh Ayyalsamy", "relationships": ["Executive Officer", "Director"], "clarification": null },
    { "name": "Venkata Seshu Syam Surla", "relationships": ["Executive Officer", "Director"], "clarification": null }
  ],
  "primaryContactName": "Suresh Ayyalsamy",
  "relatedPersonsText": "Suresh Ayyalsamy (Executive Officer, Director); Venkata Seshu Syam Surla (Executive Officer, Director)",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/2161544/000216154426000001/",
  "xmlUrl": "https://www.sec.gov/Archives/edgar/data/2161544/000216154426000001/primary_doc.xml",
  "edgarCompanyUrl": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=2161544&type=D",
  "scrapedAt": "2026-10-26T07:40:51.717Z"
}
```

Each run also writes a `SUMMARY` record to the default key-value store: days read, index lines, Form D filings found, XML files fetched, filtered-out counts by reason, rows pushed, repeats skipped, errors, duration, and why the run stopped.

### How much does it cost?

$4.00 per 1,000 filings ($0.004 each) plus a tiny per-run start fee. You pay only for rows saved to the dataset. Filings removed by the filters (pooled funds, investment vehicles, fund-like names, and your own filters), filings already seen in only-new mode, and filings whose XML could not be read are free. If you turn a fund filter off, those fund rows are returned and charged like any other row. If the run has a max charge set, it stops when that limit is reached and the log says so. The run still succeeds.

### Tips

- **HubSpot, Pipedrive, GoHighLevel:** export the dataset as CSV or Excel from the Storage tab. Map `companyName` to Company, `phone` or `phoneE164` to Phone, `primaryContactName` to Contact, and `city`, `state`, `zipCode` to the address fields. Use `accessionNumber` as the unique key so a re-import does not create duplicates. Put `totalAmountSold` and `industryGroup` in custom fields so reps can sort by raise size.
- **Contacts need an email.** Form D has none. Run the company through an email-finder or enrichment tool you already use, with `companyName`, `state`, and `primaryContactName` as inputs.
- **Make, n8n, Zapier:** use the Apify integration to start the actor on a schedule and read the dataset when the run succeeds. Keep `onlyNew` on so each run only passes new filings downstream. A common flow is run finished, get dataset items, filter on `totalAmountSold` above your threshold, create a CRM company, post to Slack.
- **Nested fields:** `relatedPersons` is a list. For flat tools such as CSV, use `relatedPersonsText` and `primaryContactName`, or turn related persons off.
- **Memory and time:** the default is 256 MB and a 10 minute timeout. A one-day run uses about 135 MB.

### Data source and compliance

- The data is public information filed with the US Securities and Exchange Commission and published on sec.gov. The actor uses EDGAR's daily index and each filing's XML. It uses no API key and does not scrape a commercial site.
- Requests follow the SEC's fair-access policy: a declared User-Agent that includes your `contactEmail` (or a generic Apify address), and no more than 5 requests a second (the SEC limit is 10).
- **Personal addresses are off by default.** Related persons can be individuals, and the address on a Form D is sometimes a home address. Turn `includeRelatedPersonAddresses` on only if you have a lawful reason to hold them. Names and roles are what the filing makes public.
- You are responsible for how you use the data, including the anti-spam, telemarketing, and data-protection rules that apply to you. Phone numbers on Form D are typed by the filer and may be a person's mobile.
- Not affiliated with, or endorsed by, the SEC.

### FAQ

#### Do I need an SEC API key?

No. The SEC publishes these files openly, with no key and no login.

#### Why are there so few rows?

Most Form D filings come from funds and property SPVs, and the default filters drop them. Of the 187 Form D filings in the 23 October index, 120 were tagged as pooled funds, and the vehicle rules and the name filter removed more, which left about 47. Check `filteredOut` in the `SUMMARY` record to see what each filter removed. Turn a filter off, or raise `filingDays`, to get more.

#### Why does a run on Monday morning read Friday?

EDGAR has no index for weekends or holidays, and the current day's index is only updated overnight. The actor reads the most recent filing day that has one.

#### Can I get email addresses?

No. Form D does not include them. See Tips for enrichment.

#### Why is a company I expected missing?

It may not have filed a Form D, or filed it later than the days you read, since a company has up to 15 days after its first sale. A filter can also hide it: the investment-vehicle rules drop single-asset real estate LLCs and LPs, the name filter drops names with words like fund or vehicle, and a missing amount fails the amount filters. Only-new mode hides filings already returned for that monitor name.

#### What does "Indefinite" mean in the offering amount?

Some filers write Indefinite instead of a number. The row then has `offeringAmountIndefinite: true` and `totalOfferingAmount: null`. It fails `minOfferingAmount`.

#### Does it handle amendments?

Yes, turn on `includeAmendments`. An amendment is a separate filing with its own accession number, and it shows the figures as amended, not what changed.

#### What am I charged for?

Each row saved to the dataset costs $0.004 ($4.00 per 1,000), plus a tiny per-run start fee. Filings removed by the filters (funds included), filings already seen in only-new mode, and filings whose XML could not be read are free. Filters you turn off no longer remove anything, so those rows are charged.

### Support

Questions, or a filing that looks wrong? Use the feedback tab on this actor's Apify Store page, and include the run ID and the accession number.

# Actor input Schema

## `filingDays` (type: `integer`):

How many of the most recent EDGAR filing days to read. Weekends, holidays and days whose index is not published yet are skipped, and the actor looks back at most 45 calendar days. If these days give no rows, up to 2 earlier days are read too. Ignored when Date from or Date to is set.

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

First filing date to read, written YYYY-MM-DD. When set, this and Date to replace Filing days to read. The range can cover at most 31 days. If only one of the two dates is set, only that day is read.

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

Last filing date to read, written YYYY-MM-DD. Weekends and holidays in the range have no EDGAR index and are skipped.

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

Also return Form D/A amendment filings. Off by default, so each row is a new notice of sale.

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

Drop filings whose industry group is Pooled Investment Fund (hedge funds, private equity and venture funds, feeder vehicles). Funds are most of Form D and rarely useful for sales teams.

## `excludeInvestmentVehicles` (type: `boolean`):

Drop filings that the form itself marks as an investment vehicle: an Investment Company Act exemption (3C, 3C.1, 3C.7), pooled investment fund interests as the security, a net asset value range instead of a revenue range, or the Investing industry group. Also drops single-asset real estate companies, meaning a real estate industry group, a limited partnership or LLC, and no revenue to report (Decline to Disclose, No Revenues or Not Applicable). A real estate developer that files the same way is dropped too. Turn it off to keep them.

## `excludeFundLikeNames` (type: `boolean`):

Also drop filings whose company name contains a whole word such as fund, funds, feeder, co-invest, SPV, vehicle, offshore, parallel or aggregator. This catches investment vehicles that filers did not tag as pooled funds. It goes by the name only, so a real company with one of these words in its name is dropped too. Turn it off to keep them.

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

Keep only filings whose industry group contains one of these words, ignoring case. Examples: Technology, Health Care, Real Estate, Banking, Energy. Technology also matches Biotechnology and Other Technology.

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

Drop filings whose industry group contains one of these words, ignoring case. Example: Real Estate.

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

Keep only issuers whose address is in these states or countries, as two-letter SEC codes. Examples: CA, NY, TX.

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

Keep filings that report at least this much sold so far. Filings with no amount sold are dropped.

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

Keep filings with a total offering of at least this much. Filings with an Indefinite offering have no number and are dropped.

## `incorporatedWithinFiveYearsOnly` (type: `boolean`):

Keep only companies that report being incorporated within the last five years. Filings that do not say are dropped.

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

Add the executive officers, directors and promoters named in the filing: names, roles and the filer's clarification.

## `includeRelatedPersonAddresses` (type: `boolean`):

Add each related person's address as filed. These can be home addresses, so this is off by default. Only turn it on if you have a lawful reason to use them.

## `onlyNew` (type: `boolean`):

Skip filings that earlier runs with the same monitor name already returned. Skipped filings are not saved and not billed. Filings that a filter drops are not remembered, so changing filters later can still return them.

## `monitorName` (type: `string`):

Names the only-new memory. Use a different name for each saved search. Letters, numbers and the symbols ! - \_ . ' ( ) are kept, anything else becomes an underscore.

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

Stop once this many filings are saved. The newest filing day is read first.

## `order` (type: `string`):

Spread reads each day's filings in an even spread over the whole list, so a small Max results samples the whole alphabet. EDGAR lists companies A to Z, so Alphabetical returns the early letters first. Days are always read newest first, and the same day gives the same order on every run.

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

Put in the User-Agent header of requests to sec.gov, as the SEC asks of automated tools. Leave empty to use a generic Apify address.

## Actor input object example

```json
{
  "filingDays": 1,
  "includeAmendments": false,
  "excludePooledFunds": true,
  "excludeInvestmentVehicles": true,
  "excludeFundLikeNames": true,
  "incorporatedWithinFiveYearsOnly": false,
  "includeRelatedPersons": true,
  "includeRelatedPersonAddresses": false,
  "onlyNew": false,
  "monitorName": "default",
  "maxResults": 25,
  "order": "spread"
}
```

# Actor output Schema

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

Dataset with one row per matching Form D filing.

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

JSON summary of the run: counts, filter drops, stop reason.

# 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 = {
    "filingDays": 1,
    "excludePooledFunds": true,
    "excludeInvestmentVehicles": true,
    "excludeFundLikeNames": true,
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("moo_iscool/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 = {
    "filingDays": 1,
    "excludePooledFunds": True,
    "excludeInvestmentVehicles": True,
    "excludeFundLikeNames": True,
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("moo_iscool/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 '{
  "filingDays": 1,
  "excludePooledFunds": true,
  "excludeInvestmentVehicles": true,
  "excludeFundLikeNames": true,
  "maxResults": 25
}' |
apify call moo_iscool/sec-form-d-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,moo_iscool/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/euJeqv8sL8a3DQ5uB/builds/Tml3rSWhBw0wZ5iqu/openapi.json
