# SEC EDGAR Full-Text Filing Search (`scrupulous_waterbird_m4w/sec-edgar-full-text-search`) Actor

Search SEC EDGAR full-text filing index by free-text query and/or CIK. Returns structured filing records (form type, file date, accession number, CIK, ticker, SIC) without API keys or captchas.

- **URL**: https://apify.com/scrupulous\_waterbird\_m4w/sec-edgar-full-text-search.md
- **Developed by:** [Mori](https://apify.com/scrupulous_waterbird_m4w) (community)
- **Categories:** Business, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 EDGAR Full-Text Search

Search the SEC EDGAR full-text filing index by free-text query and/or CIK. Returns structured filing records — form type, file date, accession number, CIK, tickers, SIC, headquarter location — **without API keys, OAuth, or captchas**.

Built for the workflows where you need to answer questions like:
- "Show me all 10-K filings mentioning *insider trading policy* filed in Q1 2024."
- "Pull every Form 4 insider-trading report from Apple (CIK 320193) in 2025."
- "Find recent 8-K disclosures for any issuer in SIC code 737 (software / data processing)."
- "Get every recent exhibit from any issuer that includes the words *going concern* in the body."

Backed by SEC's public `efts.search` index — no proxy rotation, no scheduler, no quota to burn. Polite-pool only: a descriptive User-Agent and a soft 120ms inter-request sleep are baked in.

### Input

| Field | Required | Description |
|---|---|---|
| `query` | conditional | Free-text search. Supports phrase queries (`"insider trading"`) and AND/OR operators. Must be supplied if `ciks` is empty. |
| `ciks` | conditional | Comma-separated CIK numbers (10-digit zero-padded or trimmed, e.g. `0000320193` or `320193`). Must be supplied if `query` is empty. |
| `forms` | no | Comma-separated form-type filter (e.g. `10-K,10-Q,8-K,4`). Leave empty for all forms. |
| `dateRange` | no | EDGAR built-in date range (`custom`, `today`, `last-week`, `last-month`, `last-quarter`, `last-year`, `1d`, `5d`, `30d`, `90d`, `1y`). Use `custom` with `startdt`/`enddt`. |
| `startdt` | conditional | YYYY-MM-DD lower bound. Only when `dateRange='custom'`. |
| `enddt` | conditional | YYYY-MM-DD upper bound. Only when `dateRange='custom'`. |
| `maxItems` | no | Max records to return (1-100, default 10). EDGAR `/search-index` caps page size at 100. |

**Validation rule:** at least one of `query` or `ciks` must be non-empty. The actor fails fast at startup if both are missing.

### Output

One JSON record per filing hit. Every field is a `string` (Apify's output schema v1 only renders string-typed properties — arrays are JSON-encoded).

| Field | Description |
|---|---|
| `id` | EDGAR `_id` (filename within accession) |
| `accessionNumber` | `0001213900-24-003044`-style accession |
| `accessionUrl` | EDGAR archive URL for the filing |
| `form` | Filing form type (10-K, 10-Q, 8-K, 4, ...) |
| `fileType` | Document type within filing (10-K, EX-19.1, ...) |
| `fileDescription` | Free-text description |
| `fileDate` | Filing date YYYY-MM-DD |
| `periodEnding` | Period of report YYYY-MM-DD (or null) |
| `cik` | Primary CIK (10-digit zero-padded) |
| `allCiks` | JSON array of all CIKs in the filing |
| `displayNames` | JSON array of issuer names (incl. ticker + CIK suffix as EDGAR publishes them) |
| `tickers` | JSON array of ticker symbols parsed from `displayNames` |
| `sic` | 4-digit SIC code |
| `sicDescription` | Human-readable SIC industry (resolved against an inline SEC SIC subset) |
| `bizState` | State of incorporation |
| `bizLocation` | Headquarter location string |
| `fileNum` | File number (`001-41866`-style) |
| `filmNum` | Film number (legacy SEC id) |
| `documentUrl` | Direct URL to the document |
| `filingIndexUrl` | Filing index page |
| `edgarCompanyUrl` | SEC EDGAR company filings page for primary CIK |
| `score` | EDGAR full-text relevance score |
| `sourceQuery` | Audit trail — the query + filters as dispatched |
| `fetchedAt` | Actor fetch timestamp (ISO-8601) |

### Example inputs

```bash
## Query mode: "insider trading" in 10-K filings, Q1 2024
echo '{"query":"\"insider trading\"","forms":"10-K","dateRange":"custom","startdt":"2024-01-01","enddt":"2024-03-31","maxItems":5}' > .actor/input.json
apify run -p

## CIK mode: every Form 4 from Apple in 2025
echo '{"ciks":"0000320193","forms":"4","dateRange":"custom","startdt":"2025-01-01","enddt":"2025-12-31","maxItems":10}' > .actor/input.json
apify run -p

## Combined: software industry (SIC 7372) + "data breach"
echo '{"query":"data breach","forms":"8-K","dateRange":"last-month","maxItems":10}' > .actor/input.json
apify run -p
````

### Limits and gotchas

- **Rate limit.** SEC guidance: "no more than 10 requests per second" with a polite-pool User-Agent. The actor sends one request per run by default; pagination beyond `maxItems=100` requires an external loop (intentional — EDGAR caps `/search-index` page size at 100).
- **No proxy.** This is a keyless public endpoint. SEC blocks anonymous datacenter IPs at peak hours; consumer traffic from Apify's IP pool works fine for typical workloads but heavy commercial usage should consider a polite-pool agreement with SEC.
- **SIC subset is partial.** The actor embeds a ~250-entry subset of SEC's SIC table covering finance, real estate, manufacturing, retail, services, and government. Less-common SIC codes will return `sicDescription=null` — consumers can resolve via `https://www.sec.gov/corpfin/division-of-corporation-finance-standard-industrial-classification-sic-code-list`.
- **Free-text quirks.** EDGAR uses Elasticsearch's match-phrase semantics. A bareword query matches across all token positions; quoted strings anchor to phrase order; capitalisation is normalised. Wildcard `*` returns an empty result set (use `forms` + date filters to scope instead).

### Pricing

Free tier: 10 runs/month on the Apify Free plan. Pro: pay-as-you-go compute units (negligible for single-call API actors — typically <0.001 CU per run).

### Changelog

- 0.1.0 — initial release.

# Actor input Schema

## `query` (type: `string`):

Free-text search applied to the EDGAR filing index. Supports phrase queries ("insider trading") and AND/OR operators. Leave empty when supplying a CIK.

## `ciks` (type: `string`):

Optional comma-separated list of SEC CIK numbers (e.g. "0000320193" or "320193" for Apple). 10-digit zero-padded or trimmed. Leave empty to search the entire corpus.

## `forms` (type: `string`):

Comma-separated list of form types (e.g. "10-K,10-Q,8-K,4"). Leave empty to include all forms.

## `dateRange` (type: `string`):

EDGAR built-in date range. Use 'custom' with startdt/enddt, or one of: today, yesterday, last-week, last-month, last-quarter, last-year, 1d, 5d, 30d, 90d, 1y.

## `startdt` (type: `string`):

Inclusive lower bound for file date (YYYY-MM-DD). Only used when dateRange='custom'.

## `enddt` (type: `string`):

Inclusive upper bound for file date (YYYY-MM-DD). Only used when dateRange='custom'.

## `maxItems` (type: `integer`):

Maximum number of filing records to return (1-100). EDGAR /search-index caps page size at 100.

## Actor input object example

```json
{
  "query": "",
  "ciks": "",
  "forms": "",
  "dateRange": "",
  "startdt": "",
  "enddt": "",
  "maxItems": 10
}
```

# Actor output Schema

## `id` (type: `string`):

No description

## `accessionNumber` (type: `string`):

No description

## `accessionUrl` (type: `string`):

No description

## `form` (type: `string`):

No description

## `fileType` (type: `string`):

No description

## `fileDescription` (type: `string`):

No description

## `fileDate` (type: `string`):

No description

## `periodEnding` (type: `string`):

No description

## `cik` (type: `string`):

No description

## `allCiks` (type: `string`):

No description

## `displayNames` (type: `string`):

No description

## `tickers` (type: `string`):

No description

## `sic` (type: `string`):

No description

## `sicDescription` (type: `string`):

No description

## `bizState` (type: `string`):

No description

## `bizLocation` (type: `string`):

No description

## `fileNum` (type: `string`):

No description

## `filmNum` (type: `string`):

No description

## `documentUrl` (type: `string`):

No description

## `filingIndexUrl` (type: `string`):

No description

## `edgarCompanyUrl` (type: `string`):

No description

## `score` (type: `string`):

No description

## `sourceQuery` (type: `string`):

No description

## `fetchedAt` (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("scrupulous_waterbird_m4w/sec-edgar-full-text-search").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("scrupulous_waterbird_m4w/sec-edgar-full-text-search").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 scrupulous_waterbird_m4w/sec-edgar-full-text-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrupulous_waterbird_m4w/sec-edgar-full-text-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEC EDGAR Full-Text Filing Search",
        "description": "Search SEC EDGAR full-text filing index by free-text query and/or CIK. Returns structured filing records (form type, file date, accession number, CIK, ticker, SIC) without API keys or captchas.",
        "version": "0.0",
        "x-build-id": "UdkxY98MS6YoMx8Bb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrupulous_waterbird_m4w~sec-edgar-full-text-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrupulous_waterbird_m4w-sec-edgar-full-text-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrupulous_waterbird_m4w~sec-edgar-full-text-search/runs": {
            "post": {
                "operationId": "runs-sync-scrupulous_waterbird_m4w-sec-edgar-full-text-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrupulous_waterbird_m4w~sec-edgar-full-text-search/run-sync": {
            "post": {
                "operationId": "run-sync-scrupulous_waterbird_m4w-sec-edgar-full-text-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free-text search applied to the EDGAR filing index. Supports phrase queries (\"insider trading\") and AND/OR operators. Leave empty when supplying a CIK.",
                        "default": ""
                    },
                    "ciks": {
                        "title": "CIK(s) to filter",
                        "type": "string",
                        "description": "Optional comma-separated list of SEC CIK numbers (e.g. \"0000320193\" or \"320193\" for Apple). 10-digit zero-padded or trimmed. Leave empty to search the entire corpus.",
                        "default": ""
                    },
                    "forms": {
                        "title": "Form types filter",
                        "type": "string",
                        "description": "Comma-separated list of form types (e.g. \"10-K,10-Q,8-K,4\"). Leave empty to include all forms.",
                        "default": ""
                    },
                    "dateRange": {
                        "title": "Date range preset",
                        "enum": [
                            "",
                            "custom",
                            "today",
                            "yesterday",
                            "last-week",
                            "last-month",
                            "last-quarter",
                            "last-year",
                            "1d",
                            "5d",
                            "30d",
                            "90d",
                            "1y"
                        ],
                        "type": "string",
                        "description": "EDGAR built-in date range. Use 'custom' with startdt/enddt, or one of: today, yesterday, last-week, last-month, last-quarter, last-year, 1d, 5d, 30d, 90d, 1y.",
                        "default": ""
                    },
                    "startdt": {
                        "title": "Start date",
                        "type": "string",
                        "description": "Inclusive lower bound for file date (YYYY-MM-DD). Only used when dateRange='custom'.",
                        "default": ""
                    },
                    "enddt": {
                        "title": "End date",
                        "type": "string",
                        "description": "Inclusive upper bound for file date (YYYY-MM-DD). Only used when dateRange='custom'.",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of filing records to return (1-100). EDGAR /search-index caps page size at 100.",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
