# Seeking Alpha API News & Dividend Data (`doesaiknow/seeking-alpha-api-news-dividend-data`) Actor

Seeking Alpha news, dividend data and parsed earnings as a clean, deduped JSON API. Per-ticker fetch (40 recent articles + author, date, comments + yield/ex-div + 37-year dividend history). Delta feed — only NEW items since your last run. Pay-per-use $5/1k. Alternative to Alpha Vantage / Tiingo.

- **URL**: https://apify.com/doesaiknow/seeking-alpha-api-news-dividend-data.md
- **Developed by:** [Dawid S](https://apify.com/doesaiknow) (community)
- **Categories:** News, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 dataset items

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

## 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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Seeking Alpha News & Dividend Data

> Seeking Alpha news, dividend data and parsed earnings signals as a clean, deduplicated JSON API. Per-ticker fetch with 37+ years of dividend history, delta feed of only-new items, and structured EPS/revenue parsing from headlines. **Pay-per-use, $5 / 1,000 results.** A pay-per-use alternative to Tiingo, EODHD, Alpha Vantage and RapidAPI Seeking Alpha for the SA-specific slice.

---

**For educational and research purposes.** Users are responsible for complying with Seeking Alpha's Terms of Service and applicable laws. Scraped data is intended for analysis, not commercial redistribution. The actor scrapes only the **public** Seeking Alpha surface — no login, no paywall bypass, no Premium data.

---

### What you get

This actor turns Seeking Alpha's per-ticker pages into a stable, typed JSON feed. Three things drive its value:

1. **Per-ticker enriched news** — 40 most-recent articles per ticker, with structured signal classification (`bullish` / `bearish` / `neutral`), single-label category (`earnings`, `m_and_a`, `regulatory`, `analysis`, `news`), and parsed EPS/revenue beats from headlines.
2. **Dividend scorecard** — yield (forward), annual payout, payout ratio, 5-year CAGR, consecutive years of growth, ex-dividend date, payout date, declare date, frequency. Optional history with **every past payout back to the 1980s** (AAPL: 1989 → 2026, ~80 payouts).
3. **Delta feed** — `onlyNewSinceLastRun: true` returns only items whose `content_hash` wasn't seen in your prior runs. Turns daily monitoring of 50 tickers from ~$10/day into ~$0.50/day. **No other Apify Seeking Alpha actor offers this.**

### Table of contents

- [Quick start](#quick-start)
- [Features](#features)
- [Use cases](#use-cases)
- [Output JSON examples](#output-json-examples)
- [Input parameters](#input-parameters)
- [Pricing](#pricing)
- [How it compares](#how-it-compares)
- [What it does NOT do — honest scope](#what-it-does-not-do--honest-scope)
- [FAQ](#faq)
- [Disclaimer & legal scope](#disclaimer--legal-scope)

### Quick start

Minimal input — single ticker, news only:

```json
{
  "tickerSymbols": ["AAPL"]
}
````

That returns 40 enriched news items for AAPL (~$0.20 No-discount, ~$0.12 Gold tier).

Full input with all options shown:

```json
{
  "tickerSymbols": ["AAPL", "MSFT", "KO"],
  "dataType": "both",
  "maxItems": 200,
  "analysisType": "all",
  "signalFilter": "any",
  "includeRawHeadline": true,
  "includeHistory": true,
  "onlyNewSinceLastRun": false
}
```

That fetches 40 news per ticker × 3 = 120 news items + 3 dividend scorecards with full history, returns up to 200 items capped (~$1.00 No-discount, ~$0.60 Gold).

#### Calling from your code

```bash
## Using Apify CLI
apify call your-username/seeking-alpha-news-dividend-data \
  --input '{"tickerSymbols":["AAPL","NVDA"], "dataType":"both"}'

## Using curl + Apify REST API
curl -s "https://api.apify.com/v2/acts/<actor-id>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"tickerSymbols":["AAPL"], "dataType":"news", "onlyNewSinceLastRun":true}'
```

```python
## Python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("your-username/seeking-alpha-news-dividend-data").call(
    run_input={"tickerSymbols": ["AAPL"], "dataType": "both"}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["headline"] if "headline" in item else item["ticker"])
```

### Features

- 📰 **40 most-recent news articles per ticker** with title, URL, slug, author, date (ISO + raw), comments count, single-label category, derived bullish/bearish/neutral signal
- 💰 **Full dividend scorecard** — yield (FWD), annual payout, payout ratio, 5-year growth CAGR, consecutive years of growth, ex-dividend / payout / record / declare dates, frequency
- 📜 **Dividend history** (opt-in) — every past payout newest-first. For AAPL: 80+ entries back to 1989, with split adjustments (`adj_amount` reflects 7-for-1 in 2014 and 4-for-1 in 2020)
- 🔁 **Delta feed** — `onlyNewSinceLastRun: true` returns only items not seen in prior runs. Built on stable per-ticker `content_hash` (sha256 over `{article_id, title, date_iso}` for news; over `{ticker, ex_dividend_date, latest_dividend_usd, frequency}` for dividends)
- 🎯 **Category + signal filters** — `analysisType: "earnings"` for earnings-only headlines; `signalFilter: "bullish"` for high-conviction bullish news
- 💵 **Pay-per-use** — $5 / 1,000 results No-discount, $3 / 1,000 Gold tier. No subscription, no minimum spend
- 🧱 **Stable typed JSON schema** — every key always present (null when absent). Drop into your Snowflake/BigQuery/Postgres pipeline without column-add migrations
- 📡 **Apify Console + REST + Python/JS SDKs** — usable from automations (n8n, Make), notebooks (Jupyter, Colab), agent frameworks (Apify MCP)

### Use cases

| Persona | Use case | Example input |
|---|---|---|
| **Quant / algo trader** | Tag SA news mentions per ticker for sentiment overlay on portfolio | `{"tickerSymbols":["AAPL","MSFT","NVDA","GOOG","META"], "dataType":"news", "signalFilter":"any"}` |
| **Dividend investor** | Daily check on dividend aristocrats — yield, ex-div dates, payout frequency | `{"tickerSymbols":["KO","JNJ","PG","O","T"], "dataType":"dividends", "includeHistory":false}` |
| **Fundamental researcher** | Earnings beat/miss tracker for watch-list — parsed EPS/revenue surprise from headlines | `{"tickerSymbols":["AAPL","MSFT","GOOG"], "dataType":"news", "analysisType":"earnings"}` |
| **AI agent / LLM workflow** | Wire SA news into n8n/Make/Apify MCP for daily ticker-mentions briefing | `{"tickerSymbols":["AAPL"], "dataType":"news", "onlyNewSinceLastRun":true}` (cron daily) |
| **Backtesting researcher** | Build a historical news-event panel — fetch incremental new articles per ticker daily | Same as above, scheduled hourly/daily via Apify Schedules |
| **Fintech analyst** | Decision-stage compare vs Alpha Vantage / Tiingo / EODHD subscription | One-off run on test tickers; compare structure + freshness + cost-per-call |
| **Dividend research analyst** | Build "dividend growth track record" panels using history field | `{"tickerSymbols":["AAPL"], "dataType":"dividends", "includeHistory":true}` (1 run, $0.015) |

### Output JSON examples

#### News record (one row per article)

```json
{
  "article_id": 4597508,
  "headline": "Apple ups trade-in values for array of devices ahead of WWDC",
  "url": "https://seekingalpha.com/news/4597508-apple-ups-trade-in-values-for-array-of-devices-ahead-of-wwdc",
  "slug": "apple-ups-trade-in-values-for-array-of-devices-ahead-of-wwdc",
  "author": "SA News",
  "date_iso": "2026-05-28T12:41:00+00:00",
  "date_raw": "Today, 12:41 PM",
  "comments_count": 0,
  "company": "Apple",
  "tickers": ["AAPL"],
  "category": "news",
  "earnings": null,
  "signal": "neutral",
  "signal_confidence": 0.5,
  "source": "seekingalpha.com",
  "scraped_at": "2026-05-28T07:09:23Z",
  "content_hash": "f9cda599...",
  "data_completeness": "headline_metadata",
  "paywalled_fields": ["full_body", "quant_rating"],
  "is_new_since_last_run": true
}
```

The `earnings` object — when populated, e.g. on a beat headline:

```json
"earnings": {
  "eps_actual": 1.32,
  "eps_surprise": 0.04,
  "eps_beat": true,
  "revenue_actual_usd": 95400000000,
  "revenue_surprise_usd": 1200000000,
  "revenue_beat": true,
  "is_gaap": null
}
```

#### Dividend record (one row per ticker)

```json
{
  "ticker": "AAPL",
  "source_url": "https://seekingalpha.com/symbol/AAPL/dividends",
  "yield_fwd": 0.0035,
  "annual_payout_usd": 1.08,
  "payout_ratio": 0.1258,
  "growth_5y_cagr": 0.0469,
  "years_of_growth": 13,
  "latest_dividend_usd": 0.27,
  "ex_dividend_date": "2026-05-11",
  "payout_date": "2026-05-14",
  "record_date": "2026-05-11",
  "declare_date": "2026-04-30",
  "frequency": "quarterly",
  "history": [
    {
      "amount": 0.27,
      "adj_amount": 0.27,
      "dividend_type": "regular",
      "frequency": "quarterly",
      "ex_dividend_date": "2026-05-11",
      "record_date": "2026-05-11",
      "payout_date": "2026-05-14",
      "declare_date": "2026-04-30"
    },
    "... 80+ more entries newest-first, all the way back to 1989-08-21"
  ],
  "scraped_at": "2026-05-28T07:09:33Z",
  "content_hash": "ececd405...",
  "data_completeness": "scorecard_with_history",
  "is_new_since_last_run": true,
  "source": "seekingalpha.com"
}
```

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `tickerSymbols` | array | `[]` | List of ticker symbols. Each triggers one fetch of `seekingalpha.com/symbol/<T>/news` (~40 recent articles). Required if non-empty input. |
| `dataType` | enum | `"news"` | `"news"` = enriched news headlines. `"dividends"` = scorecard per ticker. `"both"` = both, merged. |
| `maxItems` | integer | `100` | Ceiling on total records across all tickers. SA's public news page caps at 40 per ticker — so this cap is for multi-ticker batches (5 tickers × 40 = 200), not a way to get more for one ticker. |
| `analysisType` | enum | `"all"` | Category filter. `"all"` keeps everything. `"earnings"` = parsed-EPS headlines only. `"news"` = news + regulatory + M\&A. `"analysis"` = best-effort. |
| `signalFilter` | enum | `"any"` | Keep only items whose derived signal matches. `"bullish"` / `"bearish"` / `"neutral"` / `"any"`. |
| `includeRawHeadline` | boolean | `true` | Include the unmodified scraped headline + source URL. Set false for header-light outputs (slug + IDs still present). |
| `onlyNewSinceLastRun` | boolean | `false` | **Delta feed.** Skip items whose `content_hash` was already emitted in a prior run of this actor. Turns the actor into an incremental change feed instead of a re-scrape. Critical for daily/hourly cron jobs. |
| `includeHistory` | boolean | `false` | Applies when `dataType` is `dividends` or `both`. Adds the full past-payouts list per ticker (+1 fetch per ticker, so per-ticker cost doubles). |

### Pricing

Pay-per-event. One emitted item = one charge.

| Tier | Per item | Per 1,000 items |
|---|---|---|
| No discount (Free Apify) | **$0.005** | $5.00 |
| Bronze | $0.0045 | $4.50 |
| Silver | $0.004 | $4.00 |
| **Gold** | **$0.003** | $3.00 |

**Per-call cost estimates** (No discount tier):

| Input | Items returned | Cost |
|---|---|---|
| 1 ticker, news only | up to 40 | $0.20 |
| 1 ticker, dividends only | 1 | $0.005 |
| 1 ticker, dividends + history | 1 | $0.005 |
| 1 ticker, both, no history | 41 | $0.205 |
| 5 tickers, news only | up to 200 | $1.00 |
| 1 ticker, news, delta feed (post first run) | typically 0-5 | $0-0.025 |

**Daily monitoring savings via delta feed** (50 tickers, `onlyNewSinceLastRun: true`):

- Without delta: 50 tickers × 40 articles × $0.005 = **$10.00/day** (re-scraping the same articles)
- With delta: 50 tickers × ~2 new articles × $0.005 = **~$0.50/day** (only what's new)
- **20× cost reduction** via delta feed alone.

Failed runs are never billed — the charge fires only after `pushData` succeeds.

### How it compares

| | This actor | RapidAPI Seeking Alpha (apidojo) | Alpha Vantage | Tiingo / EODHD / Finnhub | fortuitous\_pirate (Apify) |
|---|---|---|---|---|---|
| Pricing model | Pay-per-event PPE | Subscription tiers | Freemium tiers | Subscription $25-100+/mo | Pay-per-event PPE |
| Headline cost | **$5 / 1,000** | varies | varies | $25+/mo flat | $20 / 1,000 |
| SA-specific news per ticker | ✅ | ✅ | ❌ | ❌ | ✅ |
| **Dividends (yield, ex-div, history)** | ✅ **37-year history** | ❌ | partial | ✅ | ❌ |
| Structured earnings parse from headlines | ✅ | ❌ | partial | partial | ❌ |
| **Delta feed (only NEW items)** | ✅ **only Apify SA actor with this** | ❌ | ❌ | ❌ | ❌ |
| No subscription | ✅ | ❌ | partial | ❌ | ✅ |
| Full article body | ❌ (paywalled) | ❌ | n/a | n/a | summary only |
| Quant Rating (SA Premium) | ❌ Premium-locked everywhere | ❌ | ❌ | ❌ | ❌ |
| Stable typed JSON schema | ✅ | partial | ✅ | ✅ | ❌ |

**Bottom line**: 4× cheaper than the only comparable Apify actor, only one with dividends + delta feed, alternative to subscription data vendors for the slice of SA you actually need.

### What it does NOT do — honest scope

This actor scrapes only the **public Seeking Alpha surface**. It does NOT:

- **Bypass SA Premium** or scrape Quant Rating / Factor Grades — Premium-locked, intentionally out of scope (ToS + IP redistribution liability)
- **Scrape full article bodies** — paywalled or unreached. You get headline + structured metadata, not long-form text
- **Support keyword search across SA** — SA's internal `/search` API is captcha-blocked from external requests
- **Provide real-time push** — on-demand scrape. Schedule via Apify Schedules for periodic refresh
- **Replace an SA Premium subscription** — different product. If you need Quant Ratings or full analyst articles, subscribe to SA directly
- **Crawl analyst price targets from article bodies** — we don't extract bodies
- **Provide intraday minute-by-minute data** — SA's news page is the source; freshness is on-scrape

### FAQ

**Q: Does Seeking Alpha have a free API?**
A: SA does not publicly expose a free API. This actor and the RapidAPI `apidojo` provider are the two main third-party options. This actor is the cheaper PPE alternative.

**Q: Can I get Quant Ratings or Factor Grades?**
A: No — those are SA Premium-locked and intentionally out of scope. Bypassing the paywall via account login would breach SA's ToS and redistribute Premium IP. We derive our own bullish/bearish/neutral signal from public-data heuristics instead — labeled clearly as our derived signal, not SA's Quant Rating.

**Q: How fresh is the data?**
A: On-demand scrape. Each run fetches the most-recent 40 articles per ticker as of run time. For "always-fresh" workflows, schedule daily/hourly via Apify Schedules with `onlyNewSinceLastRun: true`.

**Q: How does the delta feed work?**
A: Each emitted item has a `content_hash` (sha256 over key identity fields). After your first run, the actor remembers those hashes; subsequent runs with `onlyNewSinceLastRun: true` skip items whose hash was already emitted — returning only genuinely new content.

**Q: Is this legal?**
A: For educational and research purposes. You are responsible for complying with SA's Terms of Service. Public-data scraping is generally permissible for personal use, but commercial redistribution requires SA's authorization. Don't republish article text. Don't claim affiliation with SA. We're not lawyers — when in doubt, ask one.

**Q: Why don't I get article body / full text?**
A: SA paywalls article bodies under SA Premium and also restricts non-Premium body content. We extract headline + structured metadata only. The `paywalled_fields` array on each record lists what we honestly cannot deliver.

**Q: How does this compare to Alpha Vantage / Tiingo / Finnhub?**
A: Those sell broad fundamentals across many sources and require a monthly subscription. This actor focuses on SA-specific signals (headlines, parsed earnings, dividend scorecard) and charges pay-per-use. Best when SA-specific news/dividends matter; not when you need broad fundamentals across exchanges.

**Q: Can I run it as a cron job?**
A: Yes. Apify Schedules → pick this actor → set frequency (hourly, daily, weekly) → set input with `onlyNewSinceLastRun: true` for incremental refresh. The default dataset accumulates only newly-detected items.

**Q: How many tickers can I query in one run?**
A: Soft answer: as many as you want; each triggers one fetch (~5 credits). Hard cap on items is `maxItems` (default 100, max 1000). Practical: 5-50 tickers per run for portfolio sweeps; 1 ticker per run for delta-feed cron jobs.

**Q: What ticker formats are accepted?**
A: Standard NYSE/NASDAQ tickers (AAPL, MSFT, NVDA). Tickers with class designators work (BRK.B). Dollar-prefix ($AAPL) is auto-stripped. Whitespace-trimmed, case-insensitive (`aapl` → `AAPL`).

**Q: My run failed — am I charged?**
A: No. The PPE event fires only after a successful `pushData`. If a fetch fails, parsing yields zero items, or the backend returns an error → nothing is billed.

**Q: What about Apify proxy / residential IPs?**
A: This actor uses a stealth-proxied web fetch via the backend. No residential proxy from your account is consumed — backend handles all fetching with its own infrastructure.

### Disclaimer & legal scope

This actor is provided **as-is, for educational and research purposes**. By using it you agree to:

1. **Comply with Seeking Alpha's Terms of Service** — including their robots policy, fair-use limits, and content licensing terms
2. **Not redistribute scraped content commercially** without proper licensing from Seeking Alpha
3. **Acknowledge data accuracy is best-effort** — markets are noisy, parsers fall behind website changes, and SA may serve different content based on geography. Date strings like `date_iso` are best-effort normalized; verify against `date_raw` when timing is critical
4. **Not use this data for unauthorized financial advice or trading systems** without proper regulatory compliance (SEC, FINRA, FCA depending on your jurisdiction)
5. **Understand that derived signals (`signal`, `signal_confidence`, `signal_confidence` cap of 0.95) are heuristics**, not advice. We label them as our own derivation, never as SA's proprietary Quant Rating

The actor does **not** scrape Premium-locked surfaces. Quant Rating, Factor Grades, dividend safety, and analyst ratings remain behind SA's Premium paywall and are not extracted by this actor — by design.

Independent project. Not affiliated with, endorsed by, or partnered with Seeking Alpha Inc.

***

### SEO keyword cluster

seeking alpha api, seekingalpha api, seeking alpha scraper, seeking alpha news, seeking alpha dividends, seeking alpha api documentation, dividend api, dividend data api, dividend history api, dividend yield api, ex dividend date api, dividend tracker api, stock dividend api, stock news api, financial news api, financial data api, stock data api, stock market api, earnings api, earnings calendar api, earnings estimates api, eps estimate api, earnings data scraper, analyst ratings api, stock analyst ratings api, etf data api, etf holdings api, yahoo finance api alternative, alpha vantage alternative, iex cloud alternative, financial modeling prep alternative, tiingo alternative, eodhd alternative, finnhub alternative, marketaux alternative, stocknewsapi alternative, rapidapi seeking alpha, scrape seeking alpha, how to scrape seeking alpha, seeking alpha python, seeking alpha javascript, seeking alpha stock analysis scraper, dividend scraper, stock news scraper, financial news scraper, apify actor, apify seeking alpha, no-code scraper, web scraping api, json api stock data, per-ticker news api, structured earnings api, delta news feed api, incremental news api, news change feed api, content hash dedup, pay per use stock api, pay per event api, ticker mentions api, news monitoring api, dividend watch api, dividend portfolio api, equity research api, fintech data api, stock market data api, market data api, finance data api, news feed scraper, headline scraper, RSS alternative stock news.

# Actor input Schema

## `dataType` (type: `string`):

What to return. `news` = enriched per-ticker headlines (default). `dividends` = scorecard per ticker. `both` = both, merged.

## `tickerSymbols` (type: `array`):

Tickers to fetch. Each triggers a real fetch of seekingalpha.com/symbol/<T>/news (~40 recent articles with author, date, comments).

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

Ceiling on total records returned across all tickers. Seeking Alpha's public news page shows 40 articles per ticker — this cap is for limiting multi-ticker batches (e.g. 5 tickers × 40 = 200), not a way to get more articles for one ticker. For deeper single-ticker coverage, pair with `onlyNewSinceLastRun: true` and schedule periodic runs.

## `analysisType` (type: `string`):

Category filter on the NEWS feed. Full support: news, earnings. Best-effort: analysis. For dividend data, set dataType to 'dividends' or 'both' instead.

## `signalFilter` (type: `string`):

Keep only items whose derived signal matches. 'Any' disables the filter.

## `includeRawHeadline` (type: `boolean`):

Include the unmodified scraped headline and source URL alongside the enriched fields.

## `onlyNewSinceLastRun` (type: `boolean`):

Skip items whose content\_hash was already emitted in a previous run of this actor. Turns the actor into an incremental change feed instead of a re-scrape.

## `includeHistory` (type: `boolean`):

Only applies when dataType is dividends or both. Adds the full past-payouts list to each record (37+ years for AAPL — back to 1989). Costs one extra fetch per ticker, so per-ticker cost doubles for the dividend page.

## Actor input object example

```json
{
  "dataType": "news",
  "tickerSymbols": [
    "AAPL"
  ],
  "maxItems": 100,
  "analysisType": "all",
  "signalFilter": "any",
  "includeRawHeadline": true,
  "onlyNewSinceLastRun": false,
  "includeHistory": false
}
```

# Actor output Schema

## `default` (type: `string`):

All records (news + dividend) emitted by this run. Use the view selector to switch between presets, or pull /items via the API for raw JSON.

# 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 = {
    "tickerSymbols": [
        "AAPL"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("doesaiknow/seeking-alpha-api-news-dividend-data").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 = { "tickerSymbols": ["AAPL"] }

# Run the Actor and wait for it to finish
run = client.actor("doesaiknow/seeking-alpha-api-news-dividend-data").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 '{
  "tickerSymbols": [
    "AAPL"
  ]
}' |
apify call doesaiknow/seeking-alpha-api-news-dividend-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=doesaiknow/seeking-alpha-api-news-dividend-data",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Seeking Alpha API News & Dividend Data",
        "description": "Seeking Alpha news, dividend data and parsed earnings as a clean, deduped JSON API. Per-ticker fetch (40 recent articles + author, date, comments + yield/ex-div + 37-year dividend history). Delta feed — only NEW items since your last run. Pay-per-use $5/1k. Alternative to Alpha Vantage / Tiingo.",
        "version": "0.0",
        "x-build-id": "gw5BfzODKUz7v2uW7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/doesaiknow~seeking-alpha-api-news-dividend-data/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-doesaiknow-seeking-alpha-api-news-dividend-data",
                "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/doesaiknow~seeking-alpha-api-news-dividend-data/runs": {
            "post": {
                "operationId": "runs-sync-doesaiknow-seeking-alpha-api-news-dividend-data",
                "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/doesaiknow~seeking-alpha-api-news-dividend-data/run-sync": {
            "post": {
                "operationId": "run-sync-doesaiknow-seeking-alpha-api-news-dividend-data",
                "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": {
                    "dataType": {
                        "title": "Data type",
                        "enum": [
                            "news",
                            "dividends",
                            "both"
                        ],
                        "type": "string",
                        "description": "What to return. `news` = enriched per-ticker headlines (default). `dividends` = scorecard per ticker. `both` = both, merged.",
                        "default": "news"
                    },
                    "tickerSymbols": {
                        "title": "Ticker symbols",
                        "type": "array",
                        "description": "Tickers to fetch. Each triggers a real fetch of seekingalpha.com/symbol/<T>/news (~40 recent articles with author, date, comments).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Ceiling on total records returned across all tickers. Seeking Alpha's public news page shows 40 articles per ticker — this cap is for limiting multi-ticker batches (e.g. 5 tickers × 40 = 200), not a way to get more articles for one ticker. For deeper single-ticker coverage, pair with `onlyNewSinceLastRun: true` and schedule periodic runs.",
                        "default": 100
                    },
                    "analysisType": {
                        "title": "Content type",
                        "enum": [
                            "all",
                            "news",
                            "earnings",
                            "analysis"
                        ],
                        "type": "string",
                        "description": "Category filter on the NEWS feed. Full support: news, earnings. Best-effort: analysis. For dividend data, set dataType to 'dividends' or 'both' instead.",
                        "default": "all"
                    },
                    "signalFilter": {
                        "title": "Signal filter",
                        "enum": [
                            "any",
                            "bullish",
                            "bearish",
                            "neutral"
                        ],
                        "type": "string",
                        "description": "Keep only items whose derived signal matches. 'Any' disables the filter.",
                        "default": "any"
                    },
                    "includeRawHeadline": {
                        "title": "Include raw headline + source URL",
                        "type": "boolean",
                        "description": "Include the unmodified scraped headline and source URL alongside the enriched fields.",
                        "default": true
                    },
                    "onlyNewSinceLastRun": {
                        "title": "Only new since last run (delta feed)",
                        "type": "boolean",
                        "description": "Skip items whose content_hash was already emitted in a previous run of this actor. Turns the actor into an incremental change feed instead of a re-scrape.",
                        "default": false
                    },
                    "includeHistory": {
                        "title": "Include dividend history",
                        "type": "boolean",
                        "description": "Only applies when dataType is dividends or both. Adds the full past-payouts list to each record (37+ years for AAPL — back to 1989). Costs one extra fetch per ticker, so per-ticker cost doubles for the dividend page.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
