# Deal Radar: SEC Form D & 8-K Deal Leads (`falcon-sol/deal-radar`) Actor

Fresh SEC Form D private raises and 8-K deal events, scored as investor and vendor leads. Pay per lead.

- **URL**: https://apify.com/falcon-sol/deal-radar.md
- **Developed by:** [falcon.sol](https://apify.com/falcon-sol) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 8-k deal events

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

## 💼 Deal Radar: SEC Form D Funding Leads & 8-K Deal Events

**Every company that raises private money in the US has to file a Form D with the SEC, usually within 15 days of the first sale.** Deal Radar turns those filings into clean, scored leads: who raised, how much, how much is still open, who's running the company, and which broker-dealer or finder was paid to sell it. **$0.0009 per Form D lead. Filings that fail to parse are free.**

### 🎯 Who it's for

- **Bankers, placement agents and capital advisors** looking for companies mid-raise, or for who's winning mandates
- **B2B sales teams** (banking, payroll, insurance, legal, SaaS) who want to reach companies right after they're funded
- **VCs, family offices and researchers** tracking private-market activity by state, industry or size
- **AI agents and data pipelines** that need structured private-placement data over an API

### 🚀 Why this one

- 🏆 **A 0-100 lead score with reasons.** Each row says why it scored the way it did, such as `raise >= $25M`, `operating company`, `new offering`, `uses placement agent` or `still raising`. Sort and go.
- 🧾 **Placement agents with CRD numbers.** Pulled from the filing's sales-compensation section, along with the associated broker-dealer and the states they solicited in. EDGAR's literal "None" placeholders are cleaned out, so an empty agent never counts as one.
- 📈 **Raise math done for you.** Offering size, amount sold, **amount still open**, **% sold**, investor count, minimum investment, commissions, finder's fees, and the filer's use-of-proceeds note when they wrote one.
- 🏢 **Fund vs operating company.** Pooled funds (hedge, PE, VC) are flagged so you can drop them in one click. Industry is the Form D group plus the filer's own clarification, with the SEC SIC description beside it when EDGAR has one.
- 👥 **People, with roles.** Each related person has a name, the relationship list (Executive Officer, Director, Promoter), and the title clarification when the filer wrote one.
- 🌐 **Website and domain when the filing actually has one.** Form D rarely states a URL. On 8-Ks the company site is taken from the EDGAR profile, the filing text, or an Exhibit 99 press release, and IR subdomains lose to the corporate host when both appear.
- 🗓️ **Date-range backfill.** Pull any window of filing dates through EDGAR full-text search, or leave the dates empty for the newest filings. The same offering listed under two CIKs is delivered once.
- 📰 **8-K deal-event mode.** Item codes become plain-English types: M\&A, executive change, financing, bankruptcy, agreement, earnings, and the rest. Each row has a one-line summary taken from the filing. **$0.00035 per event.**
- 🔗 **Every row links to the filing on sec.gov**, so you can check the source. The same keys are always present. Unknown scalars are `null`. Lists are `[]`, never `null`.
- 🪶 **Official, free SEC data.** No logins, no third-party data vendors, polite SEC rate limits.

### ⚡ Quick start

1. Pick a **Mode**. Form D is the default.
2. Optional: set a date range, a minimum raise, states or industries. Keep **Exclude pooled investment funds** on for operating companies.
3. Click **Start**, then export to CSV, Excel or JSON, or pull the dataset over the API.

```json
{ "mode": "formD", "startDate": "2026-10-01", "endDate": "2026-10-07", "minAmount": 5000000, "excludeFunds": true, "maxFilings": 500 }
```

### 📊 Sample output

Full rows, every key, are in [`samples/form-d-leads.json`](samples/form-d-leads.json), [`samples/8k-events.json`](samples/8k-events.json) (the credit-agreement fixture the tests lock), and [`samples/8k-live.json`](samples/8k-live.json) (two filings accepted on 23 Oct 2026).

Form D, Xona Space Systems Inc., accepted 23 Oct 2026. `website` is null because neither the Form D nor the EDGAR company profile states one:

```json
{
  "company": "Xona Space Systems Inc.",
  "state": "CA",
  "industry": "Other",
  "website": null,
  "domain": null,
  "offeringAmount": 253459641,
  "amountSold": 238959659,
  "amountRemaining": 14499982,
  "investorCount": 28,
  "useOfProceeds": null,
  "relatedPersons": [{ "name": "Brian Manning", "roles": ["Executive Officer", "Director"], "title": null }],
  "leadScore": 75,
  "leadReasons": ["raise >= $100M", "operating company", "new offering", "equity"],
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/1920779/000110465926118524/0001104659-26-118524-index.htm"
}
```

The same file includes PEX Clay Offshore Co-Invest LP: $75,000,000 sold, offering size indefinite (`null`), Goldman Sachs & Co. LLC, CRD 361.

8-K, TPG Private Equity Opportunities, L.P., filed 23 Oct 2026. `amount` is the deal size named in the item (here, aggregate consideration), not the first number that clears $10,000:

```json
{
  "company": "TPG Private Equity Opportunities, L.P.",
  "fileDate": "2026-10-23",
  "eventType": "financing",
  "dealItems": ["3.02"],
  "summary": "On October 1, 2026, TPG Private Equity Opportunities, L.P., a Delaware limited partnership (the “Fund” or “T-POP”), sold unregistered limited partnership units (the “Units”) of the Fund as part of its continuous private offering for aggregate consideration of $73.1 million.",
  "amount": 73100000,
  "website": null,
  "industry": "Commodity Contracts Brokers & Dealers",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/2050260/000205026026000057/0002050260-26-000057-index.htm"
}
```

Zymeworks Inc. the same day is the case where the press release supplies the site: `website` `https://www.zymeworks.com`, `domain` `zymeworks.com`, `eventType` `agreement`.

Filter a run by state, industry, amount, or 8-K item. Industry matching is a case-insensitive substring, so `Technology` hits `Other Technology` and `biotechnology` does not. `minAmount` on Form D uses amount sold, and falls back to the offering size only when nothing has been sold. On 8-K it uses the parsed dollar figure, and rows with no figure are left out. Item filters accept codes or `M&A`, `executive change`, `financing`, and `bankruptcy`.

### 💸 Pricing

| Event | Price |
|---|---|
| Form D lead (one matched, parsed filing) | $0.0009 |
| 8-K deal event | $0.00035 |

1,000 Form D leads cost $0.90. 1,000 8-K events cost $0.35. Filings dropped by your filters and filings that fail to parse aren't charged. Unparsable ones are listed in the `SKIPPED_FILINGS` record. Apify's own platform usage is billed separately as usual.

### ⚠️ Good to know

- Form D is self-reported. "Indefinite" offering sizes and remaining amounts come back as `null`. A reported `0` stays `0`. Many funds report $0 sold at first.
- The "placement agent" field holds whoever the filing lists as receiving sales compensation. That's usually a broker-dealer, but sometimes a named individual finder.
- The lead score is a transparent heuristic (size, operating company, new offering, agent, still raising, equity, M\&A). It is not a prediction.
- `website` and `domain` stay null when the filing, the EDGAR profile, and any Exhibit 99 press release do not contain a company URL. On the 24 Oct 2026 check that was every Form D lead (0 of 15) and 6 of 8 eight-K events. EDGAR's own `website` field is blank even for large public companies.
- The 8-K `amount` is the deal size named in the chosen item: consideration, purchase price, upfront payment, or facility principal. Par value, NAV per share, and an earlier fee are skipped. When several figures share that label, the earliest one is kept. Golub Capital Private Income Fund I on 23 Oct 2026 sold shares at a $0.01 par value; the consideration in that item is $246,875, and that is `amount`. TPG Private Equity Opportunities, L.P. the same day is $73.1 million, the Fund's own sale, not the later $103.2 million for the wider fund complex. A milestone labeled "up to" loses to the upfront payment.
- Summaries are one sentence from the filing, capped around 360 characters, not an analyst note. There is no exhibit list, no amendment dollar delta, and no "only new since last run" store.
- Not investment advice. Data comes from public SEC EDGAR filings.

### How this compares

List prices checked on the public Apify actor API on 24 Oct 2026. Deal Radar is **$0.0009 per Form D lead ($0.90 / 1,000)** and **$0.00035 per 8-K ($0.35 / 1,000)**. The x402 API is a separate per-call price, $0.015 and $0.01, and is unchanged.

| Product | What you pay, public list | What they emphasize | Where Deal Radar is ahead | Where they are ahead |
|---|---|---|---|---|
| [logiover/sec-edgar-form-d-scraper](https://apify.com/logiover/sec-edgar-form-d-scraper) | $0.0035 free plan to $0.002 on Gold and above, per result, plus a start fee | Offering, sold, remaining, investors, executives, industry and amount filters | Flat $0.0009 under every published tier, including Gold. Lead score with reasons, placement-agent CRDs, and an 8-K mode | No 8-K in that actor |
| [parseforge/sec-form-d-scraper](https://apify.com/parseforge/sec-form-d-scraper) | $0.0095 free plan to $0.009 on Gold, per result. A $15/month plan is also listed | Full filing text, search, ticker and CIK | About a tenth of the per-result price, plus a score and a clean lead schema | Full text and ticker/CIK search. We do not return the raw filing body |
| [signalfoundryhq/sec-form-d-funding-radar](https://apify.com/signalfoundryhq/sec-form-d-funding-radar) | $0.006 free plan to $0.0051 on Gold. Their listing still says $6 / 1,000 | Amendment deltas, fund exclusion, cross-run dedupe | Cheaper on every published tier, plus score, CRDs, and 8-Ks | Amendment dollar deltas and a store of filings already delivered |
| [agents001/form-d-funding-feed](https://apify.com/agents001/form-d-funding-feed) | $0.006 free and bronze, $0.0045 silver, $0.003 Gold, per Form D or 8-K | Form D economics plus 8-K item codes mapped to plain-English labels and short summaries. State, industry, amount, and an incremental store | $0.0009 and $0.00035 under even their Gold tier. Score, CRD cleanup, and a sentence taken from the 8-K text rather than only an item label | Incremental "only new" delivery across runs |
| [scrapers_lat/sec-8k-material-events-scraper](https://apify.com/scrapers_lat/sec-8k-material-events-scraper) | $0.012 free plan to $0.0109 on Diamond, per event. An AI summary is a second charge at the same rate | Event categories, snippets, exhibits, and press-release links | A small fraction of the per-event price, and Form D leads in the same product | Exhibit lists and an optional AI write-up. Our summary is the filing's sentence |
| [constructive_calm/sec-edgar-scraper](https://apify.com/constructive_calm/sec-edgar-scraper) | $0.0004 per filing fetched, other events for XBRL and AI | Broad EDGAR: financials, Form 4, 13F, parsed 8-K items | A deal lead you can sort: score, remaining, people, agents, event type | Far cheaper if you want raw filings, and it covers forms we do not |

[sec-api.io](https://sec-api.io/) sells a keyed Form D API that returns the filing as searchable JSON, including use of proceeds. That is the raw filing, not a scored lead, and this note does not quote a price for it.

The before/after check against live EDGAR is in [`docs/quality-report.md`](docs/quality-report.md).

### 🔌 Also available as a pay-per-call API for AI agents

The same data is available over an x402 HTTP API and an MCP tool, paid per call in USDC. No account needed.

***

**Built by [falcon.sol](https://x.com/ygfalcon)**: anon dev shipping pay-per-call data tools and x402 APIs for builders and agents. [X](https://x.com/ygfalcon) · [GitHub](https://github.com/ygfalcon) · [Apify](https://apify.com/falcon-sol)

# Actor input Schema

## `mode` (type: `string`):

Form D returns one scored lead per raise. 8-K returns material deal events from public companies.

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

Backfill from this filing date. Leave empty for Form D to get the newest filings from the live EDGAR feed. 8-K defaults to yesterday, and that default widens over a weekend when the first window is empty.

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

Last filing date to include. Defaults to today.

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

Form D: filings fetched before filters are applied (you pay only for rows that match). 8-K: maximum rows returned. The 8-K search reads at least 500 filings, or 25 times this cap, because most 8-Ks are not deal items.

## `minAmount` (type: `integer`):

Form D: amount sold, or the offering size if nothing is sold yet. 8-K: deal size read from the event (consideration, purchase price, upfront payment, or facility principal). 8-K rows with no parsed amount are left out when this is set.

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

Drop hedge, PE, VC and other pooled funds to keep operating companies.

## `excludeAmendments` (type: `boolean`):

Skip amended Form D filings (D/A) and return only original filings.

## `placementAgentOnly` (type: `boolean`):

Keep only Form D raises that name a placement agent or finder.

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

Two-letter codes, e.g. NY, CA. Form D matches the issuer's state. 8-K matches the company's business state. Empty means all.

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

Case-insensitive partial match. Form D checks the industry group, the filer's own clarification, the fund type, and the SIC description. 8-K checks the SIC description. Examples: Technology, biotechnology, software.

## `minScore` (type: `integer`):

Drop Form D leads below this score. 0 to 100.

## `items8k` (type: `array`):

Item codes or plain-English types: M\&A, executive change, financing, bankruptcy. Defaults to 1.01 material agreement, 2.01 acquisition, 2.03 new debt, 3.02 unregistered equity, 5.01 change in control.

## Actor input object example

```json
{
  "mode": "formD",
  "maxFilings": 100,
  "excludeFunds": true,
  "excludeAmendments": false,
  "placementAgentOnly": false
}
```

# Actor output Schema

## `formDLeads` (type: `string`):

Scored private-placement leads (Form D mode).

## `dealEvents` (type: `string`):

Material deal events from 8-K filings (8-K mode).

## `allItems` (type: `string`):

Every dataset item with all fields.

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

// Run the Actor and wait for it to finish
const run = await client.actor("falcon-sol/deal-radar").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("falcon-sol/deal-radar").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 '{}' |
apify call falcon-sol/deal-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,falcon-sol/deal-radar"
        }
    }
}
```

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/e65WXNrqoohHKwtpc/builds/FgNjhEnSJnmcnIaJT/openapi.json
