# SEC EDGAR Form D Offerings — New Capital Raised (`malekh/sec-edgar-form-d-offering-new-capital-raised`) Actor

Every SEC EDGAR Form D and D/A exempt-offering notice with the issuer, the offering and the related persons — plus the capital actually raised in each filing. totalAmountSold on an amendment is the offering's cumulative lifetime total; this resolves the prior filing and reports the difference.

- **URL**: https://apify.com/malekh/sec-edgar-form-d-offering-new-capital-raised.md
- **Developed by:** [Malek H](https://apify.com/malekh) (community)
- **Categories:** Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

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

## SEC EDGAR Form D Offerings — New Capital Raised

Every **SEC EDGAR Form D** and **Form D/A** exempt-offering notice filed in your
date window, with the full issuer record — and with the one number the source
refuses to state: **how much capital was actually raised in that filing.**

### The problem this exists to fix

`totalAmountSold` on a Form D/A amendment is the **offering's cumulative
lifetime total**, not the money raised in that filing. Nothing in the filing
says so. A field named `totalAmountSold`, on a document dated today, reads as
today's raise — so any pipeline that treats a D/A as a funding event
double-counts every dollar the offering has ever taken.

Measured against the live source over **all 55 amendments filed 2026-08-05**,
every one of which resolved to the filing it supersedes:

| | |
|---|---|
| `totalAmountSold` as filed, summed | **$7,522,721,612** |
| New capital actually raised | **$1,578,311,991** |
| Old money already counted on an earlier filing | **79%** |

And it does not fail in only one direction. **40 of those 55 amendments raise
the figure over the filing they supersede, 16 of them from a prior of exactly
$0** — so "just ignore amendments" is not a fix either. That is where the
genuine new money arrives.

Concrete: on 2026-08-05, `AG Realty Value Fund X (A), L.P.` filed a D/A
reporting `totalAmountSold` of **$371,750,789**. The filing it amends reported
the same $371,750,789. **New capital raised in that filing: $0.** Any minimum
amount filter reading the as-filed field waves it through as a $371M round.

### What you get

Each row is one Form D or D/A filing, carrying:

**The resolved amounts** — `totalAmountSoldAsFiled`, `priorTotalAmountSoldUsd`
(from the filing this one supersedes, reached through `previousAccessionNumber`),
**`newCapitalRaisedUsd`** (the difference), `amountIsCumulative`, and
`newCapitalBasis` stating exactly how the number was derived.

**The issuer** — entity name, CIK, full address, phone, jurisdiction of
incorporation, entity type, year of incorporation, industry group, investment
fund type, revenue range.

**The offering** — total offering amount as filed (including the literal
`Indefinite`, never coerced to 0), amount remaining, date of first sale,
duration, minimum investment accepted, security types, federal exemptions
claimed, non-accredited investor flag, investor count, sales commissions,
finders' fees, gross proceeds used.

**The people** — every related person (executive officers, directors,
promoters) with name, relationships, location and role clarification.

**Provenance** — accession number, filing date, direct EDGAR URLs for both this
filing and the prior one, so every number is one click from its source.

### Filter on the real number

`minNewCapitalUsd` filters on **money actually raised in the filing**, not on
the cumulative total. On 2026-08-05, ten amendments would clear a $1,000,000
cumulative floor while having raised nothing at all. Those are exactly the rows
that pollute a funding-signal feed.

### Input

```json
{
  "startDate": "2026-08-05",
  "endDate": "2026-08-05",
  "formTypes": ["D", "D/A"],
  "minNewCapitalUsd": 1000000,
  "maxFilings": 1000
}
```

All fields optional. With no input at all it reads **the most recent complete
business day** — deliberately not today, because EDGAR's daily index keeps
growing through the evening and a run against today returns a partial set that
looks complete. Window maximum is 31 days.

### Sample output

```json
{
  "accessionNumber": "0001739086-26-000001",
  "formType": "D/A",
  "filedDate": "2026-08-05",
  "entityName": "AG Realty Value Fund X (A), L.P.",
  "issuerCik": "1739086",
  "stateOrCountry": "NY",
  "entityType": "Limited Partnership",
  "industryGroup": "Pooled Investment Fund",
  "totalOfferingAmountAsFiled": "Indefinite",
  "totalAmountSoldAsFiled": "371750789",
  "totalAmountSoldUsd": 371750789.0,
  "priorAccessionNumber": "0001739086-25-000002",
  "priorTotalAmountSoldUsd": 371750789.0,
  "newCapitalRaisedUsd": 0.0,
  "newCapitalBasis": "AMENDMENT_DELTA",
  "amountIsCumulative": true,
  "guidance": "Form D/A. totalAmountSold is CUMULATIVE for the offering; newCapitalRaised is this filing's total minus the total on the filing it supersedes.",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/1739086/000173908626000001/primary_doc.xml",
  "priorFilingUrl": "https://www.sec.gov/Archives/edgar/data/1739086/000173908625000002/primary_doc.xml"
}
```

`newCapitalBasis` is always one of:

| Value | Meaning |
|---|---|
| `ORIGINAL_FILING` | Original Form D — the first reported total, so all of it is new. |
| `AMENDMENT_DELTA` | Prior filing retrieved; new capital is the difference. |
| `UNRESOLVED_PRIOR` | Prior filing unavailable. `newCapitalRaisedUsd` is **null**, never guessed. |
| `NON_NUMERIC_AMOUNT` | An amount is not a number (e.g. `Indefinite`). Carried through as filed. |

A negative `newCapitalRaisedUsd` is real and is reported as-is: issuers do
revise a total downward, and clamping it to zero would hide the restatement.

### Source and correctness

Read directly from SEC EDGAR, keyless, structured XML — not HTML scraping:

- `https://www.sec.gov/Archives/edgar/daily-index/{yyyy}/QTR{n}/form.{yyyymmdd}.idx`
- `https://www.sec.gov/Archives/edgar/data/{cik}/{accession}/primary_doc.xml`

The prior filing is reached through `previousAccessionNumber` under the
**issuer's CIK** — not the accession number's own prefix. On 12 of those 55
amendments the filing was submitted by an agent and the prefix belongs to a
different entity, so the obvious prefix-derived URL 404s on about a fifth of the
population, silently, as a missing amendment rather than an error.

US federal public-domain data. Requests carry a contact-bearing User-Agent and
stay inside SEC's published 10 requests/second fair-access ceiling.

**Four canaries abort the run rather than emit a wrong row**, because each of
these failures produces output that looks perfectly healthy: an index layout
change (would read as a quiet day), an empty or truncated index, a renamed XML
amounts element (would null every amount), and a broken prior-filing URL (would
null `newCapitalRaised` throughout, indistinguishable from a window with no
amendments). All four are exercised as tests, not merely asserted.

### Pricing

Pay per event. You are charged for business days indexed, for filings returned,
and for amendment chains resolved — the last only when the prior filing was
actually retrieved and a real difference computed. Filings excluded by your
`minNewCapitalUsd` floor are not charged.

# Actor input Schema

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

First EDGAR filing date to read, as YYYY-MM-DD. Defaults to the most recent complete business day. Today is deliberately not the default: EDGAR's daily index keeps growing through the evening, so a run against today would return a partial set that looks complete.

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

Last filing date to read, as YYYY-MM-DD. Defaults to the start date. Maximum window is 31 days.

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

Which notices to return. 'D' is an original exempt-offering notice; 'D/A' is an amendment — and an amendment is where newCapitalRaised does its work, because its totalAmountSold is the offering's lifetime total rather than that filing's raise.

## `minNewCapitalUsd` (type: `integer`):

Only return filings whose newCapitalRaised is at or above this amount. This filters on money actually raised in the filing, not on the cumulative totalAmountSold — on 2026-08-05, 7 of 55 amendments would clear a $1,000,000 cumulative floor while having raised nothing at all. Leave empty to return every filing.

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

Safety cap on how many filings to read in one run. A typical business day carries 150–200 Form D notices.

## Actor input object example

```json
{
  "startDate": "2026-08-05",
  "formTypes": [
    "D",
    "D/A"
  ],
  "maxFilings": 1000
}
```

# 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 = {
    "startDate": "2026-08-05"
};

// Run the Actor and wait for it to finish
const run = await client.actor("malekh/sec-edgar-form-d-offering-new-capital-raised").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 = { "startDate": "2026-08-05" }

# Run the Actor and wait for it to finish
run = client.actor("malekh/sec-edgar-form-d-offering-new-capital-raised").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 '{
  "startDate": "2026-08-05"
}' |
apify call malekh/sec-edgar-form-d-offering-new-capital-raised --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=malekh/sec-edgar-form-d-offering-new-capital-raised",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NdzBDuDtlxH8dEcih/builds/fvNDjU42pSWfH3Oo8/openapi.json
