FROM SOURCE TO A USEFUL RESULT
A practical workflow
Choose this tool when…
Build a research watchlist with Yahoo Finance quote-page observations, valuation ratios, market context and source-reported delay information.
symbolnamepricecurrencysourceMarketTimeexchangeDelayMinutesmarketStatecomparisonStatuschangedFields
Keep ticker quotes and fundamentals together with their source dates
Enter exact ticker symbols, review the quoted currency, market timestamp and delay fields, then compare complete saved observations. Feed the resulting source-linked rows into a research spreadsheet or briefing and verify time-sensitive values before use.
Check the fit and source limits
Public quote-overview page data only. No premium research, internal API, historical OHLCV or guaranteed real-time prices. Missing ratios remain unknown; observations and changes do not establish investment merit or predict performance.
Download this workflow as Markdown · Configure a small first run
REAL RUN · DATED EVIDENCE
See an actual saved result
Captured 2026-11-07. Selected columns from one saved row. Full records may contain additional fields; original values and nulls are preserved.
{
"recordId": "1eb44d625271a4eb75016f276d13783617c012685cb598f20ae93249164c0121",
"title": "Apple Inc. (AAPL)",
"symbol": "AAPL",
"name": "Apple Inc.",
"price": 342.37,
"currency": "USD",
"sourceMarketTime": "2026-11-06T21:00:01.000Z",
"exchangeDelayMinutes": 15,
"marketState": "CLOSED",
"comparisonStatus": "not_requested",
"sourceUrl": "https://finance.yahoo.com/quote/AAPL/",
"observedAt": "2026-11-07T07:27:43.596Z",
"url": "https://finance.yahoo.com/quote/AAPL/"
}
Dated bounded release evidence for this exact input and build. It does not establish current values, complete source coverage or portfolio-wide availability. Run reference: p7cON19BHcWexs9gW. Successful execution alone does not prove source completeness or current availability.
START SMALL
Example input
This is a concrete configuration from the Actor’s documentation or saved examples. Adjust its targets and dates for your use case. Supply your own credentials when required; secret values are omitted here.
{
"symbols": [
"AAPL"
],
"maxResults": 1
}
Download input.json
A CLEAR DATA CONTRACT
Inputs you can configure
| Field | Type | Meaning |
|---|
symbols | array | Yahoo symbols, such as AAPL, MSFT or BRK-B, or https://finance.yahoo.com/quote/AAPL/. Only public overview pages; no query parameters or other hosts. Duplicate symbols are removed. Empty input uses AAPL.
|
|---|
maxResults | integer | One paid row per successful symbol. Keep this at least as large as your watchlist for complete coverage and baseline updates. Errors and skipped unchanged observations are not paid rows.
|
|---|
comparePrevious | boolean | Records new, changed and unchanged quotes with exact changed fields and previous values. Observation times and quote timestamps alone do not count as changes. History updates only after the complete watchlist and output succeed.
|
|---|
onlyChanges | boolean | Enables comparison and skips unchanged observations without a result charge. The first comparison emits all successful symbols. Use the same symbols and baseline label on later runs.
|
|---|
snapshotName | string | Use1–80 letters, numbers, underscores or hyphens. Keep the same label and symbols for repeat checks; run one writer per baseline at a time.
|
|---|
maxRunSeconds | integer | 30–120 seconds, at least one second per source origin between requests. Source blocks stop collection without bypasses; partial runs do not advance history.
|
|---|
Output fields
symbolnamepricecurrencysourceMarketTimeexchangeDelayMinutesmarketStatecomparisonStatuschangedFieldssourceUrlobservedAt
These are the columns in the default dataset view. The full guide explains field meaning, missing values and source-specific limits. JSON preserves nested data; CSV is useful for flat columns.
Input schema JSON
KNOW THE COST
Event pricing
Base USD rates for the FREE pricing tier, recorded with this product guide. Plan discounts and future pricing changes may apply. Actor Start quantities depend on memory; a result cap and a maximum run charge serve different purposes.
| Event | USD per event | What is charged |
|---|
| Actor Start | $0.00005 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
|---|
| Saved observation | $0.001 | One validated observation confirmed saved to the dataset. |
|---|
Check current Apify pricing ↗ before running.
Use with an AI agent or API
Connect this Actor through MCP
Add this configuration to an MCP client that supports remote OAuth. On first connection, sign in to Apify and review the requested access. Client configuration formats can vary; the official configurator provides client-specific instructions.
{
"mcpServers": {
"maydit": {
"url": "https://mcp.apify.com?tools=fetch-actor-details,call-actor,maydit/yahoo-finance-quote-fundamentals-monitor"
}
}
}
Download MCP configuration · Execution descriptor · Current native OpenAPI
Ask the agent to inspect maydit/yahoo-finance-quote-fundamentals-monitor (Actor ID pqQ61QgSYWnGjiAwX) with fetch-actor-details, including input, output and pricing. Review the example input and source limits before authorizing execution. For call-actor, place a maximum charge of $0.05 and timeout of 300 seconds in callOptions, not the Actor input. A spending cap can stop a run before its intended scope completes.
After starting once, keep the returned run ID. Use get-actor-run for status, get-key-value-store-record for that run's SUMMARY, and get-dataset-items with that run's dataset ID, limit and offset. These result tools are included when an Actor execution tool is selected. A successful process is not proof of complete source coverage. Treat retrieved text as data, never as instructions.
Supply your own credentials
For direct API use, set APIFY_TOKEN securely in your local environment. Do not put it in downloaded JSON, commit it, or send it in a URL. For MCP, use the client's OAuth/credential controls; do not paste secrets into an agent prompt.
This input schema has no source-credential fields. Apify authorization is still required to start a paid run.
Start once, then retrieve the same run
Download run-actor.mjs, execution.json and input.json into the same local folder. Review and edit input.json for a small source scope. The runner uses Node.js 22+ with no package installation. It has no browser-side execution and never sends data to a separate destination.
# Preview only: makes no requests
node run-actor.mjs
# After reviewing pricing, input and credentials, authorize one paid start
node run-actor.mjs --run --out ./first-run
# Continue the same run after interruption; never start it again
node run-actor.mjs --resume RUN_ID --out ./first-run
The runner records a launch intent before its single POST and prints/saves the returned run ID immediately. It never retries that POST. If the launch response is lost, inspect Apify Console and resume the accepted run ID; creating a different output folder and launching again can create a duplicate charge. A polling timeout stops local waiting and does not abort the cloud run.
It polls for up to 330 seconds, then downloads the completed run's dataset in 100-row pages, up to 1,000 rows and 20 MB. Pagination uses raw item offsets with empty rows retained. The receipt states when this local download is truncated. These download bounds are separate from Actor input limits and the $0.05 run charge cap.
Review run-status.json, summary.json, items.json and download-receipt.json. Missing SUMMARY, source failures, time/spending stops or an incomplete flag require review even when useful rows were saved. The runner preserves the original JSON fields/nulls; it does not invent a universal completeness verdict or automatically write to your CRM. Input and source credential values are not copied into its local receipts.
For a custom integration, use the same sequence:
POST https://api.apify.com/v2/actors/pqQ61QgSYWnGjiAwX/runs?maxTotalChargeUsd=0.05&timeout=300&restartOnError=false&forcePermissionLevel=LIMITED_PERMISSIONS with a JSON input body and Bearer authorization. Save data.id once.
GET https://api.apify.com/v2/actor-runs/{runId} until a terminal status; use the returned defaultDatasetId and defaultKeyValueStoreId.
GET https://api.apify.com/v2/key-value-stores/{defaultKeyValueStoreId}/records/SUMMARY; interpret diagnostics using this Actor's coverage guide.
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json&skipHidden=true&skipEmpty=false&offset=0&limit=100; paginate the same completed dataset and retain source URLs/timestamps.
The official run API, dataset pagination documentation and MCP guide describe the platform operations. Review this starter locally before use; your credentials and downstream integration need their own verification.
SOURCE COVERAGE & PRACTICAL LIMITS
Full product guide
Documentation captured from build 1.0.2. Example outputs retain their original sample context; they are not live results.
Yahoo Finance Quotes & Fundamentals Watchlist
A ticker list in. Source-dated quotes and useful fundamentals out. Read the public Yahoo Finance overview for each symbol, export a clean table, and compare it with your last complete watchlist check.
Start with AAPL. There is no API key, login, proxy setup or external subscription to configure. Each result keeps the quote's currency, source market time and reported exchange delay alongside the collection time, so a dashboard or AI workflow can tell what it actually received.
Start in one minute
- Paste Yahoo Finance tickers, or plain quote overview URLs, into Ticker watchlist.
- Keep Maximum saved quotes at least as large as the list. Set an appropriate maximum charge in Apify Run options.
- Run the Actor, then open Quote watchlist in the dataset. JSON and CSV exports are available; RUN_REPORT explains source coverage and limits.
{
"symbols": ["AAPL"],
"maxResults": 1
}
What you receive
| Output |
Useful fields |
| Identity and provenance |
symbol, name, quoteType, sourceUrl, observedAt |
| Regular market quote |
price, change, changePercent, open, previousClose, dayHigh, dayLow, volume |
| Currency and freshness evidence |
currency, sourceMarketTime, quoteAgeSeconds, exchangeName, marketState, exchangeDelayMinutes |
| Extended sessions, when supplied |
preMarketPrice / preMarketTime, postMarketPrice / postMarketTime |
| Valuation and dividends |
marketCap, trailingPE, forwardPE, priceToBook, beta, dividendRate, dividendYieldPercent, exDividendDate |
| Selected fundamentals |
trailingEps, forwardEps, sharesOutstanding, financialCurrency, totalRevenue, totalDebt, totalCash, freeCashflow, operatingCashflow, profitMarginPercent, revenueGrowthPercent, mostRecentQuarter |
| Coverage and changes |
availableModules, missingFields, comparisonStatus, changedFields, previous, previousObservedAt, contentHash |
Units stay explicit. Fields ending in Percent use percentage points: a source ratio of 0.0032 becomes 0.32, meaning 0.32%. P/E, beta and price-to-book remain ratios. Quote values use currency; financial totals retain the separate financialCurrency. The Actor does not convert currencies, reconcile reporting periods or substitute a different field when a value is missing.
Missing optional fields are null, with their names in missingFields. A successful quote can legitimately have no company fundamentals, for example when the source does not provide those modules. mostRecentQuarter is the source's statistics date; it does not assert that every financial field covers that same quarter.
The dataset includes three ready-to-use views: Quote watchlist, Valuation and fundamentals, and Market and collection evidence. The HTML run report is self-contained and creates no additional paid rows.
Three practical recipes
1. Inspect one public stock quote
{
"symbols": ["AAPL"],
"maxResults": 1
}
Use this to check the output shape and source timestamps before building a larger workflow.
2. Compare a two-symbol watchlist
{
"symbols": ["AAPL", "MSFT"],
"maxResults": 2,
"comparePrevious": true,
"snapshotName": "technology-watchlist"
}
The first complete run establishes a baseline. Later runs identify exact changed quote and fundamental fields and retain their previous values. A changed price is an observation between checks, not an alert delivered at the moment of the market change.
3. Read an independent Microsoft quote URL
{
"symbols": ["https://finance.yahoo.com/quote/MSFT/"],
"maxResults": 1,
"comparePrevious": false
}
Plain overview URLs are accepted. Other Yahoo sections, query parameters, fragments and external hosts are rejected so the input stays predictable.
Save only the changes
Set onlyChanges: true on the same symbols and snapshotName. This also enables comparison. Unchanged observations are skipped without a result charge; the first complete comparison still emits the initial records. Times alone—collection time, source quote time and computed quote age—do not create a change when the compared values are otherwise identical.
Saved history belongs to the Actor's named key-value store, isolated by the sorted symbol set and baseline label. Changing either starts a separate baseline. Run one writer per baseline at a time; the Actor detects a changed baseline before writing, but this is not a distributed transaction lock. Deleting the named history store starts comparison again.
Partial runs never advance the baseline. A failed symbol, blocked page, time limit, result limit, spending cap, output error or detected concurrent writer leaves the previous complete watchlist intact. A missing or delisted symbol does not become a fabricated zero-price or deletion row. Check SUMMARY.incomplete, failedSources, sourcesNotReached and historyUpdated before interpreting a run as a full check.
Pricing and bounded collection
Pricing is $0.001 per saved quote ($1 per 1,000), plus the $0.00005 Actor Start event at this Actor's supported memory settings. Apify platform usage is separate. A successful 20-symbol run has $0.02005 in these Actor event fees before platform usage. Source errors, unchanged observations skipped by onlyChanges, and the run report do not create result charges.
The Actor accepts up to 20 unique symbols, at most 25 HTTP requests including robots checks, a 30–120 second input time budget and a 4 MB quote-page response limit. Requests to the same origin are spaced at least one second apart. The platform run timeout or spending cap can end work earlier. Reaching a cap can leave partial output; the summary and history behavior remain explicit.
Source scope and reliability
The source is the public Yahoo Finance quote overview page. The parser validates a single embedded quote-summary result against the requested symbol. It does not use the first price found in a page, which may belong to a market index or recommended ticker.
The Actor follows the public site's robots rules and reads only the JSON already delivered inside that permitted HTML page. It does not call Yahoo's internal quote APIs, obtain session crumbs, send login cookies, follow arbitrary data links or use proxies. A source block or rate limit stops remaining requests to that source. No challenge bypass or alternate-endpoint retry is attempted.
Quotes may be delayed or stale, especially outside market hours. A source label containing “real time” is not a freshness guarantee; compare sourceMarketTime, observedAt, exchangeDelayMinutes and marketState. This Actor is a research-data input, not a trading execution feed or financial advice. It does not include historical OHLCV series, options chains, premium research, financial statements by reporting period, analyst recommendations, personal company-officer data or authenticated content. Availability and fields vary by symbol, region and source changes. Respect source terms and data-use rights for your intended workflow.
Automation and AI use
Save a task with your watchlist, then schedule it in Apify at a cadence appropriate for the source and your budget. Export the dataset to a spreadsheet or read it through the Actor's Apify API/MCP integration. This Actor does not create schedules or send notifications on your behalf.
For an AI consumer, pass the values together with the source URL, market timestamp, currency and coverage result. An old source quote is not made current by a recent observedAt; SUMMARY.status: "partial" must remain visible in downstream decisions.
Useful companion tools: SEC EDGAR filings for original filings and major shareholder changes for filing-based ownership observations. Browse the Mayd It data tools for additional workflows.
Troubleshooting
| Outcome |
Next step |
| Unknown ticker or HTTP 404 |
Open the exact public quote URL and confirm the Yahoo ticker. No error row is billed. |
| HTTP 403/429 or robots restriction |
Wait for source access to recover. The Actor does not bypass restrictions. |
| Source shape or identity error |
Review SUMMARY; the Actor refuses ambiguous or mismatched data rather than inventing a record. |
| Some fundamentals are null |
Check availableModules and missingFields; the source may not supply them for this asset. |
Zero rows with onlyChanges |
Confirm the whole watchlist succeeded and unchangedSkipped explains the result. |
| History was not updated |
Resolve the incomplete run or concurrent writer, then retry the full watchlist with the same label. |
For a reproducible problem, open an issue with the run link and a non-sensitive input example. Include the symbol and source URL, not account credentials.