# SEC Capital Formation & Deals (`bb-tradetec/sec-capital-formation-and-deal-aggregator`) Actor

Compose supplied SEC offering and corporate-action records into evidence-linked capital and deal lifecycles.

- **URL**: https://apify.com/bb-tradetec/sec-capital-formation-and-deal-aggregator.md
- **Developed by:** [BB](https://apify.com/bb-tradetec) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.10 / 1,000 capital lifecycles

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 Capital Formation & Deals

> Compose supplied SEC offering and corporate-action records into evidence-linked capital and deal lifecycles.

### What this Actor gives you

Reconstruct filing-backed milestones for offerings and deals while leaving unsupported dates and relationships unresolved.

Every Dataset item uses the SEC Complete Data Suite envelope and the primary
record type `secCapitalLifecycle`. Stable IDs, explicit coverage,
source/evidence references, parser versions, warnings, and structured
`SUMMARY`/`ERRORS` outputs make the result practical for both agent pipelines
and human review.

### Why an AI agent chooses this

It applies disclosed deterministic rules to compatible records and keeps every result linked to input and evidence IDs. The AI receives an inspectable synthesis instead of rebuilding join logic in a prompt.

### Good fits

- offering lifecycle reconstruction
- tender and merger timelines
- capital-formation due diligence

### Agent selection contract

- **Actor slug:** `sec-capital-formation-and-deal-aggregator`
- **Capability ID:** `sec.aggregate.capital.deal`
- **Intent:** `trace_capital_formation_or_deal`
- **Primary Dataset record:** `secCapitalLifecycle`
- **Accepted identifiers or inputs:** `cik`
- **Source authority:** `SEC`
- **Hard limits:** queries: 100, records: 5,000, sourceRequests: 8, downloadBytes: 104,857,600

Choose this Actor when the requested outcome matches the capability and record
type above. The contract is deterministic: unknown source values, incompatible
schema majors, ambiguity, truncation, and partial source failures remain
visible instead of being silently guessed away.

### Context and token efficiency

This Actor makes no LLM, embedding, or vector-search call and therefore spends
zero model tokens internally. Deterministic aggregation can replace repeated record-joining and classification instructions in downstream model context.

For Suite-level selection, an AI client can use the compact
`agent-catalog.json` instead of loading this or the other Actor READMEs. Under
that documented baseline, README-selection tokens are avoided by construction.

No fixed percentage is promised: actual downstream token savings depend on the
client model, tokenizer, source document, output mode, and requested evidence.

### Part of the SEC Complete Data Suite

The SEC Complete Data Suite separates **universal coverage**, **specialized
normalization**, and **deterministic aggregation** into focused Actors. This
Actor provides the **deterministic aggregation** role: Lifecycle aggregation layer over public offerings, exempt offerings, 8-K events, corporate actions, and linked financial facts.

It works especially well with `sec-public-offering-normalizer`, `sec-exempt-offering-normalizer`, `sec-corporate-action-normalizer`. Suite Actors exchange documented
record envelopes and exact identifiers; they do not hide sibling runs or
surprise network costs. A client or the `sec-ai-query-planner` decides which
steps to execute.

### Example input

```json
{
  "recordInput": {
    "mode": "inline",
    "records": [
      {
        "schemaVersion": "1.0",
        "recordType": "secPublicOfferingEvent",
        "recordId": "offering-1",
        "parser": {
          "name": "sec-public-offering-normalizer"
        },
        "time": {
          "filedAt": "2026-07-20"
        },
        "data": {
          "issuer": {
            "cik": "0000320193"
          },
          "offeringId": "off-1",
          "status": "filed",
          "evidence": [
            "ev-offering-1"
          ]
        }
      }
    ]
  },
  "subjectFilters": [
    "0000320193"
  ],
  "maxOutputRecords": 1,
  "maxResults": 1
}
```

The executable input schema remains the authority for modes, filters,
defaults, cursor rules, and maximum values.

### Runtime and cost controls

The hard limits above are enforceable ceilings, not usage targets. Actual
runtime and platform cost depend on selected inputs, source requests, downloaded
bytes, result volume, and the Apify run configuration. Start with the bounded
example, lower `maxResults` and byte/request limits where the schema permits,
and inspect `SUMMARY` plus `ERRORS` before expanding a run. There is no hidden
model-token charge inside this Actor.

### Not the right tool for

- name-similarity deal matching
- payment, closing, valuation, or investment claims without evidence

Additional non-goals from the capability contract include:

- call or import a sibling actor
- call SEC or a third party
- use an LLM, embeddings, vector store, or web search
- link records by name similarity
- provide trading, legal, or compliance decisions

### Trust, provenance, and limits

- It does not fetch the SEC or run another Actor; the client supplies compatible records inline or by explicit Dataset ID.
- Inputs, requests, bytes, records, retries, redirects, and cursor scope are
  bounded by the executable contract.
- Derived records retain exact input record IDs and evidence IDs where the
  capability performs normalization or aggregation.
- This independent community Actor is not affiliated with or endorsed by the
  U.S. Securities and Exchange Commission.
- The output is public-source data processing, not legal, compliance,
  accounting, voting, or investment advice.

### Reproducible support report

For a diagnosable issue, retain the Actor slug, run ID, sanitized input,
`SUMMARY`, `ERRORS`, and the first unexpected record ID. Never include an API
token, secret, private filing, or unrelated Dataset contents.

### Publication status

The Actor API and canonical Apify Store page are authoritative for current availability, active build, and pricing. This README deliberately does not duplicate mutable lifecycle or price claims.

# Actor input Schema

## `recordInput` (type: `object`):

Structured actor input field.

## `subjectFilters` (type: `array`):

Structured actor input field.

## `periodFrom` (type: `string`):

Structured actor input field.

## `periodTo` (type: `string`):

Structured actor input field.

## `maxInputRecords` (type: `integer`):

Structured actor input field.

## `maxOutputRecords` (type: `integer`):

Structured actor input field.

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

Structured actor input field.

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

Structured actor input field.

## `maxDownloadBytes` (type: `integer`):

Structured actor input field.

## `rulesetVersion` (type: `string`):

Structured actor input field.

## `outputSchemaVersion` (type: `string`):

Structured actor input field.

## `outputMode` (type: `string`):

Structured actor input field.

## `cursor` (type: `string`):

Structured actor input field.

## `queries` (type: `array`):

Structured actor input field.

## Actor input object example

```json
{
  "recordInput": {
    "mode": "inline",
    "records": [
      {
        "schemaVersion": "1.0",
        "recordType": "secPublicOfferingEvent",
        "recordId": "offering-1",
        "parser": {
          "name": "sec-public-offering-normalizer"
        },
        "time": {
          "filedAt": "2026-07-20"
        },
        "data": {
          "issuer": {
            "cik": "0000320193"
          },
          "offeringId": "off-1",
          "status": "filed",
          "evidence": [
            "ev-offering-1"
          ]
        }
      }
    ]
  },
  "subjectFilters": [
    "0000320193"
  ],
  "maxInputRecords": 10000,
  "maxOutputRecords": 1,
  "maxResults": 1,
  "maxSourceRequests": 8,
  "maxDownloadBytes": 104857600,
  "rulesetVersion": "1.0",
  "outputSchemaVersion": "1.0",
  "outputMode": "full"
}
```

# Actor output Schema

## `lifecycles` (type: `string`):

No description

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

No description

## `errors` (type: `string`):

No description

# 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 = {
    "recordInput": {
        "mode": "inline",
        "records": [
            {
                "schemaVersion": "1.0",
                "recordType": "secPublicOfferingEvent",
                "recordId": "offering-1",
                "parser": {
                    "name": "sec-public-offering-normalizer"
                },
                "time": {
                    "filedAt": "2026-07-20"
                },
                "data": {
                    "issuer": {
                        "cik": "0000320193"
                    },
                    "offeringId": "off-1",
                    "status": "filed",
                    "evidence": [
                        "ev-offering-1"
                    ]
                }
            }
        ]
    },
    "subjectFilters": [
        "0000320193"
    ],
    "maxOutputRecords": 1,
    "maxResults": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("bb-tradetec/sec-capital-formation-and-deal-aggregator").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 = {
    "recordInput": {
        "mode": "inline",
        "records": [{
                "schemaVersion": "1.0",
                "recordType": "secPublicOfferingEvent",
                "recordId": "offering-1",
                "parser": { "name": "sec-public-offering-normalizer" },
                "time": { "filedAt": "2026-07-20" },
                "data": {
                    "issuer": { "cik": "0000320193" },
                    "offeringId": "off-1",
                    "status": "filed",
                    "evidence": ["ev-offering-1"],
                },
            }],
    },
    "subjectFilters": ["0000320193"],
    "maxOutputRecords": 1,
    "maxResults": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("bb-tradetec/sec-capital-formation-and-deal-aggregator").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 '{
  "recordInput": {
    "mode": "inline",
    "records": [
      {
        "schemaVersion": "1.0",
        "recordType": "secPublicOfferingEvent",
        "recordId": "offering-1",
        "parser": {
          "name": "sec-public-offering-normalizer"
        },
        "time": {
          "filedAt": "2026-07-20"
        },
        "data": {
          "issuer": {
            "cik": "0000320193"
          },
          "offeringId": "off-1",
          "status": "filed",
          "evidence": [
            "ev-offering-1"
          ]
        }
      }
    ]
  },
  "subjectFilters": [
    "0000320193"
  ],
  "maxOutputRecords": 1,
  "maxResults": 1
}' |
apify call bb-tradetec/sec-capital-formation-and-deal-aggregator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bb-tradetec/sec-capital-formation-and-deal-aggregator"
        }
    }
}
```

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/nHcRQ2Z32rR7raxHk/builds/iZJxOeXCqgKtAIC8o/openapi.json
