# SEC Form D + Funding News Tracker: Startup Raises (`hydrocore/sec-form-d-fundraising`) Actor

Track who just raised: SEC Form D filings plus TechCrunch funding news in one dataset — company, amount, date, industry, executives, headline and link. Filter by state, industry or amount; skip funds; monitor only new items.

- **URL**: https://apify.com/hydrocore/sec-form-d-fundraising.md
- **Developed by:** [Hydrocore Data](https://apify.com/hydrocore) (community)
- **Categories:** Lead generation, Business, News
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 form d filing saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 + Funding News Tracker: Startup Raises

Get a daily feed of **who just raised money**, from two sources in one clean dataset:

- **SEC EDGAR Form D filings** (`recordType: "secFormD"`): every private company or fund selling securities under Regulation D must file a Form D within 15 days of the first sale. You get company, amount raised, amount sold, industry, executives and directors, address and phone.
- **Funding news** (`recordType: "fundingNews"`): fundraising stories from **TechCrunch's official RSS feeds** (main, Startups, Fundraising tag, Venture). You get headline, link, publish time, excerpt, and the company and USD amount when the headline states them plainly.

No API key, no login. SEC data is public-domain US government data; news comes only from official RSS (no article scraping). Competitively priced: you pay only for rows that pass your filters.

### Try it in under a minute

1. Click **Try for free** / **Start** with the default input (last 7 days, both sources, skip investment funds, max 50).
2. Open the **Dataset** tab → **Overview** view for company, amount, date, source and link.
3. Export JSON, CSV or Excel, or connect Make / Zapier / n8n / the API.
4. Optional: turn on **Only new since last run** and schedule daily for a lead feed.

More example inputs are in the **Example input** section below.

### Who uses it

- **B2B sales & SDR teams**: companies that just raised are about to hire and buy software. Reach them first.
- **VCs, angels and scouts**: deal flow and competitor-round tracking by industry and state, with press coverage next to the filings.
- **Wealth managers & private bankers**: executives of freshly funded companies are prime prospects.
- **Lawyers, accountants, recruiters and fund admins**: spot new clients the week they file.
- **Journalists & analysts**: track private capital flows by sector.

### How to use

1. **Sources**: `sec`, `news`, or both (default both).
2. Pick a window: **last N days** (default 7) or exact dates. Applies to filing dates and news publish dates.
3. Optional filters: company-name / headline words, state codes, industry words (filings only), minimum / maximum amount.
4. **Skip investment funds** is on by default (filings), so you get startups and operating businesses.
5. Choose a sort (**newest**, **largest amount**, **most sold**) and a cap. Sorting happens across both types before the cap.
6. For a lead feed, turn on **Only new since last run** and schedule the Actor daily.

#### Example input

```json
{
  "sources": ["sec", "news"],
  "lastDays": 7,
  "states": ["CA", "NY"],
  "minOfferingAmount": 1000000,
  "sortBy": "largestOffering",
  "maxResults": 100
}
```

#### How filters, sorting and the cap work across both types

- `maxResults` caps the **total** rows saved (filings + news).
- `newest` sorts by filing date / news publish time. `largestOffering` uses the filing `offeringAmount` and the news headline amount (`newsAmount`); `mostSold` uses the filing `amountSold` and `newsAmount`. Rows without an amount come after rows with one, ordered newest first.
- `states`, `industries` and `excludePooledFunds` apply to filings only. `companyKeywords` matches filing company names and news headlines. With a minimum amount set, news with no amount in the headline is dropped.
- News keeps fundraising stories only (raises, funding, seed, Series A/B/C, venture rounds, investments); other posts are dropped for free.

### Output

All rows share **the same keys in the same order**. `recordType` comes first and `scrapedAt` last. Fields that don't apply to a row are `null` (never omitted, never `""`). Amounts are JSON numbers in USD, timestamps are ISO 8601 UTC (`…At`), and day-only values are `YYYY-MM-DD` (`…Date`). Empty lists are `null`, with a `…Count` column next to them.

Dataset views: **Overview** (columns both types fill), **Filings**, **News**, **Contacts & executives**, **Detailed** (every field).

| Field | Type | Example | Description |
|---|---|---|---|
| recordType | string | fundingNews | secFormD = SEC Form D filing; fundingNews = fundraising news story |
| companyName | string | Harbinger | Filing: issuer legal name. News: company parsed from the headline when obvious, else null |
| title | string | Harbinger raises $240M after expanding into defens… | Filing: "<company> filed Form D". News: headline |
| amount | number | 240000000 | Main USD amount: filing offeringAmount or news headline amount (null if unknown) |
| eventDate | string | 2026-11-05 | Filing date or news publish day (YYYY-MM-DD) |
| source | string | TechCrunch | SEC EDGAR Form D or TechCrunch |
| url | string | https://techcrunch.com/2026/11/05/harbinger-raises… | Readable filing or news article URL (dedupe key for news) |
| newsAmount | number | 240000000 | USD amount parsed from the headline (news only; never invented) |
| publishedAt | string | 2026-11-05T17:52:44.000Z | News publish time, ISO 8601 UTC |
| offeringAmount | number | null | Total offering amount in USD (null when 'Indefinite') |
| amountSold | number | 1278750 | Amount already sold in USD |
| industry | string | Other Real Estate | Form D industry group |
| state | string | CA | State |
| executiveNames | string | (names hidden) | Executives as one text column (Excel-friendly) |
| accessionNumber | string | 0002163677-26-000001 | Unique SEC accession number (dedupe key) |
| scrapedAt | string | 2026-11-06T01:14:19.338Z | When this row was fetched (ISO 8601) |

The full field list (55 fields, with descriptions) is in the dataset schema / Detailed view.

Real `fundingNews` row from a test run:

```json
{
  "recordType": "fundingNews",
  "companyName": "Harbinger",
  "title": "Harbinger raises $240M after expanding into defense",
  "amount": 240000000,
  "eventDate": "2026-11-05",
  "source": "TechCrunch",
  "url": "https://techcrunch.com/2026/11/05/harbinger-raises-240m-after-expanding-into-defense/",
  "newsAmount": 240000000,
  "publishedAt": "2026-11-05T17:52:44.000Z",
  "newsCategories": [
    "Fundraising",
    "Startups",
    "Transportation",
    "autonomous vehicles",
    "electric trucks",
    "Harbinger",
    "In Brief"
  ],
  "newsCategoryCount": 7,
  "feedUrl": "https://techcrunch.com/feed/",
  "offeringAmount": null,
  "amountSold": null,
  "amountRemaining": null,
  "isOfferingIndefinite": null,
  "industry": null,
  "isPooledFund": null,
  "fundType": null,
  "filedDate": null,
  "firstSaleDate": null,
  "isFirstSaleYetToOccur": null,
  "formType": null,
  "isAmendment": null,
  "city": null,
  "state": null,
  "zipCode": null,
  "street": null,
  "phone": null,
  "executiveNames": null,
  "executiveCount": null,
  "investorCount": null,
  "nonAccreditedInvestorCount": null,
  "minimumInvestment": null,
  "revenueRange": null,
  "securityTypes": null,
  "securityTypeCount": null,
  "exemptions": null,
  "exemptionCount": null,
  "entityType": null,
  "incorporatedIn": null,
  "yearOfIncorporation": null,
  "isIncorporatedWithinFiveYears": null,
  "salesCommissions": null,
  "findersFees": null,
  "grossProceedsUsedForPayments": null,
  "salesBrokers": null,
  "salesBrokerCount": null,
  "filingIndexUrl": null,
  "xmlUrl": null,
  "cik": null,
  "accessionNumber": null,
  "executives": null,
  "descriptionText": "The Los Angeles-based startup has now raised more than $650 million, and is working on electric trucks, emergency vehicles, and a driverless platform for the military.",
  "scrapedAt": "2026-11-06T01:14:19.338Z"
}
```

Real `secFormD` row from the same run (person names hidden):

```json
{
  "recordType": "secFormD",
  "companyName": "31 Jump Street LLC",
  "title": "31 Jump Street LLC filed Form D",
  "amount": null,
  "eventDate": "2026-11-04",
  "source": "SEC EDGAR Form D",
  "url": "https://www.sec.gov/Archives/edgar/data/2163677/000216367726000001/xslFormDX01/primary_doc.xml",
  "newsAmount": null,
  "publishedAt": null,
  "newsCategories": null,
  "newsCategoryCount": null,
  "feedUrl": null,
  "offeringAmount": null,
  "amountSold": 1278750,
  "amountRemaining": null,
  "isOfferingIndefinite": true,
  "industry": "Other Real Estate",
  "isPooledFund": false,
  "fundType": null,
  "filedDate": "2026-11-04",
  "firstSaleDate": "2026-10-01",
  "isFirstSaleYetToOccur": false,
  "formType": "D",
  "isAmendment": false,
  "city": "San Diego",
  "state": "CA",
  "zipCode": "92110",
  "street": "3990 Old Town Avenue, Suite A103",
  "phone": "6196881557",
  "executiveNames": "(names hidden)",
  "executiveCount": 2,
  "investorCount": 16,
  "nonAccreditedInvestorCount": null,
  "minimumInvestment": 0,
  "revenueRange": "No Revenues",
  "securityTypes": [
    "Equity"
  ],
  "securityTypeCount": 1,
  "exemptions": [
    "04",
    "06c",
    "4a5"
  ],
  "exemptionCount": 3,
  "entityType": "Limited Liability Company",
  "incorporatedIn": "California",
  "yearOfIncorporation": 2025,
  "isIncorporatedWithinFiveYears": true,
  "salesCommissions": 0,
  "findersFees": 0,
  "grossProceedsUsedForPayments": 0,
  "salesBrokers": null,
  "salesBrokerCount": 0,
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/2163677/000216367726000001/0002163677-26-000001-index.html",
  "xmlUrl": "https://www.sec.gov/Archives/edgar/data/2163677/000216367726000001/primary_doc.xml",
  "cik": "2163677",
  "accessionNumber": "0002163677-26-000001",
  "executives": [
    {
      "name": "(name hidden)",
      "roles": [
        "Executive Officer",
        "Promoter"
      ],
      "city": "San Diego",
      "state": "CA"
    }
  ],
  "descriptionText": null,
  "scrapedAt": "2026-11-06T01:14:13.874Z"
}
```

Export as JSON, CSV, Excel or XML from the dataset tab or API. For one row per executive, use the API with `unwind=executives`. A run summary (counts per type, feed items, filtered out, date window) is saved to the `OUTPUT` record.

### Why this Actor

- **Official sources only**: SEC EDGAR daily index + each filing's XML (declared User-Agent, under 5 requests/second), and TechCrunch's official RSS feeds.
- **No duplicates**: one row per accession number (filings) or URL (news). Monitor mode remembers both, so you never pay for the same item twice.
- **Clean, stable columns**: built for Excel, Google Sheets, Make, n8n and Zapier.
- **Competitive pricing**: you pay only for rows that pass your filters and are saved.

### Pricing

Pay per event: one charge per **saved filing** (`filing`) and one per **saved news story** (`news`), at the same rate. Filtered, duplicate or already-seen items are free. Set "Max results" to control spend.

### FAQ

**How fresh is the data?** SEC publishes the daily index each business evening (ET). A daily schedule catches filings the next morning.

**Why is offeringAmount null sometimes?** The issuer marked the offering size as "Indefinite" (`isOfferingIndefinite: true`). These rows are kept when you set a minimum amount.

**Are emails included?** Form D has no emails. Pair it with a contact finder (for example our Website Contact Finder) on the company's domain.

**Is this legal?** Form D filings are public records published by the SEC for public use. Use the data responsibly and follow anti-spam and privacy laws in your outreach.

**Where does the news come from?** TechCrunch official RSS only. The company name and amount are filled only when the headline states them plainly; otherwise they are `null`.

### Changelog

- 1.1: added funding news (TechCrunch official RSS) next to SEC Form D in one dataset. New input `sources` (default both). New fields: `recordType` (first), `title`, `amount`, `eventDate`, `newsAmount`, `publishedAt`, `newsCategories`, `newsCategoryCount`, `feedUrl`, `descriptionText`, and `executiveCount`, `securityTypeCount`, `exemptionCount`, `salesBrokerCount`. Changed: empty lists (`executives`, `securityTypes`, `exemptions`, `salesBrokers`) are now `null`; `executives` moved near the end of the row. New views: Filings, News. `maxResults` now caps filings + news together; monitor mode also remembers news URLs.
- 1.0: first release.

# Actor input Schema

## `sources` (type: `array`):

Pick one or both. Default both: Form D filings (recordType secFormD) and fundraising news stories (recordType fundingNews) in one dataset.

## `lastDays` (type: `integer`):

Look back this many calendar days (weekends have no filings). Ignored when 'Filed from' is set. Default 7. Applies to news publish dates too (TechCrunch feeds hold roughly the latest 20-100 stories each).

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

Start date (YYYY-MM-DD). Overrides 'last N days'. Max window 400 days.

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

End date (YYYY-MM-DD). Empty = today.

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

Amendments update earlier raises (e.g. more money sold). Off by default so each row is a fresh raise.

## `companyKeywords` (type: `array`):

Keep only filings whose company name, or news whose headline, contains any of these words (case-insensitive). Empty = all.

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

Two-letter codes from the filing address, e.g. CA, NY, TX (non-US issuers use EDGAR codes). Empty = all. SEC filings only.

## `industries` (type: `array`):

Match Form D industry groups, e.g. 'Other Technology', 'Biotechnology', 'Real Estate', 'Health Care', 'Restaurants'. Empty = all. SEC filings only.

## `excludePooledFunds` (type: `boolean`):

On by default: hides hedge/PE/VC funds so you get startups and operating businesses. Turn off to include funds. SEC filings only.

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

Keep raises of at least this size (USD). Filings: 'Indefinite' offerings are kept. News: stories with no amount in the headline are dropped when set. Empty = no minimum.

## `maxOfferingAmount` (type: `integer`):

Keep raises up to this size (USD). News without a parsed amount are kept. Empty = no maximum.

## `sortBy` (type: `string`):

Applied across both types before the cap. Amount sorts use the filing's offering (or sold) amount and the news headline amount; rows without an amount come last, newest first.

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

Hard cap on saved (and charged) rows across both types. Default 50.

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

Remembers accession numbers and news URLs already saved and skips them next time.

## `monitorKey` (type: `string`):

Use different names to keep separate 'seen' lists for different saved searches.

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

SEC asks automated tools to declare a contact in the User-Agent. Optional; never shared anywhere else.

## Actor input object example

```json
{
  "sources": [
    "sec",
    "news"
  ],
  "lastDays": 7,
  "includeAmendments": false,
  "excludePooledFunds": true,
  "sortBy": "newest",
  "maxResults": 50,
  "onlyNew": false,
  "monitorKey": "default"
}
```

# Actor output Schema

## `overview` (type: `string`):

Record type, company, title/headline, amount, date, source and link.

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

Form D deal terms.

## `news` (type: `string`):

TechCrunch fundraising stories.

## `contacts` (type: `string`):

Address, phone and named executives/directors/promoters for outreach.

## `results` (type: `string`):

Every field for every row (both record types).

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

Counts, date window, filters and budget stop flag.

# 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 = {
    "sources": [
        "sec",
        "news"
    ],
    "lastDays": 7,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hydrocore/sec-form-d-fundraising").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 = {
    "sources": [
        "sec",
        "news",
    ],
    "lastDays": 7,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hydrocore/sec-form-d-fundraising").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 '{
  "sources": [
    "sec",
    "news"
  ],
  "lastDays": 7,
  "maxResults": 50
}' |
apify call hydrocore/sec-form-d-fundraising --silent --output-dataset

```

## MCP server setup

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

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/WNqbAoo2Q8ua4OXy0/builds/qh1AroP3g3GcIdObZ/openapi.json
