# SEC Form D Funding Leads & Change Monitor (`luminar/sec-form-d-funding-monitor`) Actor

Export and monitor official SEC Form D and D/A fundraising filings with structured issuer, offering, amount, exemption, related-person, recipient, and amendment data.

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

## Pricing

from $1.63 / 1,000 form d filings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

Turn official SEC Form D and D/A filings into structured fundraising leads, or monitor the same filing scope for new notices, amendments, and confirmed source corrections. The Actor uses SEC quarterly Form D data, EDGAR indexes, submissions metadata, and filing XML only. It does not use news feeds, company directories, browser automation, proxies, or other Actors as data sources.

### Start in 60 seconds

1. Keep **Get current filing leads** selected.
2. Keep **All Form D filings** to scan the market, or choose an issuer/accession target.
3. Leave the previous 30 completed UTC days and the 100-row limit unchanged for the first run.
4. Run the Actor, then open the Dataset for records and `OUTPUT` for coverage and summary links.

```json
{
  "workflow": "baseline",
  "outputMode": "raw",
  "discovery": "market",
  "daysBack": 30,
  "maxResults": 100
}
```

The rolling window ends on the previous UTC date. This prevents an incomplete current-day EDGAR index from being described as a completed day.

### Choose the workflow

| Workflow | Use it for | First run | Repeat run | Maximum delivered rows |
|---|---|---|---|---:|
| Baseline | One-time funding-lead exports and current filing research | Returns filing rows | Returns the selected filing scope again | 10,000 |
| Standard changes | Normal issuer or market monitoring | Establishes the comparison baseline | Returns up to 200 verified changes | 200 |
| Bulk changes | High-volume market monitoring | Establishes the comparison baseline | Returns up to 10,000 verified changes | 10,000 |

Changes runs compare only identical scopes. The scope includes the workflow, discovery target, rolling or fixed date window, every filter, result and scan limits, result style, and optional monitoring label. Changing one of those values creates a new comparison scope instead of mixing unrelated histories.

### Output: funding leads and verified changes

The Dataset contains one typed row per accepted SEC accession or one explicitly typed monitoring event. `recordType` distinguishes `filing`, `change`, and optional free `unchanged` audit rows. `changeType` identifies `NEW_NOTICE`, `AMENDMENT_FILED`, `SOURCE_CORRECTION_UPDATED`, or `UNCHANGED`.

Each filing keeps:

- Canonical accession number, CIK, issuer name, form, filing date, official SEC links, and stable identities.
- Issuer and co-issuer groups, previous names, entity type, jurisdiction, business address, and filed phone when present.
- Offering dates and type, securities, exemptions, industry/fund type, offering amount, amount sold, minimum investment, and filed investor counts.
- Related persons and disclosed roles without relabeling them as investors.
- Sales-compensation recipients, solicitation jurisdictions, and signatures.
- Source-native groups corresponding to `FORMDSUBMISSION`, `ISSUERS`, `OFFERING`, `RECIPIENTS`, `RELATEDPERSONS`, and `SIGNATURES`, or their current XML equivalents.
- Row-level source receipts, reconciliation status, and coverage.

`OUTPUT` contains the run status, coverage details, requested and reached limits, state receipt, Dataset/API links, and optional tracker summaries. Numeric tracker sums add the filed values of each returned accession. D/A rows are not deduplicated against earlier D filings, so these sums are not a measure of unique capital raised. Missing or indefinite amounts are not turned into zero.

