# SEC Form D API: Reg D Private Placements (Unofficial) (`graylabs/sec-form-d-offerings`) Actor

SEC Form D filings from EDGAR as structured data: Reg D private placements and startup funding rounds. Issuer name and CIK, state, industry group, offering amount, amount sold, exemption (506(b), 506(c)), first-sale date, amendments. No API key. No personal data fields. Not affiliated with the SEC.

- **URL**: https://apify.com/graylabs/sec-form-d-offerings.md
- **Developed by:** [Gray Labs](https://apify.com/graylabs) (community)
- **Categories:** Business, Automation
- **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 offerings

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 API: Reg D Private Placements (Unofficial)

### What does it do?

Get **new SEC Form D filings** (notices of exempt offerings, mostly **Regulation D private placements**, including startup funding rounds and fund raises) as clean rows you can download as JSON, CSV or Excel or read through the Apify API. It reads the SEC's public, keyless EDGAR sources on www.sec.gov: the EDGAR daily index to find each day's Form D and D/A filings, and each filing's Form D document for the offering data. You need no account or API key.

Each row is one filing with **company and offering data only**: issuer name and CIK, state or country, jurisdiction, entity type, industry group, offering amounts (total, sold, remaining), minimum investment, exemptions claimed, date of first sale, amendment flag, investor counts and filing links. **No personal data fields:** the people listed on a Form D (related persons, signers, sales-compensation recipients) are never output.

Use it to track new private placements and fund raises every day, or to study offerings by industry, state, exemption or size.

### What data can you extract?

| Field                                                                                                             | Meaning                                                                                   |
| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `accessionNumber`, `formType`, `isAmendment`, `filingDate`                                                        | Filing ID, D or D/A, amendment flag, filing date                                          |
| `issuerName`, `cik`, `issuerState`, `issuerStateDescription`                                                      | Issuer and its principal place of business (EDGAR state or country code)                  |
| `jurisdictionOfIncorporation`, `entityType`, `yearOfIncorporation`                                                | Where and how the issuer is organised                                                     |
| `issuerCount`, `coIssuerCiks`                                                                                     | Number of issuers on the filing and the other issuers' CIKs                               |
| `industryGroup`, `investmentFundType`                                                                             | Form D industry group (e.g. Pooled Investment Fund, Biotechnology) and fund type          |
| `revenueRange`, `aggregateNetAssetValueRange`                                                                     | Issuer size as filed (often "Decline to Disclose")                                        |
| `exemptions`                                                                                                      | Exemptions claimed, e.g. 06b = Rule 506(b), 06c = Rule 506(c), 04 = Rule 504, 3C.1 / 3C.7 |
| `dateOfFirstSale`, `yetToOccur`, `moreThanOneYear`                                                                | When sales started, or that they have not yet, and offering duration                      |
| `securityTypes`, `isBusinessCombination`                                                                          | Types of securities offered; business-combination flag                                    |
| `minimumInvestment`                                                                                               | Minimum investment accepted from an outside investor                                      |
| `totalOfferingAmount`, `totalOfferingIndefinite`, `totalAmountSold`, `totalRemaining`, `totalRemainingIndefinite` | Offering amounts in dollars as filed ("Indefinite" amounts are null with the flag set)    |
| `hasNonAccreditedInvestors`, `nonAccreditedInvestorCount`, `totalInvestorCount`                                   | Investor counts                                                                           |
| `salesCommissions`, `findersFees`                                                                                 | Total sales commissions and finders' fees (amounts only)                                  |
| `primaryDocumentUrl`, `filingIndexUrl`                                                                            | Links to the Form D document and the filing index page                                    |
| `changeStatus`                                                                                                    | new / unchanged (with tracking)                                                           |
| `attribution`, `notice`, `retrievedAt`                                                                            | Source credit and a non-affiliation line on every row                                     |

### How to use it

1. Click **Try for free** and keep the prefilled input (Form D filings from the last 5 days, 20 rows), or set your own filters.
2. Run it. Rows appear in the **Output** tab.
3. For alerts, turn on **Track new filings** and **Only new filings** and schedule the Actor daily (mornings: the SEC adds each business day's filings to its index from about 10 PM ET).

### Input examples

Every new Form D, daily, only ones not seen before:

```json
{
    "lastNDays": 5,
    "maxResults": 1000,
    "trackChanges": true,
    "onlyNewFilings": true
}
```

New Rule 506(c) offerings by California issuers in the last 30 days (no amendments):

```json
{
    "lastNDays": 30,
    "states": ["CA"],
    "exemptions": ["06c"],
    "includeAmendments": false,
    "maxResults": 200
}
```

Pooled investment funds that have sold at least 10 million dollars, last two weeks:

```json
{
    "lastNDays": 14,
    "industryGroups": ["Pooled Investment Fund"],
    "minAmountSold": 10000000,
    "maxResults": 500
}
```

### Output example

```json
{
    "accessionNumber": "0000902664-26-004258",
    "formType": "D/A",
    "isAmendment": true,
    "filingDate": "2026-10-23",
    "cik": "0001790909",
    "issuerName": "Browning West Cayman Fund LP",
    "issuerState": "E9",
    "issuerStateDescription": "CAYMAN ISLANDS",
    "jurisdictionOfIncorporation": "CAYMAN ISLANDS",
    "entityType": "Limited Partnership",
    "yearOfIncorporation": "Over five years ago",
    "issuerCount": 1,
    "coIssuerCiks": [],
    "industryGroup": "Pooled Investment Fund",
    "investmentFundType": "Hedge Fund",
    "revenueRange": null,
    "aggregateNetAssetValueRange": "Decline to Disclose",
    "exemptions": ["06b", "3C", "3C.7"],
    "dateOfFirstSale": "2019-10-01",
    "yetToOccur": null,
    "moreThanOneYear": true,
    "securityTypes": ["Equity", "Pooled investment fund interests"],
    "isBusinessCombination": false,
    "minimumInvestment": 100000,
    "totalOfferingAmount": null,
    "totalOfferingIndefinite": true,
    "totalAmountSold": 693715697,
    "totalRemaining": null,
    "totalRemainingIndefinite": true,
    "hasNonAccreditedInvestors": false,
    "nonAccreditedInvestorCount": null,
    "totalInvestorCount": 26,
    "salesCommissions": 0,
    "findersFees": 0,
    "primaryDocumentUrl": "https://www.sec.gov/Archives/edgar/data/1790909/000090266426004258/primary_doc.xml",
    "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/1790909/000090266426004258/0000902664-26-004258-index.htm",
    "sourceName": "SEC EDGAR Form D (U.S. Securities and Exchange Commission)",
    "changeStatus": null,
    "attribution": "Source: U.S. Securities and Exchange Commission, EDGAR, https://www.sec.gov. Information on sec.gov is public information. Normalised by this Actor; not an official reproduction.",
    "notice": "Unofficial. Not affiliated with or endorsed by the U.S. Securities and Exchange Commission.",
    "retrievedAt": "2026-10-25T00:16:59.625Z"
}
```

### How much does it cost?

- **$0.01 per run start** plus **$4 per 1,000 Form D filings saved** ($0.004 each, the `offering` event). Example: 1,000 filings = $0.01 + $4 = $4.01.
- You pay only for rows that are saved. Filings withheld, filtered out or already seen are free.
- Set **Maximum cost per run** when you start a run; the Actor stops when it reaches your cap.

### Privacy: company and offering data only

Form D documents list related persons (executive officers, directors, promoters), a signer and sales-compensation recipients. This Actor **removes those sections from each document before reading it**, so their names, addresses and roles never reach the output, the run summary or the logs. The issuer's street address and phone number are not read either; only its state or country is output. Issuers that may be individuals (entity type "Other" or missing, and a name without any company marker such as Inc, LLC, LP, Fund or Trust) are withheld and counted in the run summary. The documents themselves, at the links, still contain the full filing.

### Limits

- Up to 90 days per run (one SEC daily index per business day). Today's filings appear the next morning. A business day has roughly 250 to 400 Form D and D/A filings.
- Each filing needs one request for its document. Requests are paced at 8 per second, below the SEC's limit of 10, so 1,000 filings take about two to three minutes. `maxRequests` (default 2,000) caps SEC requests per run; with narrow filters many documents are read for each saved row.
- Amounts are as filed by the issuer and are not adjusted or verified. Filters on amounts and exemptions use the filed values.

### FAQ

**Do I need an API key?** No. The SEC's EDGAR data "do not require any authentication or API keys to access".

**Can I reuse the data?** The SEC states: "Information presented on sec.gov is considered public information and may be copied or further distributed by users of the web site without the SEC's permission." Every row credits the SEC as the source. This is not legal advice.

**Why is an issuer missing?** It may be withheld as a possible individual, filtered out by your inputs, or its Form D document could not be read (counted in the run summary).

**How do I get only new Form D filings each day?** Turn on `onlyNewFilings`, set `lastNDays` to 2 and schedule the Actor daily. Filings already delivered are skipped without being downloaded.

**Can I filter by Rule 506(c), state or industry?** Yes: `exemptions` (e.g. `06c` for Rule 506(c)), `states`, `industryGroups`, `minTotalOffering` and `minAmountSold`.

**When do today's filings appear?** The next morning, when the SEC publishes its daily index.

**Does it include the people named on the Form D?** No. Related persons, signers and sales-compensation recipients are never output; issuers that look like individuals are withheld.

**Does it cover 10-K, 10-Q or 8-K filings?** No. For those, see our separate SEC EDGAR Filings API actor on the Apify Store.

**What does it cost?** $0.01 per run plus $0.004 per saved filing ($4 per 1,000). Duplicates, filtered and invalid filings are free.

Unofficial. Not affiliated with or endorsed by the U.S. Securities and Exchange Commission. EDGAR is a registered trademark of the SEC.

# Changelog

This Actor's version history is a separate document: https://apify.com/graylabs/sec-form-d-offerings/changelog.md

# Actor input Schema

## `lastNDays` (type: `integer`):

Form D filings filed in the last N days (UTC), including today. Default 5, so weekends are covered. The SEC adds each business day's filings to its daily index from about 10 PM ET. Max 90.

## `filedFrom` (type: `string`):

Start of the filing-date window (inclusive). Overrides Last N days.

## `filedTo` (type: `string`):

End of the filing-date window (inclusive). Defaults to today.

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

Also return Form D/A amendments. Each row has an isAmendment flag.

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

Optional. Keep filings whose Form D industry group contains any of these words or phrases (whole words), e.g. Pooled Investment Fund, Biotechnology, Other Technology, Real Estate, Commercial Banking. Case-insensitive.

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

Optional. 2-character EDGAR codes of the issuer's principal place of business, e.g. CA, NY, TX, DE (E9 = Cayman Islands).

## `exemptions` (type: `array`):

Optional. Keep filings claiming any of these, e.g. 06b (Rule 506(b)), 06c (Rule 506(c)), 04 (Rule 504), 3C.1, 3C.7.

## `minTotalOffering` (type: `integer`):

Optional. Skip offerings smaller than this (in dollars, as filed). Offerings with an indefinite total are kept.

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

Optional. Skip offerings that have sold less than this (in dollars, as filed).

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

Stop after saving this many filings (each saved filing is one charged result).

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

Safety cap on SEC requests per run: one per Form D document read, plus the daily index files. Default 2,000. With narrow filters many documents are read per saved row. Requests are paced at 8 per second, below the SEC's limit of 10.

## `trackChanges` (type: `boolean`):

Mark each filing new or unchanged (already seen) compared with earlier runs of the same search.

## `onlyNewFilings` (type: `boolean`):

With tracking, skip filings already returned by an earlier run of the same search (not charged, not downloaded again).

## Actor input object example

```json
{
  "lastNDays": 5,
  "includeAmendments": true,
  "industryGroups": [],
  "states": [],
  "exemptions": [],
  "maxResults": 20,
  "maxRequests": 2000,
  "trackChanges": false,
  "onlyNewFilings": false
}
```

# Actor output Schema

## `offerings` (type: `string`):

No description

## `runSummary` (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 = {
    "lastNDays": 5,
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("graylabs/sec-form-d-offerings").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 = {
    "lastNDays": 5,
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("graylabs/sec-form-d-offerings").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 '{
  "lastNDays": 5,
  "maxResults": 20
}' |
apify call graylabs/sec-form-d-offerings --silent --output-dataset

```

## MCP server setup

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

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/7t73sf4lanhk8hfFM/builds/ceyXt7fQvHkVSmrbK/openapi.json
