# SEC EDGAR Scraper - Filings, Form 4 Insider Trades $0.50/1K (`plotpointtech/sec-edgar-filings-insider-trades`) Actor

SEC EDGAR data from the official SEC APIs: company filings (10-K, 10-Q, 8-K) with document links, full-text search, Form 4 insider trades with shares, price and holdings, and XBRL financials. $0.50 per 1,000 results.

- **URL**: https://apify.com/plotpointtech/sec-edgar-filings-insider-trades.md
- **Developed by:** [Plot Point Technologies](https://apify.com/plotpointtech) (community)
- **Categories:** Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.31 / 1,000 result rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 EDGAR Scraper: Filings, Form 4 Insider Trades and XBRL Financials

**Get SEC EDGAR data as clean rows from SEC's own free APIs.** Enter a ticker or CIK and get the company's filings (10-K, 10-Q, 8-K, proxy statements, S-1s and every other form) with direct document links, every insider transaction parsed from Form 4, or reported financial figures (revenue, net income, assets, EPS) by period. You can also run EDGAR full-text search across all filings since 2001. **$0.50 per 1,000 results**, no API key or SEC account needed.

### What can this SEC EDGAR scraper do?

- **Filings by company:** any number of tickers or CIK numbers, filtered by form type and date range, newest first, with links to the main document, the filing index and the full submission text. 8-K item numbers come with their names (for example 2.02 Results of Operations).
- **Insider trades (Form 4):** one row per transaction with the insider's name, role (director, officer title, 10% owner), transaction code and its meaning, shares, price, value, shares owned after the trade, direct or indirect ownership, 10b5-1 plan flag and the footnotes that explain the trade. Works for a company (all its insiders) or for an insider's own CIK (all their trades across companies).
- **Full-text search:** words or exact phrases such as `"going concern"` or `"material weakness"`, optionally limited to form types, companies and dates. Returns the matching document, company, form, filing date and links.
- **Company facts (XBRL):** chosen us-gaap, ifrs-full or dei concepts, or every concept a company reports, one row per period and value, with the filing it came from.

### What data do you get?

| Mode | Key fields |
|---|---|
| Filings | `companyName`, `ticker`, `cik`, `formType`, `filingDate`, `reportDate`, `acceptanceDateTime`, `accessionNumber`, `items`, `itemDescriptions`, `documentUrl`, `filingIndexUrl`, `fullSubmissionUrl` |
| Insider trades | `issuerTicker`, `insiderName`, `insiderCik`, `insiderRole`, `transactionDate`, `transactionCode`, `transactionCodeDescription`, `acquiredDisposed`, `shares`, `pricePerShare`, `transactionValue`, `sharesOwnedAfter`, `directOrIndirect`, `isDerivative`, `rule10b5_1Plan`, `footnotes`, `documentUrl`, `xmlUrl` |
| Full-text search | `companyName`, `tickers`, `ciks`, `formType`, `filingDate`, `periodEnding`, `documentType`, `documentDescription`, `documentUrl`, `filingIndexUrl` |
| Company facts | `concept`, `label`, `unit`, `value`, `periodStart`, `periodEnd`, `frame`, `fiscalYear`, `fiscalPeriod`, `formType`, `filedDate`, `accessionNumber` |

### Who uses it?

- **Investors and analysts** tracking insider buying and selling, new 8-Ks and annual reports for a watchlist.
- **Quant and data teams** pulling standardized financial figures across many companies without parsing HTML.
- **Compliance, KYB and due diligence teams** checking a company's filing history and searching for risk language.
- **Journalists and researchers** finding every filing that mentions a phrase, product or person.
- **Developers and AI agents** that need SEC data in JSON without writing their own EDGAR client.

### How to use it

1. Click **Try for free** (or **Start**).
2. Choose **What to get**: filings, insider trades, full-text search or company facts.
3. Enter **Companies** as tickers (AAPL, BRK.B) or CIK numbers. For full-text search, enter a **search query** and leave companies empty to search all filers.
4. Optionally set **form types**, a **date range** and **maximum results per company**.
5. Run it and export to Excel, CSV or JSON, or schedule it daily to catch new filings and insider trades.

### Input example

```json
{
  "mode": "filings",
  "companies": [
    "AAPL"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "maxResults": 50
}
```

More examples:

```json
{"mode": "insiderTrades", "companies": ["NVDA", "TSLA"], "transactionCodes": ["P", "S"], "daysBack": 90, "maxResults": 200}
{"mode": "fullTextSearch", "searchQuery": "\"going concern\"", "formTypes": ["10-K"], "startDate": "2026-09-01", "onePerFiling": true, "maxResults": 250}
{"mode": "companyFacts", "companies": ["MSFT", "AAPL"], "concepts": ["Revenues", "NetIncomeLoss", "EarningsPerShareDiluted"], "periodType": "annual"}
```

### Output example

A filing (from the default run):

```json
{
  "type": "filing",
  "cik": 320193,
  "companyName": "Apple Inc.",
  "ticker": "AAPL",
  "formType": "8-K",
  "filingDate": "2026-11-02",
  "reportDate": "2026-11-02",
  "acceptanceDateTime": "2026-11-02T21:30:23.000Z",
  "accessionNumber": "0000320193-26-000024",
  "description": "8-K",
  "items": [
    "2.02",
    "9.01"
  ],
  "itemDescriptions": [
    "Results of Operations and Financial Condition",
    "Financial Statements and Exhibits"
  ],
  "fileNumber": "001-36743",
  "filmNumber": "261512821",
  "act": "34",
  "sizeBytes": 420455,
  "isXBRL": true,
  "isInlineXBRL": true,
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000024/aapl-20261102.htm",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000024/0000320193-26-000024-index.htm",
  "fullSubmissionUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000024/0000320193-26-000024.txt"
}
```

An insider transaction (from a real run, Apple Form 4):

```json
{
  "type": "insiderTransaction",
  "issuerName": "Apple Inc.",
  "issuerTicker": "AAPL",
  "insiderName": "Newstead Jennifer",
  "insiderCik": "0001780525",
  "insiderRole": "SVP, GC and Government Affairs",
  "isDerivative": false,
  "securityTitle": "Common Stock",
  "transactionDate": "2026-10-27",
  "transactionCode": "S",
  "transactionCodeDescription": "Open market or private sale",
  "acquiredDisposed": "D",
  "shares": 2399,
  "pricePerShare": 343.36,
  "transactionValue": 823720.64,
  "sharesOwnedAfter": 32396,
  "directOrIndirect": "D",
  "footnotes": ["This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026."],
  "rule10b5_1Plan": true,
  "formType": "4",
  "filingDate": "2026-10-29",
  "accessionNumber": "0001140361-26-041201",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/xslF345X06/form4.xml",
  "xmlUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/form4.xml"
}
```

### How much does it cost?

| Event | Price | Per 1,000 |
|---|---|---|
| Result row (filing, insider transaction, search hit or financial fact) | $0.0005 | **$0.50** |

Plus a $0.00005 start fee per run. Examples: the latest 50 filings for one company cost about $0.03; a year of Form 4 transactions for 20 large companies (about 5,000 rows) costs $2.50; 10 years of 9 headline figures for 100 companies costs well under $1 with one value per period.

**Volume discounts on higher Apify plans.** The prices above are for the Apify Free plan. On paid plans the per-result price drops automatically: about 15% lower on Bronze, 25% lower on Silver and 38% lower on Gold and above.

### Use it via API, Make, Zapier, n8n or an AI agent

**Apify API.** Start a run and get the results back in one HTTP request (replace `YOUR_API_TOKEN` with the token from Apify Console > Settings > Integrations):

```bash
curl -X POST "https://api.apify.com/v2/acts/plotpointtech~sec-edgar-filings-insider-trades/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "filings", "companies": ["AAPL"], "formTypes": ["10-K", "10-Q", "8-K"], "maxResults": 50}'
```

For longer jobs, start the run asynchronously and read the dataset when it finishes. Official `apify-client` libraries exist for Python and JavaScript; the **API** tab on this page has ready-made code.

**No-code automation.** Connect the tool to **Make, Zapier, n8n, Google Sheets, Slack, Airtable** or any webhook with Apify integrations, and use **Schedules** in Apify Console to run it hourly, daily or weekly.

**AI agents (MCP).** Give Claude, ChatGPT, Cursor, VS Code or any MCP-compatible agent direct access to this tool through the hosted Apify MCP server. Add this server URL to your client:

```
https://mcp.apify.com?tools=plotpointtech/sec-edgar-filings-insider-trades
```

The agent can then call the tool with the same input fields shown above and read the results.

### FAQ

**Is this legal and allowed by the SEC?**
Yes. EDGAR data is public US government information, and the tool uses SEC's official endpoints (data.sec.gov, EDGAR full-text search and the EDGAR archives). It follows SEC's fair-access policy: it identifies itself with a company name and contact email and stays under 10 requests per second. Respect the same policy if you use the links it returns at scale.

**Which forms are covered?**
All of them in filings and full-text search modes. Insider trades mode reads Form 4 (and 4/A if amendments are on). Older Form 4 filings submitted on paper before 2003 have no XML and are skipped.

**Why is the price empty for some insider transactions?**
Grants, RSU vesting and option exercises often have no price; the reason is usually in `footnotes`. When a sale was executed in several trades, Form 4 reports the weighted average price, and the footnote gives the range.

**What does "one value per period" do in company facts mode?**
Companies repeat prior-year figures in later filings. With this on, you get SEC's de-duplicated value for each calendar period (`frame`). Note that `fiscalYear` and `fiscalPeriod` describe the filing that reported the value, not the period itself; use `periodStart` and `periodEnd`.

**How many full-text search results can I get?**
EDGAR full-text search returns up to 10,000 hits per query and covers filings since 2001. Narrow very broad searches by form type or date.

**Can I monitor new filings?**
Yes. Schedule the tool daily with `daysBack: 1` and connect it to Slack, email or a spreadsheet.

### Related tools from Plot Point Technologies

- [SEC Form D Scraper - New Startup Funding Leads Daily](https://apify.com/plotpointtech/sec-form-d-fundraise-feed): companies that just raised money, from SEC Form D filings.
- [News Scraper - Worldwide News Search by Keyword, 65+ Languages](https://apify.com/plotpointtech/worldwide-news-search): news articles worldwide by keyword, country and language.
- [Wikipedia Scraper - Wikidata Facts, Summaries & Images](https://apify.com/plotpointtech/wikipedia-wikidata-entity-extractor): Wikipedia summaries and Wikidata facts for any entity list.
- [Google News Scraper - Articles with Real Publisher URLs](https://apify.com/plotpointtech/google-news-scraper): Google News articles with decoded publisher URLs.

Plot Point Technologies is not affiliated with the U.S. Securities and Exchange Commission. Data is provided as filed; check the linked filing before making investment decisions.

***

If this tool saved you time, we would be grateful for a short review on this page; it helps other people find it. If something did not work as expected, please open an issue on the **Issues** tab and we will look into it quickly.

# Actor input Schema

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

Filings: a company's filing list with document links. Insider trades: every transaction parsed from Form 4 filings. Full-text search: documents containing your words or phrase. Company facts: XBRL financial values (revenue, net income, assets...) by period.

## `companies` (type: `array`):

Stock tickers (AAPL, BRK.B) or SEC CIK numbers (320193). For insider trades you can also enter an insider's own CIK to get their trades across companies. For full-text search this is optional: leave empty to search all filers.

## `formTypes` (type: `array`):

Only these forms, e.g. 10-K, 10-Q, 8-K, DEF 14A, S-1, 13F-HR, SC 13D. Leave empty for all. In company facts mode this filters by the form that reported the value (e.g. 10-K for annual figures). Ignored in insider trades mode (always Form 4).

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

Earliest filing date (YYYY-MM-DD). In company facts mode this applies to the period end date.

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

Latest filing date (YYYY-MM-DD). Defaults to today.

## `daysBack` (type: `integer`):

Shortcut for the from date: only the last N days. Ignored when a from date is set.

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

Stop after this many rows per company (filings or insider transactions), per company and concept (company facts), or per search (full-text search). Newest first.

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

When filtering by form type, also include amended versions (10-K/A for 10-K, 4/A for Form 4).

## `searchQuery` (type: `string`):

Full-text search mode. Words or an exact phrase in quotes, e.g. "going concern" or tariffs. Searches the text of filings and exhibits since 2001 (EDGAR full-text search). Up to 10,000 hits per search.

## `onePerFiling` (type: `boolean`):

EDGAR returns one hit per matching document (main document and each exhibit). Turn on to keep only the best-matching document of each filing.

## `transactionCodes` (type: `array`):

Only these Form 4 codes, e.g. P (open-market purchase), S (sale), A (award), M (option exercise), F (tax withholding), G (gift). Leave empty for all.

## `includeDerivativeTransactions` (type: `boolean`):

Also return options, RSUs and other derivative rows (Table II of Form 4), not just shares.

## `concepts` (type: `array`):

us-gaap concept names such as Revenues, NetIncomeLoss, Assets, EarningsPerShareDiluted, or with a taxonomy prefix such as dei:EntityCommonStockSharesOutstanding or ifrs-full:Revenue. Enter \* for every concept the company reports. Leave empty for a standard set of 9 headline figures.

## `periodType` (type: `string`):

Annual (about 12 months), quarterly (about 3 months) or all. Point-in-time values such as assets are always kept.

## `onePerPeriod` (type: `boolean`):

Keep one value per calendar period (SEC's de-duplicated 'frame', usually the latest filed figure). Turn off to get every value as reported in every filing, including restated prior-year comparatives.

## Actor input object example

```json
{
  "mode": "filings",
  "companies": [
    "AAPL"
  ],
  "formTypes": [],
  "maxResults": 50,
  "includeAmendments": true,
  "onePerFiling": false,
  "transactionCodes": [],
  "includeDerivativeTransactions": true,
  "concepts": [],
  "periodType": "all",
  "onePerPeriod": true
}
```

# Actor output Schema

## `results` (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 = {
    "companies": [
        "AAPL"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("plotpointtech/sec-edgar-filings-insider-trades").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 = { "companies": ["AAPL"] }

# Run the Actor and wait for it to finish
run = client.actor("plotpointtech/sec-edgar-filings-insider-trades").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 '{
  "companies": [
    "AAPL"
  ]
}' |
apify call plotpointtech/sec-edgar-filings-insider-trades --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plotpointtech/sec-edgar-filings-insider-trades"
        }
    }
}
```

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/OSRtZaDgyxb4ixWzS/builds/LtgKdgP0ZZP8J8X4t/openapi.json