![Official SEC Form D funding leads with filed amounts, amendment status, and accession links](https://api.apify.com/v2/key-value-stores/DJgPR6wwS2tIaLDQW/records/sec_form_d_funding_change_monitor--0a92f522c443755a-sec-form-d-funding-leads-dataset.png)

The screenshot above comes from the Actor's real Dataset presentation using clearly labeled synthetic fixtures. The example below is also synthetic and is not linked to a live issuer.

```json
{
  "recordType": "change",
  "stableId": "sec-form-d:0000123456-26-000102",
  "changeId": "sec-form-d-change:2b8f3d39d0b8a6072b366806945e94af1f8361d54bdf9ed0",
  "changeType": "AMENDMENT_FILED",
  "accessionNumber": "0000123456-26-000102",
  "formType": "D/A",
  "isAmendment": true,
  "previousAccessionNumber": "0000123456-26-000101",
  "accessionCik": "0000123456",
  "accessionIssuerCikRelation": "MATCH",
  "cik": "0000123456",
  "primaryIssuerName": "Synthetic Robotics Labs LLC",
  "filingDate": "2026-08-25",
  "totalOfferingAmount": 5000000,
  "amountSold": 1750000,
  "investorCount": 12,
  "securityTypes": ["Equity"],
  "federalExemptions": ["Rule 506(b)"],
  "sourceContractVersion": "SEC_EDGAR_FORM_D_V1"
}
```

#### What each change means

| Change | Trigger |
|---|---|
| `NEW_NOTICE` | A new Form D accession appears after a valid comparison baseline. |
| `AMENDMENT_FILED` | A new D/A accession appears with the official previous-accession reference. |
| `SOURCE_CORRECTION_UPDATED` | Buyer-relevant normalized content changes for the same accession after official reconciliation. |
| `UNCHANGED` | Optional audit row; it is not a delivered paid change. |

Amendment chains use the official `PREVIOUSACCESSIONNUMBER` field only. Missing, outside-scope, cross-CIK, and cyclic relationships remain explicit. The Actor does not guess links from issuer names or dates, and it does not invent `ENDED`, `REMOVED`, “round closed,” or “offering completed” events.

### Input guide

The first section contains the workflow, result style, discovery method, and all primary targets. **All Form D filings** needs no target. **Selected issuers** needs at least one CIK or company-name fragment. **Exact accession numbers** needs at least one accession.

| Input | What it changes | Effect on work and results |
|---|---|---|
| `workflow` | Baseline, Standard changes, or Bulk changes | Selects one-time output or stateful monitoring and its row maximum. |
| `discovery` | Whole market, selected issuers, or exact accessions | CIK/accession routes are narrower; market mode covers the full filing search job. |
| `ciks` | Up to 100 exact issuer identities | Avoids name ambiguity and usually reduces source work. |
| `companyNames` | Up to 25 filed-name fragments | May require broader official scanning than CIK lookup. |
| `accessionNumbers` | Up to 100 exact filing identities | Goes directly to official filing archive directories. |
| `daysBack`, `startDate`, `endDate` | Rolling or fixed inclusive filing window | Wider history can add completed quarterly archives and current filing XML. |
| `searchQuery` | Text across official structured filing groups | May inspect more filings before enough matches are found. |
| issuer, geography, entity, fund, security, exemption, and amendment filters | Keeps matching official values | Every filter is part of the monitoring identity. |
| amount, investment, and investor minimums | Keeps rows at or above filed numeric values | Missing or indefinite values do not satisfy a positive minimum. |
| `maxResults` | Maximum delivered filing/change rows | Standard changes stops at 200; Baseline and Bulk changes support 10,000. |
| `maxTrackedAccessions` | Comparison-state capacity | Must be at least the requested Changes result limit; maximum 10,000. |
| `maxFilingsScanned` | Maximum official records inspected | Reaching it produces `CAPPED`; Changes state does not advance. |
| `includeUnchanged` | Adds unchanged audit rows to Changes | Adds Dataset rows but no delivered-change unit. |
| `monitorLabel` | Separates otherwise identical watches | Use one stable label per business watch. |

For repeatable historical work, set both dates. For a moving watch, keep `daysBack` and rerun the same normalized input. Use CIK whenever you know it; a name fragment is convenient but less precise.

### Pricing and cost controls

The active pay-per-event schedule is transparent. Baseline uses one verified-completion unit plus one unit per delivered filing. Standard Changes uses one completed-check unit that covers a confirmed quiet check or atomically includes the first delivered change; only additional changes use the per-change unit. Bulk Changes uses one completed-check unit plus one unit per delivered change. Optional unchanged audit rows are free. A run with `PARTIAL`, `CAPPED`, `BLOCKED`, or `FAILED` coverage is not charged as a completed official check and does not advance comparison state as if the check completed.

| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---:|---:|---:|---:|---:|---:|
| Verified official SEC run | $0.01285995 | $0.01285995 | $0.01285995 | $0.01285995 | $0.01285995 | $0.01285995 |
| Baseline filing | $0.00177235 | $0.00177235 | $0.00177235 | $0.00162890 | $0.00105890 | $0.00071690 |
| Standard watch check | $0.00139005 | $0.00067755 | $0.00005000 | $0.00005000 | $0.00005000 | $0.00005000 |
| Additional Standard change | $0.00950000 | $0.00902500 | $0.00854914 | $0.00806694 | $0.00777762 | $0.00758474 |
| Bulk watch check | $0.04414005 | $0.04414005 | $0.04414005 | $0.04414005 | $0.04414005 | $0.04414005 |
| Bulk change | $0.07600000 | $0.07600000 | $0.07600000 | $0.07600000 | $0.07600000 | $0.07600000 |

Examples on Free: 100 Baseline filings cost `$0.01285995 + 100 x $0.00177235 = $0.19009495`; a complete Standard check with zero or one delivered change costs `$0.00139005`; five Standard changes cost `$0.00139005 + 4 x $0.00950 = $0.03939005`; and five Bulk changes cost `$0.04414005 + 5 x $0.076 = $0.42414005`.

Use `maxResults` to bound delivered units and `maxFilingsScanned` to bound broad filtered searches. Exact accessions and CIK targets usually require less source traversal than a whole-market text search. A larger maximum is a ceiling, not a promise that matching filings exist.

### Coverage and reliability

Every run exposes one explicit coverage state:

- `COMPLETE`: every required official branch reached the expected shape and the requested scope was exhausted.
- `FILTERED`: official traversal completed, but buyer filters reduced the delivered rows.
- `EMPTY_CONFIRMED`: every required branch completed with zero matching filings.
- `CAPPED`: a declared result, scan, request, byte, runtime, state, or delivery guard stopped completion.
- `PARTIAL`: trustworthy rows exist, but at least one requested official branch did not complete.
- `BLOCKED`: SEC denied or rate-limited the official route.
- `FAILED`: source shape, reconciliation, state, or another required contract failed.

Baseline can return trustworthy rows with a non-complete warning. Changes never emits paid changes or advances state from `PARTIAL`, `CAPPED`, `BLOCKED`, or `FAILED` source coverage. Read `OUTPUT.coverage` before treating a quiet run as proof that nothing changed.

#### Official-source contract

- Completed historical quarters use official SEC Form D ZIP packages with all six required TSV tables.
- The current quarter uses the official EDGAR full index and the complete-submission file containing the primary Form D XML.
- Issuer watches use official SEC submissions history and declared archive XML.
- Exact filing lookup uses official submissions metadata and archive XML, with official `index.json` metadata only when the declared primary filename is unavailable.
- The accession archive CIK and filed primary issuer CIK are separate output fields. Real SEC Form D filings can contain different official values; the Actor reports `accessionIssuerCikRelation` instead of discarding the filing or pretending they match.
- Requests use one identifying User-Agent and a maximum of four requests per second across the run.
- Direct official HTTPS is used without a proxy, browser, rotating identity, third-party data provider, or child Actor.

Access denial, rate limiting, unexpected source shape, reconciliation conflict, unsafe ZIP paths, encryption, truncation, or resource-guard breaches fail closed instead of silently weakening output.

### Automation and repeat runs

Download JSON, JSONL, CSV, Excel, XML, or RSS from the Dataset UI, or use the Dataset API URL exposed in Actor Output. `OUTPUT.tracker` adds counts and clearly labeled sums of filed accession values when `outputMode` is `tracker`; its `amountValueAggregation` receipt states that amendments are not deduplicated and the sums do not represent unique capital raised.

For monitoring:

1. Save one complete Changes input, including its target, filters, limits, and `monitorLabel`.
2. Run that scope once. The first run establishes the comparison baseline and normally emits no historical changes.
3. Invoke the exact same input sequentially. Each repeat run compares the current official filing state with the last confirmed delivered state.
4. Read `OUTPUT.coverage` before acting on zero changes.
5. Do not overlap runs for the same scope. State commits only after confirmed delivery, so sequential execution preserves a clear comparison history.

Changing a target, filter, date-window form, output mode, or relevant limit creates a new state identity. Keep separate labels for separate business watches rather than reusing one history for unrelated issuer groups.

Form D contains filed facts. It does not provide email addresses, named investors, valuation, sentiment, lead scores, buying intent, or proof that a fundraising round closed.

### FAQ

#### Does “amount sold” mean the funding round closed?

No. It is the issuer's filed Form D value. The Actor does not infer closing, retention, valuation, funding stage, or money received after the filing date.

#### Why is an amendment a separate row?

SEC accepts D/A as a separate accession and asks the filer for current answers. Keeping it separate preserves the official filing identity and makes the transition auditable.

#### What if the previous accession is outside my date window?

The amendment remains a valid filing row with an explicit outside-scope link status. The Actor does not fetch unlimited history or guess the missing chain.

#### Why did a run return no rows?

Check `OUTPUT.coverage`. `EMPTY_CONFIRMED` means the requested official scope completed with zero matches. `FILTERED` means source traversal completed but filters removed records. `CAPPED`, `PARTIAL`, `BLOCKED`, and `FAILED` are not confirmed-empty results.

#### Can I use issuer names instead of CIKs?

Yes. Company-name fragments match official filed issuer names, but CIK is the more precise target and normally requires less broad source work.

#### How do I keep monitoring reliable?

Keep the same normalized input and stable monitoring label, run one identical scope at a time, and inspect coverage before treating a quiet run as a confirmed no-change result.

# Actor input Schema

## `workflow` (type: `string`):

Baseline exports filings. A first valid Changes run establishes its comparison baseline; later same-scope runs return only new notices, amendments, and confirmed same-accession corrections.

## `outputMode` (type: `string`):

Tracker adds free official-source counts and amount totals to the run summary. Dataset filing fields stay the same.

## `discovery` (type: `string`):

Market uses official quarterly Form D datasets plus the current EDGAR full index. Selected issuers use official SEC submissions history. Exact accessions go directly to their official archive directories.

## `ciks` (type: `array`):

Optional for All Form D filings; required for Selected issuers when company names are empty. Add up to 100 SEC CIKs. They are padded to ten digits and deduplicated before source work.

## `accessionNumbers` (type: `array`):

Required for Exact accession numbers. Add up to 100 D or D/A accession numbers; dashes are optional.

## `companyNames` (type: `array`):

Optional alternative to CIKs for Selected issuers. Add up to 25 case-insensitive fragments matched only against official filed issuer names; CIK is more precise and usually cheaper when known.

## `daysBack` (type: `integer`):

Rolling date window used when Filed from and Filed through are empty. The implicit end is yesterday in UTC so an incomplete current-day index is never called complete.

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

Optional inclusive filing start date. The maximum supported interval is 730 days.

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

Optional inclusive filing end date. If only Filed from is supplied, the end is yesterday in UTC.

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

Optional case-insensitive text search across official issuer, offering, related-person, recipient, exemption, security, and clarification fields. It can require scanning more filings before the result limit is reached.

## `amendmentFilter` (type: `string`):

D and D/A are separate filings with separate accession identities. Amendment links use only the official previous-accession field.

## `issuerStates` (type: `array`):

Match filed issuer business-address state or country codes.

## `issuerCountries` (type: `array`):

Match the filed business-address country value.

## `jurisdictions` (type: `array`):

Match the filed jurisdiction of incorporation or organization.

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

Match official Form D industry-group values.

## `investmentFundTypes` (type: `array`):

Match official investment-fund types when the issuer filed one.

## `issuerScope` (type: `string`):

Uses the filed investment-fund field; it does not infer a business category from a company name.

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

Match filed entity types such as Corporation or Limited Liability Company.

## `securityTypes` (type: `array`):

Match official offered-security flags, including filed other-security text.

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

Match official Form D exemption selections such as Rule 506(b) or Rule 506(c).

## `nonAccreditedInvestor` (type: `string`):

Uses only the issuer's filed answer. It does not identify individual investors.

## `minOfferingAmount` (type: `number`):

Keep filings whose numeric total offering amount is at least this value. Indefinite or missing amounts do not satisfy a positive minimum.

## `minAmountSold` (type: `number`):

Keep filings whose filed total amount sold is at least this value. Amount sold is a filed fact, not proof that a round closed.

## `minInvestment` (type: `number`):

Keep filings whose filed minimum investment accepted is at least this value.

## `minInvestors` (type: `integer`):

Keep filings whose filed investor count is at least this value. No investor identities are provided.

## `sortBy` (type: `string`):

Sorting happens after official records are normalized and filtered.

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

Baseline and Bulk support up to 10,000 delivered rows. Standard Changes supports up to 200. Reaching the limit reports CAPPED and state advances only for confirmed delivered changes.

## `maxTrackedAccessions` (type: `integer`):

Changes-only state capacity. It must be at least Maximum delivered filings or changes. The 10,000 maximum is locally proven as one validated state snapshot under the 9 MB state limit.

## `maxFilingsScanned` (type: `integer`):

Independent official-record scan guard for filters. If it stops traversal, coverage is CAPPED and monitoring state does not advance.

## `includeUnchanged` (type: `boolean`):

Changes only. Adds free UNCHANGED audit rows. They never become paid changes and observation time is excluded from fingerprints.

## `monitorLabel` (type: `string`):

Optional stable label that separates otherwise identical watch states. Every result-affecting input is still included in the state fingerprint.

## `maxBuyerChargeUsd` (type: `number`):

Internal pre-source guard against a requested paid-event vector that exceeds the configured run ceiling.

## `maxRequests` (type: `integer`):

Run-wide official SEC request ceiling. The high guard makes the 10,000-row current-index route reachable; the 100-row default stops as soon as its result scope is proven.

## `maxSourceBytes` (type: `integer`):

Run-wide official source-byte ceiling. It is a safety ceiling, not a transfer target; result and scan limits still stop normal runs.

## `maxRuntimeSecs` (type: `integer`):

Run-wide source-work ceiling. At the enforced four-request-per-second maximum, this permits the advertised 10,000-record one-request archive route.

## `maxArchiveCompressedBytes` (type: `integer`):

Per-archive compressed-byte ceiling.

## `maxArchiveInflatedBytes` (type: `integer`):

Per-archive combined inflated-byte ceiling.

## `maxArchiveEntryBytes` (type: `integer`):

Per-entry inflated-byte ceiling.

## `maxArchiveEntries` (type: `integer`):

Rejects unexpected entry fan-out before inflation.

## `maxArchiveExpansionRatio` (type: `number`):

Rejects excessive inflated-to-compressed ratios.

## `maxParseMemoryBytes` (type: `integer`):

Conservative archive parse-memory ceiling.

## `_luminarQaFaultStage` (type: `string`):

Private Factory QA only. Any use outside the separately registered private QA Actor on the exact canonical build fails closed before source, charge, or state work.

## Actor input object example

```json
{
  "workflow": "baseline",
  "outputMode": "raw",
  "discovery": "market",
  "daysBack": 30,
  "amendmentFilter": "all",
  "issuerScope": "all",
  "nonAccreditedInvestor": "any",
  "minOfferingAmount": 0,
  "minAmountSold": 0,
  "minInvestment": 0,
  "minInvestors": 0,
  "sortBy": "newest",
  "maxResults": 100,
  "maxTrackedAccessions": 1000,
  "maxFilingsScanned": 5000,
  "includeUnchanged": false,
  "maxBuyerChargeUsd": 5,
  "maxRequests": 12000,
  "maxSourceBytes": 1000000000,
  "maxRuntimeSecs": 3600,
  "maxArchiveCompressedBytes": 75000000,
  "maxArchiveInflatedBytes": 350000000,
  "maxArchiveEntryBytes": 200000000,
  "maxArchiveEntries": 8,
  "maxArchiveExpansionRatio": 25,
  "maxParseMemoryBytes": 600000000
}
```

# Actor output Schema

## `dataset` (type: `string`):

Mixed Dataset of filing, change, and optional unchanged rows. Use recordType and changeType to distinguish them.

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

Buyer-focused columns with recordType visible.

## `runSummary` (type: `string`):

Requested scope, explicit coverage, free tracker analytics, state outcome, and resource receipts.

# 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 = {
    "workflow": "baseline",
    "outputMode": "raw",
    "discovery": "market",
    "daysBack": 30,
    "amendmentFilter": "all",
    "issuerScope": "all",
    "nonAccreditedInvestor": "any",
    "minOfferingAmount": 0,
    "minAmountSold": 0,
    "minInvestment": 0,
    "minInvestors": 0,
    "sortBy": "newest",
    "maxResults": 100,
    "maxTrackedAccessions": 1000,
    "maxFilingsScanned": 5000,
    "includeUnchanged": false,
    "maxBuyerChargeUsd": 5,
    "maxRequests": 12000,
    "maxSourceBytes": 1000000000,
    "maxRuntimeSecs": 3600,
    "maxArchiveCompressedBytes": 75000000,
    "maxArchiveInflatedBytes": 350000000,
    "maxArchiveEntryBytes": 200000000,
    "maxArchiveEntries": 8,
    "maxArchiveExpansionRatio": 25,
    "maxParseMemoryBytes": 600000000
};

