Barchart Scraper
Pricing
from $0.045 / financial news
Barchart Scraper
Run one Barchart snapshot for financial news, stock and ETF quotes, unusual options activity, options chains, or ticker option flow. Get structured rows with news details, quote fields, contract terms, trade context, and coverage.
Pricing
from $0.045 / financial news
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
📊 Barchart snapshots for market research
Investors, analysts, market researchers, and developers can run one Barchart snapshot at a time. Get structured rows for financial news, stock and ETF quotes, unusual options activity, options chains, or ticker option flow. Use the rows to review news, compare quotes, and study contract and trade data.
Try these tasks
- Track Financial News for symbol-linked headlines, summaries, and source links.
- Pull Options Quotes for selected symbols with option quote fields.
- Review Unusual Options Activity across stocks, ETFs, and indices with activity measures.
- Compare Options Chain contracts across available expirations for selected symbols.
- Inspect Options Flow for intraday trades, prices, premiums, and trade codes.
- Choose calls and inspect Unusual Call Options Activity in a market-wide scan.
🧾 Barchart snapshot types
Each run writes structured dataset rows for the snapshot type you choose. Financial news rows include story details and links. Stock and ETF quote rows include price, change, volume, and valuation fields when Barchart supplies them. Options rows include contract terms, prices, activity data, and trade context. Coverage fields show available and returned counts, filters, and whether the snapshot stopped early.
First saved match
If the same source item matches more than one submitted value, the Actor saves the first eligible match and ignores later matches. For a financial news row, symbol is the first submitted symbol that found the story.
▶️ Run a Barchart snapshot
Run steps
- Choose one target: Financial news, Stock and ETF quotes, Unusual options activity, Options chain, or Ticker option flow.
- Add Symbols for the symbol-based targets. Unusual options activity scans the market and ignores Symbols.
- Add an expiration or activity filter when you need one.
- Set Actor Work Limit to stop after a chosen number of records, or leave it empty to return all available results until the source is exhausted.
- Start the run and open the defaultDataset URL from the run output.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
| target | string | Selects one snapshot type for the run. |
| assetClass | string | For Unusual options activity, selects stocks, ETFs, indices, or all. Other snapshot types ignore it. |
| expiration | date string | For Options chain, selects one calendar date. Leave it empty to include all available expirations. Other snapshot types ignore it. |
| symbols | array of strings | Provides one or more security symbols for Financial news, Stock and ETF quotes, Options chain, or Ticker option flow. Unusual options activity scans the market and ignores this field. |
| optionType | string | For Unusual options activity, Options chain, or Ticker option flow, selects calls, puts, or both. Financial news and Stock and ETF quotes ignore it. |
| minVolume | integer | For Unusual options activity or Options chain, keeps option records with at least this many contracts traded. Leave it empty for no volume threshold. Other snapshot types ignore it. |
| minPremium | number | For Unusual options activity or Options chain, keeps option records with at least this premium. Leave it empty for no premium threshold. Other snapshot types ignore it. |
| minVolumeOpenInterestRatio | number | For Unusual options activity or Options chain, keeps option records with at least this volume-to-open-interest ratio. Leave it empty for no ratio threshold. Other snapshot types ignore it. |
| maxItems | integer | Stops after this many records for any snapshot type. Leave it empty to return all available results until the source is exhausted. |
Default input
The hosted default input for a successful QA run is:
{"assetClass": "all","optionType": "both"}
Choose target for every run. Add symbols for a symbol-based snapshot. Fields that do not apply to the selected snapshot type are ignored.
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
| defaultDataset | string | URL for the rows saved in the default dataset. |
Each dataset row has a recordType value for its snapshot shape. The coverage object shows how many matching records were available, how many were returned, which filters were applied, and whether the run stopped before the source was exhausted.
Financial news rows
| Field | Type | What it does |
|---|---|---|
| recordType | string | Always financialNews for this shape. |
| symbol | string | First submitted symbol that found this story. |
| storyId | string | Stable Barchart ID for the story. |
| headline | string | Headline of the financial news story. |
| publishedAt | date-time string | Time when Barchart published the story. |
| provider | string | Provider that supplied the story. |
| summary | string | Short story summary when Barchart supplies one. |
| sourceUrl | string | Source page for the story. |
| shareUrl | string | Barchart page used to share the story. |
| retrievedAt | date-time string | Time when this row was retrieved. |
| coverage.availableCount | integer | Matching stories available when the snapshot was read. |
| coverage.returnedCount | integer | Matching stories returned in this run. |
| coverage.truncated | boolean | True when the run stopped before all available stories were returned. |
| coverage.appliedFilters.target | string | Snapshot type used for this run. |
| coverage.appliedFilters.symbols | string[] | Submitted symbols used for this snapshot. |
| coverage.appliedFilters.assetClass | string | Asset class setting recorded for this snapshot. |
| coverage.appliedFilters.optionType | string | Option type setting recorded for this snapshot. |
Example financial news row
{"recordType": "financialNews","symbol": "AAPL","storyId": "4340050","headline": "Apple Was Always 1 Step Behind in AI. In Chipmaking, It’s Now 1 Step Ahead.","publishedAt": "2026-08-29T20:30:02.000Z","provider": "Barchart","sourceUrl": "https://barchartjson.websol.barchart.com/?module=jsonBCNews&storyid=4340050","shareUrl": "https://www.barchart.com/share/news/4340050","retrievedAt": "2026-08-30T08:15:36.606Z","summary": "Apple beat rivals to a 2nm chip with the M6, betting AI's future runs on your device rather than the cloud.","coverage": {"availableCount": 5,"returnedCount": 1,"truncated": false,"appliedFilters": {"target": "financial-news","symbols": ["AAPL"],"assetClass": "all","optionType": "both"}}}
Stock and ETF quote rows
| Field | Type | What it does |
|---|---|---|
| recordType | string | Always stockEtfQuote for this shape. |
| symbol | string | Security symbol for the quote. |
| assetClass | string | Underlying group, such as stocks or ETFs. |
| name | string | Name of the stock or ETF. |
| exchange | string | Exchange where the stock or ETF is listed. |
| lastPrice | number | Latest quoted price. |
| priceChange | number | Change from the prior quote. |
| priceChangePercent | number | Percent change from the prior quote. |
| volume | integer | Number of shares traded. |
| averageVolume | integer | Average number of shares traded. |
| marketCap | number | Market capitalization. |
| peRatio | number | Price-to-earnings ratio. |
| priceToBook | number | Price-to-book ratio. |
| priceToSales | number | Price-to-sales ratio. |
| dividendRate | number | Yearly dividend amount per share. |
| dividendYield | number | Dividend yield. |
| tradeTime | date-time string | Time of the quote. |
| sourceUrl | string | Direct source quote page. |
| coverage.availableCount | integer | Matching quotes available when the snapshot was read. |
| coverage.returnedCount | integer | Matching quotes returned in this run. |
| coverage.truncated | boolean | True when the run stopped before all available quotes were returned. |
| coverage.appliedFilters.target | string | Snapshot type used for this run. |
| coverage.appliedFilters.symbols | string[] | Submitted symbols used for this snapshot. |
| coverage.appliedFilters.assetClass | string | Asset class setting recorded for this snapshot. |
| coverage.appliedFilters.optionType | string | Option type setting recorded for this snapshot. |
Example stock and ETF quote row
{"recordType": "stockEtfQuote","symbol": "AAPL","assetClass": "stocks","name": "Apple Inc","exchange": "NASDAQ","lastPrice": 319.7,"priceChange": 5.12,"priceChangePercent": 0.0163,"volume": 38649398,"tradeTime": "2026-08-28T22:55:00.000Z","sourceUrl": "https://www.barchart.com/stocks/quotes/AAPL/overview","averageVolume": 43058270,"marketCap": 4665759360000,"peRatio": 36.54,"priceToBook": 42.700001,"priceToSales": 11.03187,"dividendRate": 1.08,"dividendYield": 0.0034,"coverage": {"availableCount": 1,"returnedCount": 1,"truncated": false,"appliedFilters": {"target": "stock-etf-quote","symbols": ["AAPL"],"assetClass": "all","optionType": "both"}}}
Unusual options activity rows
| Field | Type | What it does |
|---|---|---|
| recordType | string | Always unusualOptionsActivity for this shape. |
| symbol | string | Security symbol for the activity. |
| assetClass | string | Underlying group: stocks, ETFs, or indices. |
| contractSymbol | string | Stable symbol for the option contract. |
| expirationDate | date string | Date when the contract expires. |
| strikePrice | number | Price at which the option can be exercised. |
| optionType | string | Call or put. |
| bid | number | Current bid price. |
| ask | number | Current ask price. |
| lastPrice | number | Latest quoted or traded price. |
| volume | integer | Number of option contracts traded. |
| openInterest | integer | Number of open option contracts. |
| premium | number | Total premium value tied to the activity. |
| volumeOpenInterestRatio | number | Volume divided by open interest. |
| impliedVolatility | number | Implied volatility value. |
| weightedVolatility | number | Weighted volatility value. |
| delta | number | Option delta reported by Barchart. |
| moneyness | string | In-the-money, at-the-money, or out-of-the-money state. |
| underlyingPrice | number | Latest price of the underlying security. |
| sentiment | string | Option sentiment when Barchart provides it. |
| retrievedAt | date-time string | Time when this row was retrieved. |
| coverage.availableCount | integer | Matching contracts available when the snapshot was read. |
| coverage.returnedCount | integer | Contracts returned in this run. |
| coverage.truncated | boolean | True when the run stopped before all available contracts were returned. |
| coverage.appliedFilters.target | string | Snapshot type used for this run. |
| coverage.appliedFilters.assetClass | string | Asset class filter used for this snapshot. |
| coverage.appliedFilters.optionType | string | Call, put, or both setting used for this snapshot. |
| coverage.appliedFilters.minVolume | integer | Minimum volume filter used for this snapshot. |
| coverage.appliedFilters.minPremium | number | Minimum premium filter used for this snapshot. |
| coverage.appliedFilters.minVolumeOpenInterestRatio | number | Minimum volume-to-open-interest ratio filter used for this snapshot. |
Options chain rows
| Field | Type | What it does |
|---|---|---|
| recordType | string | Always optionsChain for this shape. |
| symbol | string | Security symbol for the contract. |
| assetClass | string | Underlying group: stocks, ETFs, or indices. |
| contractSymbol | string | Stable symbol for the option contract. |
| expirationDate | date string | Date when the contract expires. |
| strikePrice | number | Price at which the option can be exercised. |
| optionType | string | Call or put. |
| bid | number | Current bid price. |
| ask | number | Current ask price. |
| lastPrice | number | Latest quoted or traded price. |
| volume | integer | Number of option contracts traded. |
| openInterest | integer | Number of open option contracts. |
| premium | number | Total premium value tied to the contract. |
| volumeOpenInterestRatio | number | Volume divided by open interest. |
| impliedVolatility | number | Implied volatility value. |
| weightedVolatility | number | Weighted volatility value. |
| delta | number | Option delta reported by Barchart. |
| moneyness | string | In-the-money, at-the-money, or out-of-the-money state. |
| underlyingPrice | number | Latest price of the underlying security. |
| sentiment | string | Option sentiment when Barchart provides it. |
| retrievedAt | date-time string | Time when this row was retrieved. |
| coverage.availableCount | integer | Matching contracts available when the snapshot was read. |
| coverage.returnedCount | integer | Contracts returned in this run. |
| coverage.truncated | boolean | True when the run stopped before all available contracts were returned. |
| coverage.appliedFilters.target | string | Snapshot type used for this run. |
| coverage.appliedFilters.symbols | string[] | Submitted symbols used for this snapshot. |
| coverage.appliedFilters.assetClass | string | Asset class setting recorded for this snapshot. |
| coverage.appliedFilters.optionType | string | Call, put, or both setting used for this snapshot. |
| coverage.appliedFilters.expirationDate | date string | Optional expiration filter used for this snapshot. |
| coverage.appliedFilters.minVolume | integer | Minimum volume filter used for this snapshot. |
| coverage.appliedFilters.minPremium | number | Minimum premium filter used for this snapshot. |
| coverage.appliedFilters.minVolumeOpenInterestRatio | number | Minimum volume-to-open-interest ratio filter used for this snapshot. |
Ticker option-flow rows
| Field | Type | What it does |
|---|---|---|
| recordType | string | Always tickerOptionFlow for this shape. |
| symbol | string | Security symbol for the trade. |
| assetClass | string | Underlying group: stocks, ETFs, or indices. |
| contractSymbol | string | Stable symbol for the option contract. |
| expirationDate | date string | Date when the contract expires. |
| strikePrice | number | Price at which the option can be exercised. |
| optionType | string | Call or put. |
| tradePrice | number | Price of the option-flow trade. |
| bid | number | Bid price at the trade time. |
| ask | number | Ask price at the trade time. |
| volume | integer | Number of option contracts traded. |
| openInterest | integer | Number of open option contracts. |
| premium | number | Total premium value tied to the trade. |
| tradeTime | date-time string | Time of the option-flow trade. |
| tradeConditionCodes | string[] | Source codes that describe the trade. |
| underlyingPrice | number | Latest price of the security behind the option. |
| underlyingChange | number | Price change of the security behind the option. |
| underlyingChangePercent | number | Percent change of the security behind the option. |
| delta | number | Option delta when Barchart provides it. |
| sentiment | string | Option sentiment when Barchart provides it. |
| retrievedAt | date-time string | Time when this row was retrieved. |
| coverage.availableCount | integer | Matching trades available when the snapshot was read. |
| coverage.returnedCount | integer | Trades returned in this run. |
| coverage.truncated | boolean | True when the run stopped before all available trades were returned. |
| coverage.appliedFilters.target | string | Snapshot type used for this run. |
| coverage.appliedFilters.symbols | string[] | Submitted symbols used for this snapshot. |
| coverage.appliedFilters.assetClass | string | Asset class setting recorded for this snapshot. |
| coverage.appliedFilters.optionType | string | Call, put, or both setting used for this snapshot. |
💳 Pricing
How charges work
Pricing is per snapshot event, not per returned row. Check the pricing panel for the current tier and price.
| Snapshot type | Buyer-facing event | Price |
|---|---|---|
| Financial news | Financial news | $0.045 |
| Stock and ETF quotes | Stock/ETF quote | $0.0045 to $0.0027 by tier |
| Unusual options activity | Unusual activity | $1.35 |
| Options chain | Options chain | $1.35 |
| Ticker option flow | Option flow | $1.35 |
🔌 Integrations
Dataset access
Open the defaultDataset URL after a run, export the structured rows as JSON, CSV, or another supported dataset format, or read them through the Apify API. Use the dataset rows in your review or code workflow.
❓ FAQ
Can I get stock and ETF quotes from this Actor?
Yes. Choose Stock and ETF quotes, then add one or more symbols. Quote rows include price, change, volume, trade time, source URL, and available valuation or dividend fields.
How do I scan unusual options activity?
Choose Unusual options activity and select an asset class. You can also choose calls, puts, or both and set volume, premium, or volume-to-open-interest-ratio filters. Symbols are ignored for this market-wide scan.
What happens when I leave Actor Work Limit empty?
The Actor returns all available results until the source is exhausted. A set limit can stop the run earlier, and coverage.truncated shows when it stopped before all available results were returned.
What if I need more than one snapshot type?
Choose one target per run. Start another run for a different snapshot type.
How can I tell if a snapshot was complete?
Check coverage.availableCount, coverage.returnedCount, coverage.truncated, and coverage.appliedFilters in the dataset rows.
What happens if the same story matches more than one symbol?
The Actor saves the first eligible match and ignores later matches. For a financial news row, symbol shows the first submitted symbol that found the story.
Why can a field be missing?
Barchart may not supply every optional field for every result. The Actor leaves unavailable source values out instead of making them up.
Is the quote data exchange real time?
Quote timing follows Barchart's available public feed, which can be delayed. This Actor does not promise exchange-real-time data.
Do I need Barchart credentials or an API key?
No. The Actor does not ask for buyer-supplied Barchart login credentials or API keys. It reads publicly reachable Barchart data.
Does this provide historical backfills or trading advice?
No. Each run is a point-in-time snapshot. The Actor returns source data for analysis and does not give investment advice or place trades.
Does this replace a stock screener?
No. This Actor focuses on Barchart financial news, stock and ETF quotes, and options snapshots, not a general stock screener.
📝 Changelog
0.1: Stock and ETF quote snapshots
- Add stock and ETF quote snapshots with price, change, volume, valuation, and dividend details, alongside improved option snapshot filtering.
v0.0
- Pull financial news and market-wide or symbol-specific options snapshots from Barchart, including unusual options activity, options chains, stock options flow, and unusual call activity, with structured dataset output for analysis.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Morningstar Scraper: Compare public stock and ETF data with fund research, ratings, fees, assets, and holdings.
- MarketWatch Scraper: Collect financial articles and stock quote data for news research.
- Barchart News Scraper: Collect Barchart financial news when you need a news-only workflow.
- Barchart Stock Quotes Scraper: Pull stock and ETF quote fields for symbol lists.
- Options Flow & Unusual Activity: Scan Barchart unusual activity, options chains, and intraday flow.
Made with ❤️ by Maxime Dupré