# SEC Form D Filings - Private Raises and Amendment Progress (`thatmike1/us-sec-form-d-offering-feed`) Actor

Every Form D and D/A filed on EDGAR in your date range: issuer, industry, exemptions, offering size, amount sold, investors, executives. Amendments show the previous filing and how much more was sold.

- **URL**: https://apify.com/thatmike1/us-sec-form-d-offering-feed.md
- **Developed by:** [Michal Pšenčík](https://apify.com/thatmike1) (community)
- **Categories:** Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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 Filings - Private Raises and Amendment Progress

Every Form D and Form D/A (Regulation D exempt-offering notice) filed with the SEC on EDGAR in your date range, one
row per filing: issuer, industry, exemptions, offering size, amount sold, investors, first sale and the executives,
directors and promoters named in the filing. For an amendment the actor also reads the previous filing it names and
shows how much more was sold and how many investors were added since.

Example (filed 21 Oct 2026): AG CSF2 (Annex) Dislocation Co-Investment 1, L.P., a private equity fund, D/A. Sold
$686,196,966 to 506 investors; its previous filing (0001944044-25-000002, signed 2025-10-20) reported $150,000,000 and
5 investors, so the row shows **+$536,196,966** and **+501 investors**.

### Input

- **Filed from / Filed to** (`dateFrom`, `dateTo`, yyyy-mm-dd): EDGAR filing dates, up to 31 days, from 2009-03-16 to
  today in New York. Leave both empty for the latest three daily index files SEC has published (so the default run
  returns filings every day, weekends included). One date alone is that single day.
- **Form types**: `D`, `D/A` or both (default both).
- **Issuer states or countries**: two-character EDGAR codes such as `CA`, `NY`; empty means all.
- **Industry groups**: exact Form D names such as `Pooled Investment Fund`, `Other Technology`, `Biotechnology`.
- **Exclude pooled investment funds**: skip funds to see operating-company raises only.
- **Compare amendments with the previous filing** (default on).
- **Maximum filings to return** (1-1000, default 25). At most three filings are examined per requested row (2000 at
  most), so a narrow filter ends the run with `scan_limit` instead of running unbounded.

### Output

One dataset item per filing, in index order within a day and days ascending:

`accessionNumber`, `formType`, `isAmendment`, `dateFiled`, `cik`, `issuerName`, `entityType`, `jurisdictionOfInc`,
`yearOfInc`, `yearOfIncWithinFiveYears`, `issuerCity`, `issuerState`, `issuerStateDescription`, `issuerZip`,
`issuerPhone`, `additionalIssuerCount`, `relatedPersons` (name, relationships, clarification; no addresses),
`industryGroupType`, `investmentFundType`, `is40Act`, `issuerSize`, `federalExemptions` (`06b`, `3C`, `3C.7`, ...),
`dateOfFirstSale`, `firstSaleYetToOccur`, `moreThanOneYear`, `securitiesTypes`, `minimumInvestmentUsd`,
`totalOfferingAmountUsd`, `totalOfferingIndefinite`, `totalAmountSoldUsd`, `totalRemainingUsd`,
`hasNonAccreditedInvestors`, `investorsCount`, `salesCommissionsUsd`, `findersFeesUsd`, `signatureDate`,
`previousAccessionNumber`, `previous`, `previousStatus`, `amountSoldChangeUsd`, `investorsChange`, `filingIndexUrl`,
`primaryDocUrl`, `parseWarnings`.

Amounts are the issuer's whole-dollar figures, never rounded. `Indefinite` offering sizes are `null` with
`totalOfferingIndefinite: true`; any other value that is not a whole number is `null` with the raw text in
`parseWarnings`. `previousStatus` is `ok`, `not_amendment`, `not_requested`, `not_found` (SEC has no previous filing
under the issuer's CIK) or `error`.

A free `SUMMARY` record in the run's key-value store lists the resolved dates and index files, dates SEC has not
listed (`unavailableDates`), lines per form type, filings scanned, stored and filtered out, parse errors,
previous-filing outcomes, why the run stopped and whether it is `complete`.

### Pricing

Pay per event: $0.00005 per run start and $0.002 per stored filing row (with its previous-filing comparison for
amendments). The default 25 rows cost $0.05005; a full busy day (about 260 filings) about $0.52.

Each row is billed once, when it is stored, at the item price; rows already stored stay billed even if the run later
fails or stops. Errors, not-stored rows, invalid or filtered inputs and SUMMARY carry no item fee. The
`apify-actor-start` event applies to every run, including failed and empty ones.

A run that reaches **Maximum filings to return** stops there; rerunning the same input returns the same first rows
again, so split a long backfill into disjoint date windows.

### Source and limits

- Source: SEC EDGAR's public daily index files (`/Archives/edgar/daily-index/`) and filing archives, keyless, at most
  four requests a second with a declared User-Agent. SEC builds each day's index from about 22:00 ET; a date it has not
  listed yet, a weekend or a holiday is reported under `unavailableDates`, never as a day without filings, and an
  unlisted weekday in your window marks the run incomplete.
- If SEC refuses the requests (HTTP 429, a 403 or a block page) the run stops with `source_refused`; rows already
  stored stay delivered.
- One row per accession number; a filing listed under a co-issuer and the primary issuer is returned once, for the
  primary issuer, with `additionalIssuerCount`.
- Amounts are issuer-reported and unaudited. A previous filing filed under a different issuer CIK (for example after
  a restructuring) is reported `not_found`, not guessed.
- Scanning stops after 15 minutes; remaining filings are reported in SUMMARY.

### Personal data

Related persons are executive officers, directors and promoters that the issuer itself published in a public SEC
filing. The actor returns their names and roles only, no addresses. You are the controller for any further processing
of that data and responsible for having a lawful basis for it.

# Actor input Schema

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

First EDGAR filing date (Date Filed) to include. Leave both dates empty for the latest three daily index files SEC has published. One date alone means that single day. The window is at most 31 calendar days and starts no earlier than 2009-03-16.

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

Last EDGAR filing date to include, not after today in New York. SEC builds each daily index from about 22:00 ET; a date it has not listed (yet), a weekend or a holiday is reported in the run SUMMARY under unavailableDates, never as a day with zero filings.

## `formTypes` (type: `array`):

D (new notice), D/A (amendment), or both. Empty means both.

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

Two-character EDGAR stateOrCountry codes of the primary issuer's address, for example CA or NY. Empty means all.

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

Exact Form D industry group names, for example Pooled Investment Fund, Other Technology or Biotechnology. Empty means all.

## `excludePooledInvestmentFunds` (type: `boolean`):

Skip filings whose industry group is Pooled Investment Fund (hedge, private equity, venture and other funds).

## `includePreviousFiling` (type: `boolean`):

For each D/A, also read the previous filing it names and report the previous amount sold, investor count and the change. Off means one request per filing.

## `maxItems` (type: `integer`):

Stop after this many stored filing rows (1-1000). Each stored row is one billed result. At most 3 filings are examined per requested row (2000 at most), so a narrow filter cannot run unbounded.

## Actor input object example

```json
{
  "formTypes": [
    "D",
    "D/A"
  ],
  "excludePooledInvestmentFunds": false,
  "includePreviousFiling": true,
  "maxItems": 25
}
```

# Actor output Schema

## `filings` (type: `string`):

No description

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("thatmike1/us-sec-form-d-offering-feed").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("thatmike1/us-sec-form-d-offering-feed").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 '{}' |
apify call thatmike1/us-sec-form-d-offering-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,thatmike1/us-sec-form-d-offering-feed"
        }
    }
}
```

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/vQJyBTZVZHXSFRxFM/builds/44axu9HeqHmS3WJtg/openapi.json
