# SEC Form D New Raise Feed (Official EDGAR) (`knobby_woodworker_aig/sec-form-d-feed`) Actor

Daily feed of new SEC Form D and D/A private-offering filings (startup and fund raises) parsed from official SEC EDGAR XML: issuer, industry, offering amount, amount sold, exemptions, first sale date and related persons.

- **URL**: https://apify.com/knobby_woodworker_aig/sec-form-d-feed.md
- **Developed by:** [Reval](https://apify.com/knobby_woodworker_aig) (community)
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.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?

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 New Raise Feed (Official EDGAR)

Get a clean, structured **daily feed of new SEC Form D filings** — the notices companies and funds file when they raise money in private offerings (Regulation D Rule 506(b), 506(c), Rule 504, Section 3(c) funds). Each run reads the **official SEC EDGAR daily index**, picks out every `D` (new notice) and `D/A` (amendment) filing, and parses the filing's structured XML into one JSON row per raise: issuer, state, industry, total offering amount, amount sold, amount remaining, exemptions claimed, date of first sale, and the related persons named in the filing.

Use it for **startup and venture deal sourcing, fund launch tracking, private-placement lead lists, fintech/legal/accounting prospecting, investment research, and market intelligence** — without scraping third-party sites.

### Why this Actor

- ✅ **Official source only** — data comes straight from `sec.gov` EDGAR (daily form index + each filing's `primary_doc.xml`). No third-party aggregators, no logins.
- ✅ **Issuer history enrichment (flat columns)** — for every filing we look up the issuer's official EDGAR submissions history and add: number of prior Form D/D/A raises, date of the last prior raise, first-ever Form D date, whether an 8-K was filed in the last 30 days, Form 4 insider-filing count in the last 30 days, Schedule 13D activity in the last 90 days, SEC-reporting status, SIC industry code and tickers. Spot repeat raisers, first-time raisers and public companies doing private placements at a glance.
- ✅ **New-only mode for schedules** — remembers which accession numbers it already delivered, so a daily schedule returns only fresh filings.
- ✅ **Filters** — by issuer state, minimum offering size, and form type (`D` / `D/A`).
- ✅ **Polite by design** — throttled to 5 requests/second (SEC allows 10), with retries and exponential backoff on 429/503, and a declared User-Agent as SEC's fair-access policy requires.
- ✅ **No personal-data enrichment** — related persons are output as name + relationship only, exactly as filed. No emails, phones, or home addresses are collected or added.

### How to use

1. Click **Try for free** / **Start**.
2. Enter a **contact email** — SEC requires automated tools to identify themselves; the Actor sends `User-Agent: Nonentity LLC <your email>`.
3. Leave dates empty to get the **latest EDGAR business day** (normally yesterday), or set a start/end date (max 92 days per run).
4. Optionally filter by **states** (e.g. `CA`, `NY`, `TX`) and **minimum offering amount**.
5. **Schedule** it daily (e.g. 7:00 AM ET) and switch *Only new filings* **on**, and connect the dataset to Google Sheets, Slack, email, Zapier, Make or a webhook.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `contactEmail` | string (required) | `revalclaw@gmail.com` | Email placed in the SEC User-Agent. Replace with your own if you like. |
| `startDate` / `endDate` | `YYYY-MM-DD` | latest EDGAR day | Filing-date window. |
| `formTypes` | `["D","D/A"]` | both | New notices and/or amendments. |
| `states` | string\[] | all | Issuer principal-place-of-business state/country codes. |
| `minOfferingAmount` | integer (USD) | none | Skip smaller raises (offerings marked "Indefinite" are kept). |
| `maxItems` | integer | 50 | Max filings per run. |
| `enrich` | boolean | true | Add issuer EDGAR history columns (see Output). |
| `onlyNew` | boolean | false | Skip filings delivered in earlier runs (state kept in a named key-value store in your account). **Turn this ON for scheduled daily runs.** |

Example input:

```json
{
  "contactEmail": "you@yourcompany.com",
  "startDate": "2026-10-26",
  "endDate": "2026-10-30",
  "states": ["CA", "NY"],
  "minOfferingAmount": 5000000,
  "maxItems": 500,
  "onlyNew": false
}
```

### Output

One dataset item per filing. Example (real EDGAR filing, related-person list shortened):

```json
{
  "accessionNumber": "0002099200-26-000002",
  "filingDate": "2026-10-29",
  "formType": "D",
  "isAmendment": false,
  "issuerName": "AG-1102 Fund I, a series of Roll Up Vehicles, LP",
  "cik": "2099200",
  "issuerCity": "LYNNWOOD",
  "issuerState": "WA",
  "stateOfIncorporation": "DELAWARE",
  "entityType": "Limited Partnership",
  "yearOfIncorporation": "2026",
  "industryGroup": "Pooled Investment Fund",
  "investmentFundType": "Venture Capital Fund",
  "securitiesTypes": ["Pooled Investment Fund Interests"],
  "offeringAmount": 404000,
  "offeringAmountIndefinite": false,
  "amountSold": 404000,
  "remaining": 0,
  "minimumInvestment": 25000,
  "totalInvestors": 9,
  "exemptionTypes": ["06b", "3C", "3C.1"],
  "exemptionLabels": ["Rule 506(b)", "Investment Company Act Section 3(c)", "Section 3(c)(1)"],
  "dateOfFirstSale": "2026-10-27",
  "relatedPersons": [{ "name": "Fund GP, LLC", "relationship": "Director" }],
  "priorRaiseCount": 0,
  "priorNewNoticeCount": 0,
  "priorRaiseLastDate": null,
  "firstFormDDate": "2026-10-29",
  "priorRaiseCountIsLowerBound": false,
  "had8kLast30d": false,
  "form4CountLast30d": 0,
  "had13dLast90d": false,
  "isSecReportingCompany": false,
  "sicCode": null,
  "tickers": null,
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/2099200/000209920026000002/0002099200-26-000002-index.htm",
  "primaryDocUrl": "https://www.sec.gov/Archives/edgar/data/2099200/000209920026000002/primary_doc.xml",
  "source": "SEC EDGAR"
}
```

#### Enrichment columns

| Column | Meaning |
|---|---|
| `priorRaiseCount` | Form D + D/A filings by the same CIK filed before this filing date |
| `priorNewNoticeCount` | Of those, new notices (`D`) only |
| `priorRaiseLastDate` | Most recent earlier Form D/D/A date |
| `firstFormDDate` | Issuer's first Form D/D/A on EDGAR (equals `filingDate` for first-time raisers) |
| `priorRaiseCountIsLowerBound` | `true` only for very large filers whose older history was not fully paged |
| `had8kLast30d` | 8-K or 8-K/A filed in the 30 days up to the filing date |
| `form4CountLast30d` | Form 4 insider filings on this issuer in the 30 days up to the filing date |
| `had13dLast90d` | Schedule 13D/13D-A filed on this issuer in the 90 days up to the filing date |
| `isSecReportingCompany` | Filed a 10-K/10-Q/20-F/40-F in the past ~13 months |
| `sicCode`, `sicDescription`, `tickers`, `exchanges` | From the issuer's EDGAR profile |

Most Form D issuers are private funds and companies, so 8-K/Form 4/ticker fields are usually empty/false — when they are set, you've found a public company raising privately.

Also available: `revenueRange`, `remainingIndefinite`, `hasNonAccreditedInvestors`, `salesCommissions`, `findersFees`, `firstSaleYetToOccur`, `offeringMoreThanOneYear`, `isBusinessCombination`, `scrapedAt`. A `RUN_SUMMARY` record (days scanned, items pushed, skipped, filtered) is saved in the run's key-value store.

Download results as JSON, CSV, Excel, XML or HTML, or read them through the Apify API.

### How much does it cost?

A typical EDGAR business day has roughly 150–300 Form D/D/A filings; a full enriched day takes about 1.5–2 minutes at the default polite rate on 256 MB memory, so platform usage is tiny. Planned pricing is **pay-per-result at about $0.004 per filing** (≈ $1 for a full day) — pricing is not active yet and may change; the Store page will show the current price.

### Legal & data notes

- Data is public information published by the U.S. Securities and Exchange Commission on EDGAR. This Actor accesses EDGAR per the SEC's [fair-access guidance](https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data): declared User-Agent, ≤5 requests/second, no login.
- Not affiliated with or endorsed by the SEC. Data is provided as filed; verify against the linked EDGAR filing before relying on it. Not investment advice.
- Related persons are reproduced only as name and relationship from the filing. Do not use the output for unsolicited personal marketing that violates applicable law (e.g. CAN-SPAM, TCPA, GDPR).

### FAQ

**Why is a day empty?** EDGAR does not publish daily indexes for weekends and federal holidays, and "Only new filings" skips filings you already received.

**Does it include older filings?** Yes — set any date range back to 2009+ (when Form D became XML), up to 92 days per run.

**Issues or feature requests?** Open an issue on the Actor's Issues tab.

# Actor input Schema

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

Required by SEC EDGAR fair-access policy. Sent in the User-Agent header as "Nonentity LLC <contactEmail>". Suggested default: revalclaw@gmail.com — replace with your own email if you prefer.

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

First EDGAR filing date to include (YYYY-MM-DD). Leave both dates empty to fetch the latest published EDGAR business day (normally yesterday).

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

Last EDGAR filing date to include (YYYY-MM-DD). Defaults to the start date. Max 92 days per run.

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

Which filings to include: D (new notice) and/or D/A (amendment).

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

Optional. Only include issuers whose principal place of business is in these EDGAR state/country codes (e.g. CA, NY, TX, MO, KS). Empty = all.

## `minOfferingAmount` (type: `integer`):

Optional. Skip offerings whose total offering amount is below this value. Offerings marked "Indefinite" are kept.

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

Maximum number of filings to output per run.

## `enrich` (type: `boolean`):

Adds flat columns from the issuer's official EDGAR submissions history: prior Form D count and last date, first Form D date, 8-K in last 30 days, Form 4 count in last 30 days, Schedule 13D in last 90 days, SEC reporting status, SIC code, tickers. Adds ~1 SEC request per new issuer.

## `onlyNew` (type: `boolean`):

Remember delivered accession numbers in a named key-value store in your account and skip them on later runs. Off by default; turn ON for scheduled daily runs so you only get fresh filings.

## `stateStoreName` (type: `string`):

Named key-value store used by "Only new filings". Use different names for different schedules/filters.

## `maxRequestsPerSecond` (type: `integer`):

Throttle for sec.gov requests. SEC allows at most 10/s; this Actor caps at 8 and defaults to 5.

## Actor input object example

```json
{
  "contactEmail": "revalclaw@gmail.com",
  "formTypes": [
    "D",
    "D/A"
  ],
  "maxItems": 10,
  "enrich": true,
  "onlyNew": false,
  "stateStoreName": "sec-form-d-feed-state",
  "maxRequestsPerSecond": 5
}
```

# Actor output Schema

## `results` (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 = {
    "contactEmail": "revalclaw@gmail.com",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("knobby_woodworker_aig/sec-form-d-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 = {
    "contactEmail": "revalclaw@gmail.com",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("knobby_woodworker_aig/sec-form-d-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 '{
  "contactEmail": "revalclaw@gmail.com",
  "maxItems": 10
}' |
apify call knobby_woodworker_aig/sec-form-d-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,knobby_woodworker_aig/sec-form-d-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/w5or8yaIyFa86IikA/builds/F3VDtYbD2QAdmZuFV/openapi.json
