# Startup Funding Rounds from SEC Form D (No API Key) (`locaihost/funding-rounds`) Actor

Startup funding rounds from SEC Form D filings, same day: company, amount raised, round target, industry, city and state, founding year, investor count, SAFE or equity, filing link. Funds left out, amendments merged, only new rounds on daily runs. No API key. $5 per 1,000 rounds.

- **URL**: https://apify.com/locaihost/funding-rounds.md
- **Developed by:** [locaihost data](https://apify.com/locaihost) (community)
- **Categories:** Lead generation, Business, News
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.75 / 1,000 funding rounds

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 Scraper (Startup Funding Rounds, No API Key)

Get the companies that just raised money, from the Form D filings US companies send the SEC after selling shares, SAFEs or notes: amount raised, target, industry, location, founding year and investor count, one row per funding round. Companies only, no login, no API key.

- Find buyers with fresh budget: a company that just closed a round is often hiring and buying. Add this week's rounds in your industry and state to your CRM.
- Watch your market as an investor: see who raised in your sector and region, how much, and from how many investors.
- Find companies to recruit for or sell services to: newly funded startups tend to hire, rent offices and take on agencies.
- Research private capital: track raising by industry, state, security type or exemption over time.
- Run a daily funding feed: schedule it with `onlyNew` and get only the rounds filed since the last run.

### Quick start

Paste this into the **JSON** tab of the input and click **Start**:

```json
{"lastDays": 3, "industries": ["technology", "health-care"], "excludeFunds": true, "maxResults": 10}
```

You get 10 technology and health care rounds filed in the last 3 days, usually in about 15 seconds. Remove `maxResults` to get every matching round: a full week with funds excluded is a few hundred rounds in about a minute.

### What you get

One row per funding round (offering), newest filings first:

| Group | Fields |
|---|---|
| Company | `issuerName`, `industryGroup`, `industrySector`, `city`, `state`, `stateName`, `country`, `issuerPhone` (the company's own listed business phone), `entityType`, `yearOfIncorporation`, `incorporatedWithinFiveYears`, `jurisdictionOfIncorporation`, `revenueRange`, `coIssuers`, `cik` |
| The round | `totalAmountSold` (raised so far), `totalOfferingAmount` (the target), `offeringAmountIndefinite`, `totalRemaining`, `currency`, `minimumInvestment`, `investorCount`, `hasNonAccreditedInvestors`, `nonAccreditedInvestorCount`, `firstSaleDate`, `firstSaleYetToOccur`, `offeringMoreThanOneYear`, `isBusinessCombination` |
| What was sold | `securityTypes` (equity, debt, options, other...), `isSafe`, `otherSecurityDescription` |
| Exemptions and fees | `exemptions` (Rule 506(b), 506(c)...), `exemptionCodes`, `salesCommissionsUsd`, `findersFeesUsd`, `salesCompensationRecipientCount` (a count only, never names) |
| Funds | `isFund`, `fundType`, `netAssetValueRange` (mostly empty unless you turn `excludeFunds` off) |
| The filing | `filingDate`, `formType` (D or D/A), `isAmendment`, `amendsAccessionNumber`, `accessionNumber`, `isFirstFormD` (with `firstTimeFilersOnly`), `filingUrl` (SEC index page), `formUrl` (the SEC's readable form), `source`, `scrapedAt` |

One real row (run on 2026-10-18, shortened):

```json
{
  "issuerName": "Estuary Biotherapeutics, Inc.",
  "industryGroup": "Biotechnology",
  "industrySector": "Health Care",
  "totalAmountSold": 40654685,
  "totalOfferingAmount": 103654385,
  "totalRemaining": 62999700,
  "currency": "USD",
  "filingDate": "2026-10-16",
  "formType": "D",
  "isAmendment": false,
  "city": "Menlo Park",
  "state": "CA",
  "country": "United States",
  "entityType": "Corporation",
  "yearOfIncorporation": 2022,
  "incorporatedWithinFiveYears": true,
  "jurisdictionOfIncorporation": "DELAWARE",
  "revenueRange": "Decline to Disclose",
  "isFund": false,
  "securityTypes": ["Equity"],
  "isSafe": false,
  "investorCount": 25,
  "firstSaleDate": "2026-07-01",
  "exemptions": ["Rule 506(b)"],
  "cik": "0002138862",
  "accessionNumber": "0002138862-26-000003",
  "source": "SEC EDGAR Form D"
}
```

The dataset has two views (**Funding rounds** and **All fields**) and exports to JSON, CSV, Excel or HTML. The run's `SUMMARY` record shows how many filings were listed and read, what was skipped and why.

**Companies only.** Form D also lists the company's executives, directors and promoters, and anyone paid to sell the securities. This Actor never returns any of them: those parts of the filing are dropped as it is read. A filing whose issuer is really an individual (the issuer's name is one of the people on the filing, or a personal trust, estate or IRA) is skipped.

### How much does it cost?

You pay per funding round returned. There is no charge for Apify platform usage on top.

| Row | Free and Starter | Scale | Business |
|---|---|---|---|
| Funding round | $5 per 1,000 | $3.75 per 1,000 | $2.75 per 1,000 |

Plus $0.00005 per run start. **Apify's free $5 monthly credit covers about 1,000 funding rounds.** Free-plan runs stop at 100 rounds each; any paid Apify plan removes the cap.

**What's free:** runs that find nothing, input mistakes, funds and filings your filters leave out, individuals' filings, filings already returned to you (`onlyNew`), and the older filings of an offering when a newer amendment of it is in the same run (one row and one charge per offering). To cap a run's spend, set **Maximum cost per run** in the run options, or use `maxResults`.

### Limits

- Form D is filed after the first sale, up to 15 days later, so a round can show up a couple of weeks after it closed. Some companies never file one.
- Amounts are what the company reported. `totalAmountSold` is the amount raised in that offering when the form was filed, not the company's total funding. A later amendment usually shows a higher number.
- No investor names. Form D doesn't list who invested, and the people it does list (executives, promoters) are left out on purpose.
- Industry is the company's own pick from the SEC's list. Most software startups choose "Other Technology".
- `excludeFunds` removes filings marked as funds: the "Pooled Investment Fund" industry group or an Investment Company Act 3(c) exemption. Property companies that file as an ordinary company (many real estate LLCs) still appear. Use the `industries` filter to keep to technology, health care or another sector.
- US offerings only. Companies outside the US appear only when they sell securities in the US under Regulation D.
- Dates: up to 366 days per run, back to March 2009 (when Form D became electronic XML). EDGAR has no filings on weekends and US federal holidays; a "last N days" window with none yet reaches back to the last filing day.
- Speed: a week with funds excluded (a few hundred rounds) takes about a minute; a month (about 1,700 rounds) takes about 5 minutes. `firstTimeFilersOnly` adds one EDGAR lookup per matching filing. If the run's time limit is reached, it stops cleanly and keeps what it found.

### Only new since last run, and schedules

Save your input as a task, turn on `onlyNew` and schedule it every morning under **Schedules** in Apify Console. Each run skips filings an earlier run with the same filters already returned, and skipped filings cost nothing. The memory is kept per set of filters, so a technology task and a health care task each keep their own. Filings are listed through EDGAR full-text search, which shows a Form D on the day it is filed; if that service is down, the EDGAR daily index is used instead.

### Integrations: API, n8n, Make and AI agents

**API.** Run it and get the rows back in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/locaihost~funding-rounds/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"lastDays": 7, "industries": ["technology"], "minAmountSold": 1000000}'
```

Apify's API clients for Python and JavaScript work the same way.

**n8n, Make, Zapier, Google Sheets, Slack, webhooks.** Apify's built-in integrations send each run's dataset wherever you need it, for example a new Google Sheets row or Slack message per round.

**AI agents (MCP).** Add this Actor to Claude, Cursor or any MCP client with `https://mcp.apify.com/?tools=locaihost/funding-rounds`, then ask something like *"Which biotech companies in Massachusetts raised more than $5 million this month?"*

### FAQ

#### How much does it cost to track startup funding rounds?

$5 per 1,000 funding rounds on the Free and Starter plans, $3.75 on Scale and $2.75 on Business. Apify's free $5 monthly credit covers about 1,000 rounds, and a run that finds nothing costs nothing.

#### Can I use it through the API or from Python?

Yes. Use the `run-sync-get-dataset-items` call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.

#### Can I use it from an AI agent?

Yes. Through the Apify MCP server (`https://mcp.apify.com/?tools=locaihost/funding-rounds`) any MCP client can call it with dates and filters and read the rows back.

#### Is it legal to scrape SEC Form D filings?

Form D filings are public records published by the US Securities and Exchange Commission, which states that information on sec.gov may be copied and further distributed, and asks that the SEC be cited as the source. The Actor reads only the public EDGAR archive, stays under the SEC's 10 requests per second limit with a declared contact, and never returns the people named on a filing. You are responsible for how you use the data, including direct marketing and phone outreach rules (for example the US TCPA and do-not-call rules) when you contact companies.

#### Does it show who invested?

No. Form D gives the number of investors (`investorCount`), not their names.

#### What does "one row per round" mean for amendments?

When an offering's original filing and its amendments (Form D/A) are all in your date range, you get one row with the latest numbers, marked `isAmendment`, charged once. Turn `includeAmendments` off to get only brand-new offerings.

#### Why are some fields empty?

Companies may leave items blank or "Decline to Disclose" (revenue is often withheld), an offering with no set target has `offeringAmountIndefinite: true` and no `totalOfferingAmount`, and fund fields are mostly empty unless you include funds.

### More from locaihost data

- [SEC EDGAR Scraper](https://apify.com/locaihost/sec-edgar): financials, 10-K/10-Q/8-K filings and Form 4 trades for public companies.
- [Company Verification Checker](https://apify.com/locaihost/kyb-check): check a company's registration and screen it against sanctions lists before you deal with it.
- [Careers Page Jobs Scraper](https://apify.com/locaihost/careers-jobs): see what a newly funded company is hiring for.
- [LinkedIn Company Scraper](https://apify.com/locaihost/linkedin-company): size, industry and website for the companies on your list.

### Did it help?

If this saved you time, a quick rating on the Store helps other people find it.

### Support

If something isn't working, or you need a field we don't return, open an issue on the **Issues** tab: we answer issues within 24 hours.

# Changelog

This Actor's version history is a separate document: https://apify.com/locaihost/funding-rounds/changelog.md

# Actor input Schema

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

How many days back to look, counting today. 1 = today only, 7 = the last week. EDGAR has no filings on weekends and US federal holidays; if the whole window has none yet, the run reaches back to the last filing day. Ignored when you set a start date below.

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

First filing date to include, as YYYY-MM-DD (e.g. 2026-09-01). Overrides Last N days. Up to 366 days per run.

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

Last filing date to include, as YYYY-MM-DD. Empty = today.

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

Only companies whose business address is in these states. Codes or names: "CA", "New York", "TX", "Ontario". Empty = anywhere.

## `countries` (type: `array`):

Only companies whose business address is in these countries: "United States", "Canada", "UK", "Singapore", "Israel". Empty = anywhere.

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

The industry group the company picked on its Form D. A sector ("Technology (all)") covers every group under it. Most software startups file as "Technology: Other Technology". Empty = every industry.

## `securityTypes` (type: `array`):

Only offerings of these kinds. SAFE = simple agreement for future equity (filed as "Other" with a SAFE description). Options covers options, warrants and convertible rights. Empty = any.

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

Only offerings that had already sold at least this much when filed, e.g. 1000000 for $1M+. Filings that don't state an amount are left out when this is set.

## `maxAmountSold` (type: `integer`):

Only offerings that had sold at most this much, e.g. 5000000 to focus on seed and small rounds.

## `excludeFunds` (type: `boolean`):

On by default: leaves out filings marked as pooled investment funds (the "Pooled Investment Fund" industry or an Investment Company Act 3(c) exemption), such as VC, private equity and hedge funds. Property companies that file as ordinary companies still appear: use Industries to narrow. Turn off to include funds.

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

An amendment updates an earlier filing, usually with a higher amount sold. When an offering's original and its amendments are all in the date range, you get one row with the latest numbers, charged once. Turn off to get only brand-new offerings.

## `firstTimeFilersOnly` (type: `boolean`):

Only companies filing their first ever Form D, which is often their first outside round. Costs one extra EDGAR lookup per matching filing, so runs take a little longer. Implies amendments off.

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

For scheduled runs: skip filings an earlier run with the same filters already returned, so you only get (and pay for) new ones. The memory is kept per set of filters.

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

Stop after this many rows. 0 or empty = no limit. Newest filings come first. The prefill of 10 is for a quick look: clear it to get every matching round.

## Actor input object example

```json
{
  "lastDays": 3,
  "states": [
    "CA",
    "NY",
    "MA"
  ],
  "countries": [
    "United States"
  ],
  "industries": [
    "technology",
    "health-care"
  ],
  "excludeFunds": true,
  "includeAmendments": true,
  "firstTimeFilersOnly": false,
  "onlyNew": false,
  "maxResults": 10
}
```

# Actor output Schema

## `rounds` (type: `string`):

Companies, amounts raised, industry, location and filing links.

## `details` (type: `string`):

Every column, including exemptions, fees and investor counts.

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

Filings listed and read, what was skipped and why, cost.

# 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 = {
    "lastDays": 3,
    "industries": [
        "technology",
        "health-care"
    ],
    "excludeFunds": true,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("locaihost/funding-rounds").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 = {
    "lastDays": 3,
    "industries": [
        "technology",
        "health-care",
    ],
    "excludeFunds": True,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("locaihost/funding-rounds").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 '{
  "lastDays": 3,
  "industries": [
    "technology",
    "health-care"
  ],
  "excludeFunds": true,
  "maxResults": 10
}' |
apify call locaihost/funding-rounds --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,locaihost/funding-rounds"
        }
    }
}
```

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/VDwghMVfP859tdfgv/builds/cBx56pUoq0tIngyhO/openapi.json
