# SEC Form D Change Watch (`jre-data-tools/sec-form-d-change-watch`) Actor

Find new private-offering filings and exact amendment field changes from official SEC XML, with linked source evidence and review flags.

- **URL**: https://apify.com/jre-data-tools/sec-form-d-change-watch.md
- **Developed by:** [Jack](https://apify.com/jre-data-tools) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$100.00 / 1,000 validated filing 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SEC Form D Change Watch

Turn public U.S. private-offering filings into structured records you can check against the source. Retrieve issuer names, offering amounts, investor counts, and exact field differences between an amendment and its named SEC comparator.

Use it for a research spreadsheet, a filing-review queue, or a recurring data pipeline. Every record includes the original SEC XML link and an explicit review flag.

### Run a search

Choose a date window of up to seven calendar days and a maximum of 1-100 filings:

```json
{"dateFrom":"2026-09-04","dateTo":"2026-09-04","maxResults":10}
```

Export the resulting Dataset as JSON or CSV, or call the Actor through Apify's API. No SEC credentials or enrichment subscription is needed.

**Coverage limit:** this first release retrieves at most the selected number of source filings. It does not paginate an entire busy date window. Check `secSearchTotal` and `secSearchTruncated` in the run's `OUTPUT` record before interpreting the results as complete. A short returned page or a lower-bound search total is flagged as incomplete, even when the requested cap is higher.

### What each record contains

- Public primary issuer name and CIK, checked against the filing reference.
- Filing date, accession number, SEC file number, XML URL, and content hash.
- Reported offering amount, amount sold, remaining amount, investor count, industry group, and first-sale date.
- Literal amounts such as `Indefinite` alongside numeric values where available.
- Exact comparator accession, changed field names, numeric differences, and review flags.

One source-verified example from September 4, 2026 is [Broken Bow Capital Fund LLC-Series 1](https://www.sec.gov/Archives/edgar/data/2153883/000215388326000001/primary_doc.xml?output=xml), accession `0002153883-26-000001`, reporting $3,600,000 sold and an indefinite offering amount. This is an example of reported source data, not an investment recommendation.

### Understand amendment comparisons

An amendment is compared only with the exact `previousAccessionNumber` named in its XML. That may be the original filing rather than the immediately preceding amendment. An amount difference therefore does **not** establish how much was raised between consecutive filings.

`AMENDMENT_CHANGED` means one of the captured fields differs. An unchanged comparison returns `VALIDATED_AMENDMENT_NO_FIELD_CHANGE`. Missing or incompatible references return `AMENDMENT_UNRESOLVED`. Additional references in clarification text set `reviewRequired` without declaring a conflict. Issuer names alone are never used to join offerings.

### Inspect a real Form D/A review example

For a filing-review queue, check the exact XML comparison before interpreting an amendment as a new funding event. These two September 4, 2026 filings were replayed through the current comparison code against live SEC XML:

| Filed issuer | Compared source | Observed result | Charge eligible |
| --- | --- | --- | --- |
| Glade Brook Private Investors XXVII LP | [Amendment](https://www.sec.gov/Archives/edgar/data/1843337/000092963826003457/primary_doc.xml?output=xml) and its [named 2021 comparator](https://www.sec.gov/Archives/edgar/data/1843337/000156761921009685/primary_doc.xml?output=xml) | Both report $2,200,000 sold and 8 investors. Captured fields are unchanged, but the clarification includes another accession: `reviewRequired: true`. | No |
| MY Japan Focused Fund Ltd | [Amendment](https://www.sec.gov/Archives/edgar/data/1848548/000184854826000005/primary_doc.xml?output=xml) and its [named 2021 comparator](https://www.sec.gov/Archives/edgar/data/1848548/000184854821000001/primary_doc.xml?output=xml) | First-sale date, amount sold, and investor count differ; `AMENDMENT_CHANGED`, `reviewRequired: false`. The amount comparison is against the named 2021 record. | Yes |

Open both official links, compare the recorded values, then inspect `changedFields`, `numericDeltas`, and `additionalAccessionReferences` in your output. Source hashes let you identify the exact XML bytes used. A review flag calls attention to the evidence; the tool does not decide whether a filing is legally sufficient or whether another amendment is required.

These are source examples, not a guarantee that a capped date search will include these particular records. The current public input accepts a date window and result cap; it does not yet support targeting an accession or issuer. Set a run charge limit before expanding the cap.

### Billing and failures

The price is **$0.10 per validated original filing or unambiguous amendment change**, with platform usage included. There is no startup charge. Set a maximum charge for each run in Apify; the Actor stops publishing when that limit is reached.

No-change, unresolved, review-required, duplicate, or failed records do not trigger the custom charge. The bounded source set is validated before output begins. Source failures stop the run. Only a valid search response explicitly confirming zero matches reports `NO_MATCHES`, with zero output and charges. Malformed results, timed-out searches and failed search shards report `SOURCE_FAILURE`; they are never treated as evidence that no filings exist.

### Reliability and support

This release completed a real Apify cloud run with ten source-validated original filings. Separate local checks exercised two real amendments; automated tests cover historical comparator lookup, invalid XML, issuer mismatches, caps, and billing eligibility. Source requests are paced at no more than one per second per run and include a descriptive contact User-Agent.

Use the Actor's Issues tab for support. Include the run ID and expected result. Do not include credentials or private documents. This tool provides public filing data; it does not evaluate investments or collect individual contact details.

# Actor input Schema

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

First SEC filing date to examine, in YYYY-MM-DD format.

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

Last SEC filing date to examine, in YYYY-MM-DD format. The inclusive range may not exceed seven calendar days.

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

Maximum official SEC Form D or D/A source filings to validate. Hard capped at 100.

## Actor input object example

```json
{
  "dateFrom": "2026-09-04",
  "dateTo": "2026-09-04",
  "maxResults": 3
}
```

# Actor output Schema

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

Source-linked original and amendment events with issuer identity and review flags.

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

Source total, truncation, validation counts, and actual charged event count.

# 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 = {
    "dateFrom": "2026-09-04",
    "dateTo": "2026-09-04",
    "maxResults": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("jre-data-tools/sec-form-d-change-watch").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 = {
    "dateFrom": "2026-09-04",
    "dateTo": "2026-09-04",
    "maxResults": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("jre-data-tools/sec-form-d-change-watch").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 '{
  "dateFrom": "2026-09-04",
  "dateTo": "2026-09-04",
  "maxResults": 3
}' |
apify call jre-data-tools/sec-form-d-change-watch --silent --output-dataset

```

## MCP server setup

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

```

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/t6lGNEYNzRFWPSJHs/builds/u1vyAKiLpvDPVWyQx/openapi.json