// Run the Actor and wait for it to finish
const run = await client.actor("luminar/sec-form-d-funding-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 = {
    "workflow": "baseline",
    "outputMode": "raw",
    "discovery": "market",
    "daysBack": 30,
    "amendmentFilter": "all",
    "issuerScope": "all",
    "nonAccreditedInvestor": "any",
    "minOfferingAmount": 0,
    "minAmountSold": 0,
    "minInvestment": 0,
    "minInvestors": 0,
    "sortBy": "newest",
    "maxResults": 100,
    "maxTrackedAccessions": 1000,
    "maxFilingsScanned": 5000,
    "includeUnchanged": False,
    "maxBuyerChargeUsd": 5,
    "maxRequests": 12000,
    "maxSourceBytes": 1000000000,
    "maxRuntimeSecs": 3600,
    "maxArchiveCompressedBytes": 75000000,
    "maxArchiveInflatedBytes": 350000000,
    "maxArchiveEntryBytes": 200000000,
    "maxArchiveEntries": 8,
    "maxArchiveExpansionRatio": 25,
    "maxParseMemoryBytes": 600000000,
}

# Run the Actor and wait for it to finish
run = client.actor("luminar/sec-form-d-funding-monitor").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 '{
  "workflow": "baseline",
  "outputMode": "raw",
  "discovery": "market",
  "daysBack": 30,
  "amendmentFilter": "all",
  "issuerScope": "all",
  "nonAccreditedInvestor": "any",
  "minOfferingAmount": 0,
  "minAmountSold": 0,
  "minInvestment": 0,
  "minInvestors": 0,
  "sortBy": "newest",
  "maxResults": 100,
  "maxTrackedAccessions": 1000,
  "maxFilingsScanned": 5000,
  "includeUnchanged": false,
  "maxBuyerChargeUsd": 5,
  "maxRequests": 12000,
  "maxSourceBytes": 1000000000,
  "maxRuntimeSecs": 3600,
  "maxArchiveCompressedBytes": 75000000,
  "maxArchiveInflatedBytes": 350000000,
  "maxArchiveEntryBytes": 200000000,
  "maxArchiveEntries": 8,
  "maxArchiveExpansionRatio": 25,
  "maxParseMemoryBytes": 600000000
}' |
apify call luminar/sec-form-d-funding-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/GzPhFxjsDNtoKr2A7/builds/J5TwbM81OGlLRVzqO/openapi.json
