# SEC Form D Startup & Hardware-Adjacent Funding Leads (`afkdigital/newapi08-sec-form-d-startup-leads`) Actor

Find new SEC Form D and D/A filings with reported offering amounts, SEC industry group, public business contact info, and original EDGAR XML sources.

- **URL**: https://apify.com/afkdigital/newapi08-sec-form-d-startup-leads.md
- **Developed by:** [AFK Digital](https://apify.com/afkdigital) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$7.00 / 1,000 unique sec 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 Newly Funded Startup & Hardware-Adjacent Lead Finder — NEWAPI08

Discover recent official SEC Form D (new) and D/A (amendment) notices, with reported offering amounts, SEC industry group, and public issuer business details. Results are downloadable in JSON and CSV from the Apify Dataset.

### Data limitations (important)

**A Form D filing is a notice of an exempt securities offering.** It is **not** proof that a financing round closed or new money entered the company. Reported totalAmountSold may be cumulative, especially in amendments. It is not a company valuation, verified fresh capital, or confirmed investment round. Total offering may be Indefinite or missing; non-numeric data stay null, with the original raw field and a status flag. SEC Form D industry groups are broad self-reported categories, not proof of hardware manufacturing, company stage, or investment type. Use these findings for lead research and verify before contacting or making business decisions.

This Actor is independent of and not endorsed by the U.S. Securities and Exchange Commission.

### Official data source

The discovery source is **SEC EDGAR daily master indexes**, not individual-company submissions endpoints:

- Daily index template: https://www.sec.gov/Archives/edgar/daily-index/YYYY/QTRq/master.YYYYMMDD.idx
- Structured Form D XML template: https://www.sec.gov/Archives/edgar/data/{CIK}/{ACCESSION_NO_DASHES}/primary_doc.xml
- If a primary XML filename differs, the official accession directory's index.json enumerates valid XML documents.
- Relevant SEC XML fields: edgarSubmission, primaryIssuer, offeringData/industryGroup/industryGroupType, offeringData/offeringSalesAmounts, offeringData/typeOfFiling.
- Reference: https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data
- Reference: https://www.sec.gov/about/developer-resources

Daily indexes are normally published after nightly EDGAR processing, and may not yet contain same-day filings. Weekends and holidays typically do not have indexes. Last 7 calendar days is the default lookback.

### Input

| Field | Default | Meaning |
| --- | --- | --- |
| lastNDays | 7 | Inclusive calendar lookback when no start date is provided |
| filingDateFrom / filingDateTo | auto | YYYY-MM-DD filing date range, up to 90 days |
| minAmountSold | 0 | Numeric reported amount sold in USD; missing/nonnumeric excluded |
| industryGroups | \[] | Exact case-insensitive industryGroupType values; empty = all |
| includeAmendments | true | Include separate D/A amendment records |
| maxResults | 15 | Maximum unique accession records (up to 500) |
| maxCostUsd | 0.11 | Maximum local output-event subtotal in USD |
| maxSourceRequests | 250 | Upper bound on SEC HTTP requests including retries |
| maxExecutionSeconds | 240 | Soft run deadline, aiming for under five minutes |

Sample input:

```json
{
  "lastNDays": 7,
  "minAmountSold": 50000,
  "industryGroups": ["Manufacturing", "Other Technology"],
  "includeAmendments": false,
  "maxResults": 25,
  "maxCostUsd": 0.175
}
```

For industry filtering, first inspect actual reported Form D industry group strings; these are not a proprietary startup or hardware classification. A high minAmountSold can greatly reduce results and increase source requests.

### Dataset output and CSV / JSON export

Primary output keys: company_name, cik_number, accession_number, filing_date, industry_group_raw, total_offering_amount, amount_sold, offering_amount_status, business_phone, business_address, sec_url, observed_at.

Additional audit keys: filing_type (D or D/A), is_amendment, previous_accession_number, total_offering_amount_raw, amount_sold_raw, amount_sold_status.

Numeric amounts are finite USD numbers or null when unavailable. Possible status labels: numeric, indefinite, missing, not_disclosed, unparseable. The two monetary statuses are independent. The source link points at official SEC XML. This version does not include executive/related-person names.

Synthetic example only, **not an actual company record**:

```json
{
  "company_name": "EXAMPLE INC",
  "cik_number": "0000000001",
  "accession_number": "0000000001-26-000001",
  "filing_date": "2026-10-16",
  "filing_type": "D",
  "is_amendment": false,
  "previous_accession_number": null,
  "industry_group_raw": "Manufacturing",
  "total_offering_amount": null,
  "total_offering_amount_raw": "Indefinite",
  "amount_sold": 50000,
  "amount_sold_raw": "50000",
  "amount_sold_status": "numeric",
  "offering_amount_status": "indefinite",
  "business_phone": null,
  "business_address": null,
  "sec_url": "https://www.sec.gov/Archives/edgar/data/1/000000000126000001/primary_doc.xml",
  "observed_at": "2026-10-16T12:00:00.000Z"
}
```

The Apify Dataset permits both JSON and CSV download/export. No separate CSV file needs to be generated by the Actor.

### Pricing and cost controls

**Apify Pay Per Event target: $0.007 per unique emitted filing** (event name sec-form-d-filing). Therefore 1,000 filing records cost $7 in output events. The Actor respects user maxCostUsd and maxResults, plus Apify's maximum total charge for the run. Synthetic Actor-start charges, if the platform enables them, may add a small separate amount; **do not enable synthetic default-dataset-item charging alongside the custom event**, to avoid double billing.

Under Apify's current model, the seller keeps 80% of event revenue **before** platform costs. Thus a theoretical 1,000 results yield $5.60 in payout before compute, storage, bandwidth and other platform costs. Actual profitability must be tested on an Apify cloud run.

### SEC fair-access, resiliency and security

The organization operating this Actor must configure a genuine, identifying SEC_USER_AGENT environment variable in the Actor version, containing the organization's identity and a valid reply-to email. Do not put tokens, emails, or login details into source-code constants or public run logs; configure privately through Apify's environment variable management.

The Actor limits itself to **2 SEC HTTP requests per second**, versus the SEC's currently stated maximum **10 req/sec per user across all machines**. It does not bypass blocklists or robots controls. It uses timeouts, limited retries, exponential 429/5xx backoff honoring Retry-After, day-level pagination, accession de-duplication, persisted checkpoints and pre-existing Dataset checks when resuming. It has source requests, time, result and output-event cost guards.

The first use of the latest daily index may need a re-run after nightly SEC index publication. Deleted/changed filings may differ from historical indexes. Verify data at source.

### Developer checks

Install Node.js 22 or newer, then run:

```sh
npm ci
npm test
SEC_USER_AGENT="Your Actual Company your-real-email@example.org" npm run qa:live
```

Then validate Apify input/dataset schemas, perform cloud build, run real data tests and verify actual charges and platform usage before paid publication.

### Contact and lawful downstream use

The records originate from publicly accessible SEC submissions. Business-phone/address availability is inconsistent. Contacting any business or individual may be subject to applicable marketing, privacy, anti-spam and professional rules. Treat raw filings as unverified statements, not SEC-validated investment outcomes.

# Actor input Schema

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

Used if filingDateFrom is omitted.

## `filingDateFrom` (type: `string`):

Optional override for lookback start.

## `filingDateTo` (type: `string`):

Optional inclusive upper bound; defaults to today (US Eastern).

## `minAmountSold` (type: `number`):

Compares the reported XML totalAmountSold value only. This is not company valuation or confirmed cash raised.

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

Exact (case-insensitive) Form D industryGroupType values, e.g. Manufacturing, Other Technology, Other Health Care. Empty = all.

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

Amendments report revised and potentially cumulative figures, not newly raised funds.

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

Maximum number of unique SEC filing accession records.

## `maxCostUsd` (type: `number`):

Output-event subtotal cap at $0.007 per unique filing. Apify may additionally apply a small Actor-start event charge if enabled.

## `maxSourceRequests` (type: `integer`):

Includes retries; bounds external requests and runtime.

## `maxExecutionSeconds` (type: `integer`):

Soft time limit to bound SEC retrieval; successful partial datasets are retained.

## Actor input object example

```json
{
  "lastNDays": 7,
  "minAmountSold": 0,
  "industryGroups": [],
  "includeAmendments": true,
  "maxResults": 15,
  "maxCostUsd": 0.11,
  "maxSourceRequests": 250,
  "maxExecutionSeconds": 240
}
```

# Actor output Schema

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

Official EDGAR structured Form D and D/A notices with filing details and reported offering figures.

## `runSummary` (type: `string`):

Result count, SEC request count, run-stop reason, and charge summary.

# 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("afkdigital/newapi08-sec-form-d-startup-leads").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("afkdigital/newapi08-sec-form-d-startup-leads").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 afkdigital/newapi08-sec-form-d-startup-leads --silent --output-dataset

```

## MCP server setup

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

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/6BQ50XA1ZFZt1TZ5l/builds/6eK7ha2mcD3cqXdYp/openapi.json
