# Yahoo Finance Alert Monitor (`titan_coder/yahoo-finance-alert-monitor`) Actor

Durable price-move and 52-week high/low alerts for a watchlist of tickers. Pay only for genuinely delivered alerts; checking a ticker that stayed quiet is free.

- **URL**: https://apify.com/titan\_coder/yahoo-finance-alert-monitor.md
- **Developed by:** [Radu Furtuna](https://apify.com/titan_coder) (community)
- **Categories:** Business, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 price alert delivereds

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?

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

## Yahoo Finance Alert Monitor 📈

**Watch a list of tickers and get paid-for alerts only when something genuinely moves — not a data dump on every run.**

Most Yahoo Finance actors just hand you today's quote and stop there. This one remembers where each ticker was last time and only bills you when it moves a meaningful amount from that point, or breaks a 52-week high/low.

### Why this exists

Every existing Yahoo Finance / TradingView-style Actor on the Store is a one-shot pull: run it, get today's numbers, done. None of them offer a durable monitor that only charges for a genuine, new price event.

### How it works

1. Give it a `monitorId`, a list of tickers, and a % move threshold (default 5%).
2. Each run checks the current price against your last alert point for that ticker.
3. You're billed once per genuinely new alert: the price moved ≥ your threshold since the last alert (in either direction), or the ticker crossed its 52-week high/low for the first time since the last time it was inside that range.

### What you pay for

**One event — `price-alert-delivered`.** Billed once per delivered alert. Checking a ticker that stayed within your threshold is free. Re-running the same monitor never re-bills an alert you already got.

### Input

| Field | What it does |
|---|---|
| `monitorId` | Names this monitor's durable history — required. The % threshold is locked to this ID on first run: changing it later fails loudly instead of silently changing what counts as a new alert. |
| `tickers` | 1–50 Yahoo Finance symbols (e.g. `AAPL`, `MSFT`, `BTC-USD`). New tickers can be added later under the same `monitorId`. |
| `priceChangeThresholdPercent` | How big a move triggers an alert (1–50%, default 5%) |
| `notifyOn` | `new_alerts` (default) fires the webhook only when paid alerts were delivered |
| `webhookUrl` | HTTPS only; delivers a digest of paid alerts as JSON |

### Output

- **Dataset** — one row per delivered alert: ticker, alert type (`pct_up`/`pct_down`/`52w_high`/`52w_low`), current price, the reference point or 52-week level it crossed, timestamp.
- **Run status** — clear reasons on bad input, a locked-threshold mismatch, or a run that ran out of time.

### What this does NOT promise

Investment advice, predictions, or real-time data faster than Yahoo itself provides. Volume-spike alerts are not in v1 (the data needed for an honest baseline isn't available from this endpoint yet).

### A note on the source

Data comes from Yahoo Finance's public chart endpoint via the same request pattern a logged-out browser makes — no login, no account risk. Not an official API; the route could change at any time.

# Actor input Schema

## `monitorId` (type: `string`):

Name of this monitor's durable history (a-z, 0-9, dash; up to 40 chars). The alert threshold is locked to this ID on first run.

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

1-50 Yahoo Finance ticker symbols (e.g. AAPL, MSFT, BTC-USD). New tickers can be added later under the same monitorId.

## `priceChangeThresholdPercent` (type: `integer`):

Alert when a ticker moves this many percent from the last alert point, or crosses its 52-week high/low. Locked for this monitorId after the first run.

## `notifyOn` (type: `string`):

new\_alerts — post the webhook only when new paid alerts were delivered; always — post it every run; never — do not call webhookUrl at all.

## `webhookUrl` (type: `string`):

Optional. Receives a digest of delivered (paid) alerts as JSON (POST). HTTPS only.

## Actor input object example

```json
{
  "monitorId": "my-portfolio",
  "priceChangeThresholdPercent": 5,
  "notifyOn": "new_alerts"
}
```

# Actor output Schema

# 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 = {
    "monitorId": "my-portfolio"
};

// Run the Actor and wait for it to finish
const run = await client.actor("titan_coder/yahoo-finance-alert-monitor").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 = { "monitorId": "my-portfolio" }

# Run the Actor and wait for it to finish
run = client.actor("titan_coder/yahoo-finance-alert-monitor").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 '{
  "monitorId": "my-portfolio"
}' |
apify call titan_coder/yahoo-finance-alert-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,titan_coder/yahoo-finance-alert-monitor"
        }
    }
}

```

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/bXTt5yVQFtciJSbYN/builds/gVXyRccUw5ApzQXY6/openapi.json
