# SEC EDGAR Form D — Issuer & Offering Data (No Personal Data) (`savorous_peak/sec-edgar-form-d-issuer`) Actor

Regulation D private placement filings from SEC EDGAR, parsed from the official primary\_doc.xml. Issuer and offering fields only: related persons and signature blocks are stripped before parsing, so no individual names or addresses reach the dataset. Runs at 1 request/second.

- **URL**: https://apify.com/savorous\_peak/sec-edgar-form-d-issuer.md
- **Developed by:** [Take S](https://apify.com/savorous_peak) (community)
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 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.

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

## SEC EDGAR Form D Scraper — Issuer & Offering Data (No Personal Data)

Extract **Regulation D private placement filings (Form D)** from the official **SEC EDGAR**
system, parsed directly from each filing's `primary_doc.xml`.

**This Actor deliberately returns no personal data.** Related persons and signature blocks are
stripped from the XML *before* parsing, so individual names and home addresses never enter the
dataset. If you need executive contact details for sales prospecting, this is not the right Actor.

### Why you might want this one

Most Form D scrapers sell the **related persons** section — executive names, titles and addresses —
as lead-generation data. That is useful for prospecting, and it also makes the output awkward to
handle under GDPR/CCPA, to store in a shared warehouse, or to pass to a compliance review.

This Actor is the opposite trade-off: **issuer-level and offering-level facts only**, with the
personal fields removed at the source. What you get is a clean corporate dataset you can keep.

- 🏢 **Issuer** — legal entity name, CIK, entity type, jurisdiction of incorporation, year of
  incorporation, city / state / ZIP
- 💰 **Offering economics** — total offering amount, amount sold, amount remaining, minimum
  investment, sales commissions, finders' fees, gross proceeds used
- 📋 **Regulatory detail** — industry group, investment fund type, revenue range, federal exemptions
  (506(b), 506(c), 3(c)(1), 3(c)(7) …), date of first sale, offering duration
- 👥 **Investor counts only** — number already invested and whether non-accredited investors
  participated. **Investors are never identified** (Form D does not identify them either)
- 🔗 **Provenance** — accession number plus a direct EDGAR URL for every record, so any figure can
  be traced back to the source filing

### Honest limitations

- **No related persons, no signatories, no executive contacts.** By design, not by omission.
- **No issuer phone number by default.** It is the corporate number as filed, not a personal one,
  but it is still contact data — turn on `includeIssuerPhone` if you need it.
- **Amounts are not always numeric.** Many funds file `Indefinite`. Every amount is returned twice:
  `...Raw` keeps the filed string verbatim, `...Usd` is the parsed number or `null`. Nothing is
  guessed and nothing is silently dropped.
- **Business days only.** EDGAR publishes one index per business day; weekends and holidays are
  skipped automatically and reported in the run output.
- **Form D reflects what the issuer filed.** If a company has not filed, it is not here.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `dateFrom` | string | latest business day | First filing date to scan, `YYYY-MM-DD`. Leave empty and the Actor uses the most recent day EDGAR has published an index for. |
| `dateTo` | string | `dateFrom` | Last filing date to scan, inclusive. |
| `includeAmendments` | boolean | `true` | Include Form D/A amendments. |
| `maxFilings` | integer | `100` | Safety cap. SEC receives ~330 Form D + D/A filings per business day, and this Actor fetches one per second. |
| `minOfferingAmountUsd` | integer | `0` | Skip smaller offerings. Filings reporting `Indefinite` are always kept. |
| `contactEmail` | string | — | Optional. Sent to the SEC in the `User-Agent` header (see below). |
| `includeIssuerPhone` | boolean | `false` | Include the issuer's business phone number. |

Running with no input at all scans the most recent business day and returns up to 100 filings.

### SEC fair access

The SEC asks automated clients to stay under **10 requests/second** and to
[declare a contact address in the User-Agent header](https://www.sec.gov/os/accessing-edgar-data).

This Actor sends **1 request per second** — one tenth of the documented ceiling — and that floor is
hard-coded, not configurable from the input.

Set `contactEmail` and that address is sent to the SEC with each request, so they can reach you
about the traffic; it is not stored or published anywhere else. Leave it empty and the Actor
declares its own Apify Store page instead, so the caller is still identifiable.

### Output

One record per filing, 36 fields. Example:

```json
{
  "accessionNumber": "0002152824-26-000001",
  "formType": "D",
  "isAmendment": false,
  "filingDate": "2026-09-10",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/2152824/000215282426000001/",
  "cik": "0002152824",
  "entityName": "137 Holdings CAI, LLC",
  "entityType": "Limited Liability Company",
  "jurisdictionOfInc": "DELAWARE",
  "yearOfInc": "2026",
  "issuerCity": "SAN FRANCISCO",
  "issuerStateOrCountry": "CA",
  "industryGroupType": "Pooled Investment Fund",
  "investmentFundType": "Private Equity Fund",
  "federalExemptions": ["06b", "3C", "3C.7"],
  "totalOfferingAmountRaw": "Indefinite",
  "totalOfferingAmountUsd": null,
  "totalAmountSoldRaw": "0",
  "totalAmountSoldUsd": 0,
  "totalNumberAlreadyInvested": 0,
  "hasNonAccreditedInvestors": false
}
```

The full field list is published in the Actor's dataset schema, so you can see exactly what you get
before you run it.

### Data source & disclaimer

Data comes from the SEC's EDGAR system, a public U.S. government database. This Actor is not
affiliated with, endorsed by, or sponsored by the U.S. Securities and Exchange Commission. It reads
only publicly available filings and does not bypass any authentication or access control. Nothing
here is investment advice.

# Actor input Schema

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

First filing date to scan, inclusive. Leave empty to use the most recent business day that EDGAR has published an index for. EDGAR publishes one index per business day; weekends and holidays are skipped automatically.

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

Last filing date to scan, inclusive. Leave empty to use the same day as Date from.

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

Include Form D/A amendment filings in addition to original Form D filings.

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

Safety cap on the number of filings returned. SEC receives roughly 330 Form D and D/A filings per business day, and this Actor fetches one filing per second, so 330 filings take about 5.5 minutes.

## `minOfferingAmountUsd` (type: `integer`):

Skip filings whose total offering amount is below this. Filings that report a non-numeric amount such as 'Indefinite' are always kept.

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

Optional. The SEC asks automated clients to identify themselves in the User-Agent header (see sec.gov/os/accessing-edgar-data). Set your own address to be named as the caller; leave it empty and the Actor declares its own Apify Store page instead. The value is sent to the SEC with each request and is not stored anywhere else.

## `includeIssuerPhone` (type: `boolean`):

Off by default. The number is the issuer's corporate contact as filed, not a personal number, but it is still contact data — enable it only if you need it.

## Actor input object example

```json
{
  "includeAmendments": true,
  "maxFilings": 100,
  "minOfferingAmountUsd": 0,
  "includeIssuerPhone": false
}
```

# Actor output Schema

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

All issuer-level Form D records collected by the run, as JSON.

# 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 = {
    "dateTo": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("savorous_peak/sec-edgar-form-d-issuer").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 = { "dateTo": "" }

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

```

## MCP server setup

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

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/HASCogRCqDhjvwlfr/builds/Otfco44aQ8tFgfazw/openapi.json
