# SEC Insider Scraper (`parsebird/sec-insider-scraper`) Actor

Scrape real-time SEC Form 4 insider transaction data from Dataroma. Filter by timeframe, transaction type, minimum amount, and stock symbols. Get insider buys and sells with filing dates, prices, shares, and SEC filing links.

- **URL**: https://apify.com/parsebird/sec-insider-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** AI, Agents, Other
- **Stats:** 6 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 insider transactions

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/platform/actors/running/actors-in-store#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

### Dataroma SEC Insider Scraper

Scrape real-time SEC Form 4 insider transaction data from [Dataroma](https://www.dataroma.com/m/ins/ins.php). Filter by timeframe, transaction type, minimum amount, and stock symbols. Get insider buys and sells with filing dates, prices, shares, and direct links to SEC filings.

<table><tr>
<td style="border-left:4px solid #1a73e8;padding:12px 16px;font-weight:600">Track corporate insider buying and selling in real time — extract SEC Form 4 filings with transaction details, pricing, and direct links to EDGAR filings.</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="2" style="padding:10px 14px;background:#1a73e8;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">Dataroma Scraper Suite</span>
<span style="color:#B3D4FC;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Superinvestor and insider trading data</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:50%">
&nbsp;<a href="https://apify.com/parsebird/dataroma-superinvestor-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Superinvestor Portfolios</a><br>
<span style="color:#78716C;font-size:11px">Holdings, allocations, buy/sell activity</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:50%;background:#DBEAFE">
&nbsp;<a href="https://apify.com/parsebird/dataroma-sec-insider-scraper" style="color:#1a73e8;text-decoration:none;font-weight:700;font-size:13px">SEC Insider Transactions</a><br>
<span style="color:#1a73e8;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
parsebird/dataroma-sec-insider-scraper on Apify. Call: ApifyClient("TOKEN").actor("parsebird/dataroma-sec-insider-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: timeframe (string, "day"/"week"/"month"/"3months"/"6months"/"1year"/"2years", default "week"), transactionType (string, "all"/"purchases"/"sales", default "all"), ownershipFilter (boolean, default false), minAmount (integer, default 0), symbols (array of strings, max 15, default []), sortBy (string, "filingDate"/"symbol"/"transactionDate"/"amount", default "filingDate"), sortOrder (string, "ascending"/"descending", default "descending"), maxResults (integer, 1-50000, default 1000). Full actor spec: fetch build via GET https://api.apify.com/v2/acts/parsebird~dataroma-sec-insider-scraper (Bearer TOKEN). Get token: https://console.apify.com/account/integrations
```

### What does Dataroma SEC Insider Scraper do?

This Actor scrapes real-time insider transaction data from Dataroma, which aggregates SEC Form 4 filings. These filings are legally required whenever corporate insiders (officers, directors, and 10%+ shareholders) buy or sell shares in their own companies.

For each transaction, the scraper collects:

- **Filing details** — SEC filing date and time, direct link to EDGAR filing
- **Stock info** — ticker symbol, company name
- **Insider info** — reporting person name, relationship (CEO, Director, etc.), person ID
- **Transaction data** — date, type (purchase/sale), number of shares, price per share, total dollar amount
- **Ownership type** — direct (D) or indirect (I) holdings
- **Amendment flag** — whether the filing is an amendment (SEC Form 4/A)

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `timeframe` | String | `week` | How far back to look: `day`, `week`, `month`, `3months`, `6months`, `1year`, `2years` |
| `transactionType` | String | `all` | Filter: `all`, `purchases`, `sales` |
| `ownershipFilter` | Boolean | `false` | Only show transactions from 10%+ ownership insiders |
| `minAmount` | Integer | `0` | Minimum transaction dollar value (e.g. `50000` for significant trades only) |
| `symbols` | Array | `[]` | Filter by stock symbols (max 15). Leave empty for all |
| `sortBy` | String | `filingDate` | Sort field: `filingDate`, `symbol`, `transactionDate`, `amount` |
| `sortOrder` | String | `descending` | Sort direction: `ascending`, `descending` |
| `maxResults` | Integer | `1000` | Maximum transactions to return |

### Output example

```json
{
    "filingDate": "15 Apr 2026 17:28",
    "filingUrl": "https://www.sec.gov/Archives/edgar/data/1545819/000154581926000009/xslF345X03/form4-04152026_090422.xml",
    "symbol": "CAG",
    "securityName": "CONAGRA BRANDS Inc",
    "reportingName": "MULLIGAN JOHN J",
    "reportingPersonId": "1545819",
    "relationship": "Director",
    "transactionDate": "14 Apr 2026",
    "transactionType": "Purchase",
    "isAmendment": false,
    "shares": 17500,
    "price": 14.3087,
    "amount": 250402,
    "directIndirect": "D",
    "insiderUrl": "https://www.dataroma.com/m/ins/ins.php?t=y2&rid=1545819",
    "scrapedAt": "2026-03-28T12:00:00.000Z"
}
```

### Use cases

- **Insider buying signals** — Large insider purchases often signal undervaluation; filter for purchases with `minAmount` above $100k
- **Executive exit tracking** — Monitor when C-suite executives are selling large positions
- **Stock-specific monitoring** — Track all insider activity for specific tickers in your portfolio
- **Cluster buy detection** — Identify when multiple insiders at the same company are buying simultaneously
- **Data pipeline** — Feed into trading alerts, financial models, or investment newsletters
- **Due diligence** — Check insider transaction history before making investment decisions

### How it works

1. Builds the Dataroma insider page URL with your filter parameters
2. Fetches the HTML page with server-side filtering (timeframe, type, amount, symbols)
3. Parses the transaction table extracting all fields per row
4. Handles pagination automatically — follows "Next" links until all data is collected or `maxResults` is reached
5. Returns one record per insider transaction

### Pricing

This actor uses a pay-per-event model. Each insider transaction row extracted counts as one event.

| Event | Price per 1000 |
|-------|---------------|
| `dr-insider-transaction` | $1.80 |

### Legal and compliance

This actor scrapes publicly available SEC Form 4 filing data from Dataroma. SEC filings are public records. The data is freely accessible on the web. Always review and comply with the website's Terms of Service before use.

# Actor input Schema

## `timeframe` (type: `string`):

How far back to look for insider transactions.

## `transactionType` (type: `string`):

Filter by purchase or sale transactions.

## `ownershipFilter` (type: `boolean`):

Only show transactions from insiders with 10% or greater ownership stake.

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

Minimum dollar value of the transaction. Set to 0 for no minimum.

## `symbols` (type: `array`):

Filter by specific stock ticker symbols (e.g. MSFT, AAPL). Leave empty for all stocks. Maximum 15 symbols.

## `sortBy` (type: `string`):

How to sort the results.

## `sortOrder` (type: `string`):

Sort direction.

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

Maximum number of transactions to return.

## Actor input object example

```json
{
  "timeframe": "week",
  "transactionType": "all",
  "ownershipFilter": false,
  "minAmount": 0,
  "symbols": [],
  "sortBy": "filingDate",
  "sortOrder": "descending",
  "maxResults": 1000
}
```

# Actor output Schema

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

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/sec-insider-scraper").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("parsebird/sec-insider-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 parsebird/sec-insider-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parsebird/sec-insider-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ea1UG8MwkZmn0cdRB/builds/Qgr823CtP7agh4RST/openapi.json
