# Red Flag Radar - Stock Risk Score from SEC Filings & Halts (`smartmoney-data/red-flag-radar`) Actor

Red-flag risk score (0-100) for any US stock from official data: late filings (NT 10-K/Q), restatements, auditor changes, delisting notices, SEC suspensions, regulatory halts, Reg SHO threshold list, insider selling and dilution.

- **URL**: https://apify.com/smartmoney-data/red-flag-radar.md
- **Developed by:** [SmartMoney Data](https://apify.com/smartmoney-data) (community)
- **Categories:** Business, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 company risk reports

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

## Red Flag Radar - Stock Risk Score from SEC Filings & Halts

**A 0–100 risk score for every stock you hold, with each red flag explained and linked to its source.**

| | |
|---|---|
| **Data** | SEC EDGAR filings, Form 4, Nasdaq Trader halts and Reg SHO list, SEC suspensions |
| **Price** | $10 per 1,000 company reports, no subscription. Apify's free plan credit covers a first test. |
| **Freshness** | Latest filings and halt lists on every run |
| **Try it** | The input is pre-filled with a working example: just click **Start**. |

**Example output**

| Ticker | Risk score | Level | Most serious flag |
|---|---|---|---|
| XYZ | 80 | severe | Restatement: prior financials unreliable |
| ABC | 5 | low | Discretionary insider selling |

*Illustrative rows; real runs return the full fields listed under Output.*

Most blowups leave a trail first: a late 10-K, an auditor who walks, a restatement, a delisting notice, a trading halt, insiders quietly selling, a stock stuck on the fails-to-deliver list. This Actor checks your tickers against all of these in official data and returns one risk report per company, highest risk first.

### What you can do with it

- 🛡️ **Portfolio risk check:** run it weekly on your holdings and get warned before the headlines.
- 🚫 **Screen out landmines:** drop high-risk names from a long list or a stock screener.
- 🩳 **Short ideas:** find companies stacking up red flags.
- 🏦 **Compliance and due diligence:** a documented, source-linked checklist for any US issuer.

### What it checks

| Signal | Points | Source |
|---|---|---|
| SEC trading suspension | 50 | SEC trading suspension orders |
| Bankruptcy (8-K 1.03) | 50 | SEC EDGAR |
| Deregistration (Form 15) | 40 | SEC EDGAR |
| Restatement: prior financials unreliable (8-K 4.02) | 35 | SEC EDGAR |
| Late 10-K / 10-Q (NT 10-K, NT 10-Q) | 25 (+10 if repeated) | SEC EDGAR |
| Delisting notice / listing standard failure (8-K 3.01) | 25 | SEC EDGAR |
| Regulatory trading halt (H4, H9, H10, H11, T12) | 25 | Nasdaq Trader (all US exchanges) |
| Debt acceleration (8-K 2.04) | 25 | SEC EDGAR |
| Auditor change (8-K 4.01) | 20 | SEC EDGAR |
| Form 25 delisting notification | 15 | SEC EDGAR |
| Discretionary insider selling with no insider buying | 5 per seller, up to 15 | Form 4 (10b5-1 plan sales excluded) |
| Reg SHO threshold list | 10, or 15 if on every recent list | Nasdaq Trader |
| Material impairment (8-K 2.06), cybersecurity incident (8-K 1.05) | 10 each | SEC EDGAR |
| Share offerings (S-1, S-3, 424B prospectuses) | 5, or 10 for 4+ | SEC EDGAR |
| Repeated LULD volatility pauses (2+) | 5 | Nasdaq Trader |
| Frequent officer / director changes (3+ 8-K 5.02) | 5 | SEC EDGAR |

Each signal counts once however often it repeats, and the score is capped at 100. Levels: **low** < 15 ≤ **elevated** < 40 ≤ **high** < 70 ≤ **severe**.

### How to use it

#### Check a portfolio

```json
{ "tickers": ["AAPL", "TSLA", "GME", "AMC"] }
```

#### Only flag companies worth a look (schedule weekly)

```json
{ "tickers": ["..."], "minRiskScore": 25 }
```

#### Filings only, two years back

```json
{ "tickers": ["XYZ"], "signals": ["filings"], "lookbackDays": 730 }
```

### Output

```json
{
  "ticker": "XYZ",
  "companyName": "XYZ HOLDINGS INC",
  "riskScore": 80,
  "riskLevel": "severe",
  "flagCount": 4,
  "topFlag": "Financial statements no longer reliable (8-K 4.02)",
  "flags": [
    { "signal": "restatement", "points": 35, "title": "Financial statements no longer reliable (8-K 4.02)", "count": 1, "latestDate": "2026-10-02", "details": ["8-K item 4.02"], "url": "https://www.sec.gov/Archives/edgar/data/..." },
    { "signal": "late-filing", "points": 25, "title": "Late annual or quarterly report (NT 10-K / NT 10-Q)", "count": 1, "latestDate": "2026-09-29", "details": ["NT 10-K"], "url": "https://www.sec.gov/Archives/edgar/data/..." }
  ],
  "lastFilingDate": "2026-10-02",
  "secFilingsUrl": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=..."
}
```

The **`SUMMARY`** record counts companies by risk level, lists the ten riskiest, and reports any source that failed.

### Use it from code or an AI agent

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("smartmoney-data/red-flag-radar").call(run_input={"tickers": ["AAPL", "TSLA", "GME", "AMC"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**AI agents (Claude, ChatGPT, Cursor and other MCP clients):** connect the Apify MCP server with this Actor preloaded:

```text
https://mcp.apify.com/?tools=smartmoney-data/red-flag-radar
```

Add this URL as a remote MCP server or custom connector in your AI client, sign in with Apify (OAuth), then just ask, for example:

> Check my portfolio for red flags: late filings, restatements, auditor changes, halts.

> Part of the **SmartMoney Data** suite: [Insider Trades](https://apify.com/smartmoney-data/sec-insider-trades-tracker) · [8-K Material Events](https://apify.com/smartmoney-data/sec-8k-material-events) · [Trading Halts](https://apify.com/smartmoney-data/trading-halts-suspensions-monitor) · [Short Squeeze Radar](https://apify.com/smartmoney-data/short-squeeze-radar) · [Smart Money Confluence](https://apify.com/smartmoney-data/smart-money-confluence-score)

### Pricing

**Pay per result:** you're charged for each company report returned. See the **Pricing** tab for current rates.

### FAQ

**Is a high score a sell signal?**
No. It means there is documented trouble worth reading about. Every flag links to the filing or order behind it.

**Why does a large company show a Form 25 or offerings?**
Large companies file Form 25 when they redeem a bond and file prospectuses for debt. Those flags carry few points for that reason.

**Does the Reg SHO check cover NYSE stocks?**
It uses Nasdaq's daily threshold list, which covers Nasdaq-listed securities.

**Is this legal to use?**
Yes. All sources are public: SEC EDGAR, SEC trading suspension orders and Nasdaq Trader.

### Support

**Useful?** A short review on this page helps other people find it, and we read every one.

Found a bug or need a feature? Open an issue on the **Issues** tab or email **smartmoney-data@googlegroups.com**.

*Data is provided for informational purposes only and is not investment advice.*

# Actor input Schema

## `tickers` (type: `array`):

US stocks listed with the SEC: your portfolio, a watchlist or a screen.

## `lookbackDays` (type: `integer`):

Filings and insider trades from this many days back count as evidence.

## `signals` (type: `array`):

Which evidence to check.

## `minRiskScore` (type: `integer`):

Only return companies at or above this score. 0 returns every company.

## `haltDays` (type: `integer`):

How many recent days of Nasdaq Trader halt lists to read (all US exchanges).

## `thresholdDays` (type: `integer`):

How many recent daily threshold lists to check.

## `maxForm4PerTicker` (type: `integer`):

Newest insider filings read per company.

## `secUserAgent` (type: `string`):

The SEC asks automated clients to identify themselves as 'Company Name email@domain.com'.

## Actor input object example

```json
{
  "tickers": [
    "AAPL",
    "TSLA",
    "GME"
  ],
  "lookbackDays": 180,
  "signals": [
    "filings",
    "insiders",
    "halts",
    "regsho"
  ],
  "minRiskScore": 0,
  "haltDays": 10,
  "thresholdDays": 10,
  "maxForm4PerTicker": 40,
  "secUserAgent": "SmartMoney Data Red Flag Radar smartmoney-data@googlegroups.com"
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "tickers": [
        "AAPL",
        "TSLA",
        "GME"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("smartmoney-data/red-flag-radar").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 = { "tickers": [
        "AAPL",
        "TSLA",
        "GME",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("smartmoney-data/red-flag-radar").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 '{
  "tickers": [
    "AAPL",
    "TSLA",
    "GME"
  ]
}' |
apify call smartmoney-data/red-flag-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,smartmoney-data/red-flag-radar"
        }
    }
}
```

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/0NxSKWaLmaOmWGfPk/builds/kWjUyLqT92OtMFqJJ/openapi.json
