Export current Yahoo Finance quotes, company fundamentals, option contracts, and financial news for stocks, ETFs, crypto, forex, indices, funds, and futures.
Use one scheduled Actor run to feed market dashboards, watchlists, valuation screens, option analysis, news monitoring, spreadsheets, databases, APIs, or AI agents. No Yahoo account or API key is required.
What data can you export?
- Quote snapshots: market price, previous close, market cap, currency, exchange, and company name.
- Company fundamentals: sector, industry, website, employee count, business summary, valuation ratios, beta, revenue, gross profit, EBITDA, recommendation, and analyst target.
- Option chains: calls and puts with expiration, strike, bid, ask, last price, volume, open interest, implied volatility, and moneyness.
- Financial news: headline, publisher, publication time, article URL, and thumbnail.
- Provenance: requested symbol, record type, Yahoo Finance source URL, and scrape timestamp on every row.
Input example
{
"symbols": ["AAPL", "MSFT", "SPY"],
"dataTypes": ["quote", "fundamentals", "options", "news"],
"maxNewsPerSymbol": 10,
"maxOptionContractsPerSymbol": 100,
"maxRunSeconds": 240
}
Output examples
Quote row:
{
"recordType": "quote",
"symbol": "AAPL",
"companyName": "Apple Inc.",
"currency": "USD",
"exchange": "NMS",
"marketPrice": 319.97,
"previousClose": 318.45,
"marketCap": 4740000000000,
"sourceUrl": "https://finance.yahoo.com/quote/AAPL",
"scrapedAt": "2026-09-06T08:09:00.000Z"
}
Option row:
{
"recordType": "options",
"symbol": "AAPL",
"optionType": "call",
"expiration": "2026-09-11T00:00:00.000Z",
"contractSymbol": "AAPL260911C00320000",
"strike": 320,
"bid": 4.1,
"ask": 4.25,
"openInterest": 842,
"impliedVolatility": 0.24,
"inTheMoney": false,
"sourceUrl": "https://finance.yahoo.com/quote/AAPL/options",
"scrapedAt": "2026-09-06T08:09:00.000Z"
}
Input settings
| Setting | JSON key | Description |
|---|---|---|
| Yahoo Finance symbols | symbols |
Required list of 1–50 symbols such as AAPL, SPY, BTC-USD, EURUSD=X, ^GSPC, or GC=F. |
| Data types | dataTypes |
Choose quote, fundamentals, options, and/or news. |
| News limit | maxNewsPerSymbol |
Maximum 1–50 news rows per symbol. |
| Option limit | maxOptionContractsPerSymbol |
Maximum 1–1,000 contracts per call/put side for the nearest available expiration. |
| Run deadline | maxRunSeconds |
Shared 60–270 second deadline; completed rows are retained if the deadline is reached. |
Who is it for?
- Portfolio and investment teams maintaining recurring watchlists and market dashboards.
- Analysts and researchers comparing public fundamentals and near-term option liquidity.
- Data engineers loading finance snapshots into warehouses, spreadsheets, or alerting systems.
- Developers and AI teams supplying current public market context to applications and agents.
Common use cases
- Schedule a watchlist export before market open.
- Enrich an internal security master with public company profile and valuation fields.
- Compare near-term option liquidity and implied volatility.
- Monitor symbol-related headlines and route new articles through a webhook.
- Load current finance records into Google Sheets, BigQuery, Snowflake, or a BI dashboard.
- Give an AI agent fresh public market context before generating a report.
Tips and limits
- Use Yahoo Finance ticker notation exactly, including suffixes such as
BTC-USD,EURUSD=X, or^GSPC. - Start with one symbol and only the data types you need.
- Option output covers the nearest available expiration in the initial release.
- Fundamentals vary by asset class and reporting coverage.
- News is selected by Yahoo Finance for the requested symbol and can contain related-market coverage.
- Yahoo Finance can throttle public requests. Retry a failed run later rather than increasing concurrency.
- Source data can change after publication; store scrape timestamps with downstream records.
API usage
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/yahoo-finance-scraper').call({
symbols: ['AAPL', 'MSFT'],
dataTypes: ['quote', 'fundamentals', 'news'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/yahoo-finance-scraper').call(run_input={
'symbols': ['AAPL', 'MSFT'],
'dataTypes': ['quote', 'fundamentals', 'news'],
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~yahoo-finance-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"symbols":["AAPL","MSFT"],"dataTypes":["quote","fundamentals","news"]}'
Use with MCP and AI agents
Connect an MCP-compatible client to:
https://mcp.apify.com?tools=fetch_cat/yahoo-finance-scraper
Then ask: “Fetch the latest quote, fundamentals, and news for AAPL and MSFT.”
Support
Open an issue from the Actor's Issues tab and include the symbol, selected data types, and run URL. Do not include credentials or private account data.