# Cheapest TradingView Scraper (`serp.cheap.ofc/cheapest-tradingview-scraper`) Actor

Scrape TradingView at the lowest price per result: stock/crypto/forex screener (19k+ US stocks), 200+ fundamentals, quotes, per-symbol news, Buy/Sell technical ratings, community ideas & Minds, indicators and economic calendar. Pay per result — no start fee, no subscription.

- **URL**: https://apify.com/serp.cheap.ofc/cheapest-tradingview-scraper.md
- **Developed by:** [serp.cheap](https://apify.com/serp.cheap.ofc) (community)
- **Categories:** Integrations, Other, News
- **Stats:** 2 total users, 1 monthly users, 95.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 screener rows

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## Cheapest TradingView Scraper — screener, quotes, news, signals & more

Scrape **TradingView** data at the **lowest price per result on Apify** — pay-per-result only,
**no run-start fee, no subscription, no minimum spend**. Built on TradingView's public data
(no login required), so it's fast, stable and cheap: 10,000 screener rows cost **$10
with the market leader — $1 here**.

Extract the **stock screener** (19,000+ US stocks, plus Brazil, UK, Germany, India, crypto, forex
and 40+ other markets), **200+ fundamental fields** per symbol, **real-time quotes**, **per-symbol
news headlines**, **technical-analysis Buy/Sell ratings** on 10 timeframes, **community trade ideas
and Minds posts**, **Pine Script indicators** and the **economic calendar** — all from one Actor.

### What you can scrape

| Mode | What you get |
|------|--------------|
| 🏆 `screener` | Bulk market data: every symbol in a market with your chosen columns. 19k+ US stocks, whole crypto market, forex, indices, futures. |
| 💹 `quotes` | Deep data for specific symbols — any of TradingView's 200+ fields (P/E, EPS, margins, cash flow, RSI…). |
| 🔍 `search` | Resolve company names / free text into TradingView symbols. |
| 📅 `calendar` | Economic-calendar events (GDP, CPI, rate decisions) by date range and currency. |
| 💡 `ideas` | Community trade ideas — global feed or per symbol. |
| 📈 `indicators` | Community Pine Script indicators & strategies, ranked. |
| 📰 `news` | News headlines **per symbol** — up to ~200 per ticker with source, urgency and link. |
| 💬 `minds` | TradingView **Minds** — short community posts per symbol, with likes and comment counts. |
| 🚦 `signals` | TradingView's technical-analysis gauge per symbol: **Strong Buy → Strong Sell** for Summary, Moving Averages and Oscillators, on 10 timeframes (1m…1M), plus raw RSI, MACD, Stochastics, ADX, CCI. |
| 🩺 `selftest` | Validates every endpoint above, free. Schedule it as a health check. |

### Why this one

- 💰 **Cheapest per result** — up to **50× cheaper** than the leading TradingView scraper
  (see pricing below). No start fee: a 10-row test run costs ~$0.01, not $0.05 + fees.
- ⚡ **Fast** — 500 screener rows in ~0.6 s. Full US market in under a minute.
- 🌍 **Every market TradingView covers** — `america`, `brazil`, `uk`, `germany`, `india`,
  `crypto`, `forex`, `futures` and 40+ more.
- 🧱 **No login, no cookies** — only public endpoints; nothing to expire or get banned.
- 🔁 **Rotating proxies per request** (Apify Proxy by default) — safe at high volume.
- 🩺 **Self-monitoring** — every run validates all endpoint schemas, so breakages are caught
  and fixed fast.

### Example input

Top 500 US stocks by market cap, with valuation fields:

```json
{
    "mode": "screener",
    "market": "america",
    "columnPreset": "valuation",
    "maxItems": 500
}
```

Technical Buy/Sell signals for your watchlist on two timeframes:

```json
{
    "mode": "signals",
    "symbols": ["NASDAQ:AAPL", "NASDAQ:NVDA", "BINANCE:BTCUSDT"],
    "signalsTimeframes": ["1D", "1W"]
}
```

News for a ticker / Minds / whole crypto market / economic calendar:

```json
{ "mode": "news", "symbols": ["NASDAQ:TSLA"], "maxItems": 100 }
{ "mode": "minds", "symbols": ["NASDAQ:AAPL"], "maxItems": 50 }
{ "mode": "screener", "market": "crypto", "sortBy": "24h_vol_cmc", "maxItems": 0 }
{ "mode": "calendar", "calendarCountries": ["USD", "EUR", "BRL"], "calendarFrom": "2026-07-15", "calendarTo": "2026-07-22" }
```

### Example output

`screener` (one item per symbol):

```json
{
    "symbol": "NASDAQ:NVDA",
    "name": "NVDA",
    "description": "NVIDIA Corporation",
    "close": 211.65,
    "change": -0.07,
    "volume": 16067969,
    "market_cap_basic": 5121930073800,
    "price_earnings_ttm": 32.41,
    "sector": "Electronic Technology",
    "Perf.YTD": 11.49,
    "Recommend.All": 0.31
}
```

`signals` (one item per symbol × timeframe):

```json
{
    "symbol": "NASDAQ:AAPL",
    "timeframe": "1W",
    "summaryRating": "Strong Buy",
    "maRating": "Strong Buy",
    "oscillatorsRating": "Neutral",
    "RSI": 66.4,
    "MACD.macd": 6.03,
    "ADX": 23.6
}
```

`news` (one item per headline):

```json
{
    "querySymbol": "NASDAQ:AAPL",
    "title": "Apple Wins Dismissal of iCloud Lawsuit",
    "source": "GuruFocus",
    "published": 1784124502,
    "urgency": 2,
    "link": "https://…"
}
```

### Column presets (screener & quotes)

Pull rich fundamentals without memorizing field names — or pass your own `columns` list
(200+ fields supported).

| Preset | Includes |
|--------|----------|
| `overview` (default) | price, change, volume, market cap, P/E, EPS, sector, performance, TA rating |
| `performance` | Perf W/1M/3M/6M/YTD/Y/5Y, volatility, beta, 1M high/low |
| `valuation` | market cap, P/E, P/S, P/B, P/FCF, EV, EV/EBITDA |
| `dividends` | dividend yield, payout ratio, DPS, dividend streak |
| `profitability` | gross/operating/net margin, ROE, ROA, ROIC |
| `income_statement` | revenue, gross profit, operating income, net income, EBITDA, EPS |
| `balance_sheet` | assets, debt, liabilities, equity, cash, D/E, current & quick ratio |
| `cash_flow` | operating/investing/financing cash flow, FCF, capex |
| `technicals` | RSI, momentum, MACD, Stochastics, CCI, ADX, ATR, Buy/Sell ratings |

### Pricing — pay only for what you pull

One price per data type, charged per item. **No start fee. No subscription. No upfront credits.**

| Data type | Price per item | 1,000 items |
|-----------|----------------|-------------|
| Screener row | $0.001 | $1.00 |
| Search result | $0.0005 | $0.50 |
| Symbol quote | $0.0015 | $1.50 |
| Calendar event | $0.001 | $1.00 |
| News headline | $0.001 | $1.00 |
| Technical signal (symbol × timeframe) | $0.0015 | $1.50 |
| Minds post | $0.002 | $2.00 |
| Community idea | $0.002 | $2.00 |
| Indicator / script | $0.002 | $2.00 |

Nothing costs more than **$2 per 1,000** — and most of it is $1 or less.

Compare: the most-installed TradingView screener actor charges **$0.05/stock** at entry tier
($50 per 1,000) and only reaches $0.00945 at high committed volume. Here it's **$1 per 1,000,
from the first row, with zero commitment**.

### Use cases

- **Quant screening** — filter 19k+ stocks by any fundamental/technical combination daily.
- **Trading bots & alerts** — poll `signals` for rating flips on your watchlist.
- **Market dashboards** — feed BI tools with fresh screener + news data on a schedule.
- **Sentiment analysis** — mine `ideas` and `minds` text per ticker.
- **Macro monitoring** — pipe the economic calendar into Slack/Discord before big releases.
- **Datasets for ML** — bulk-export fundamentals across entire markets, cheaply.

Integrate with anything Apify supports: **API, webhooks, Google Sheets, Zapier, Make, MCP** —
export as JSON, CSV, Excel or Parquet.

### FAQ

**Do I need a TradingView account or API key?**
No. The Actor uses TradingView's public, unauthenticated data endpoints.

**Is it legal to scrape TradingView?**
This Actor accesses only publicly available data — no login walls are bypassed and no personal
data is collected beyond public usernames on public posts. Review TradingView's Terms of Service
and your local regulations for your specific use case.

**Will I get rate-limited or banned?**
The Actor uses Apify Proxy with a fresh IP per request by default and validates every response.
No credentials are involved, so there is nothing to ban.

**How fresh is the data?**
It's fetched live at run time from the same endpoints the TradingView website itself uses.

**What markets are supported?**
Any TradingView scan region: `america`, `brazil`, `argentina`, `mexico`, `uk`, `germany`,
`france`, `spain`, `italy`, `india`, `japan`, `australia`, `crypto`, `forex`, `cfd`, `futures`,
`coin` and more.

**Can I get the entire market?**
Yes — set `maxItems: 0` for no limit. The full US market (~19,500 rows) costs about $19.50.

### Notes

- `maxItems: 0` = no limit (fetch everything).
- Ideas filtered by `ideasSymbol` are returned most-recent-first (TradingView limitation).
- Apify Proxy is enabled by default; each request goes out through a fresh IP.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. 'screener' returns a bulk list of symbols for a market (the workhorse). 'quotes' returns detailed fields for an explicit list of symbols. 'search' resolves free-text into TradingView symbols. 'calendar' returns economic-calendar events. 'news', 'minds' and 'signals' return per-symbol headlines, community Minds posts, and technical-analysis ratings. 'selftest' validates every TradingView endpoint without charging — schedule it for monitoring.

## `market` (type: `string`):

Screener market/scan endpoint, e.g. america, brazil, argentina, mexico, uk, germany, india, crypto, forex, cfd, coin, futures. Full list: https://scanner.tradingview.com/{market}/scan

## `columnPreset` (type: `string`):

Predefined set of fields to return. Use a rich fundamentals set without knowing field names. Ignored if you provide custom 'columns'.

## `columns` (type: `array`):

Custom TradingView field names to return. Overrides the preset. Examples: name, close, market\_cap\_basic, price\_earnings\_ttm, dividends\_yield\_current, RSI, return\_on\_equity.

## `filters` (type: `array`):

Raw TradingView filter objects, e.g. \[{"left":"market\_cap\_basic","operation":"greater","right":1000000000}]. Combined with AND.

## `sortBy` (type: `string`):

Field to sort the screener by.

## `sortOrder` (type: `string`):

Sort direction for the screener: descending or ascending.

## `symbols` (type: `array`):

Exchange-prefixed symbols for 'quotes', 'news', 'minds' and 'signals' modes, e.g. NASDAQ:AAPL, BINANCE:BTCUSDT, BMFBOVESPA:PETR4.

## `searchText` (type: `string`):

Free text to resolve into TradingView symbols.

## `calendarFrom` (type: `string`):

Start date for 'calendar' mode, e.g. 2026-07-15. Defaults to today.

## `calendarTo` (type: `string`):

End date for 'calendar' mode, e.g. 2026-07-22. Defaults to +7 days.

## `calendarCountries` (type: `array`):

Currency/country codes for 'calendar' mode, e.g. USD, EUR, BRL.

## `ideasSymbol` (type: `string`):

Filter ideas by a symbol, e.g. NASDAQ:AAPL or BITSTAMP:BTCUSD. Leave empty to get globally popular ideas.

## `ideasSort` (type: `string`):

Sort order for ideas.

## `indicatorsSort` (type: `string`):

Sort order for indicators/scripts.

## `newsCategory` (type: `string`):

Optional headline category filter for 'news' mode, e.g. stock, analysis. Leave empty for all news for the symbol.

## `signalsTimeframes` (type: `array`):

Timeframes to compute technical ratings for in 'signals' mode. One row per symbol per timeframe. Allowed: 1m, 5m, 15m, 30m, 1h, 2h, 4h, 1D, 1W, 1M.

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

Maximum rows to return (screener/quotes). 0 = no limit (whole market).

## `proxyConfiguration` (type: `object`):

Proxy settings. The default Apify proxy works.

## Actor input object example

```json
{
  "mode": "screener",
  "market": "america",
  "columnPreset": "overview",
  "columns": [],
  "filters": [],
  "sortBy": "market_cap_basic",
  "sortOrder": "desc",
  "symbols": [
    "NASDAQ:AAPL",
    "NASDAQ:NVDA"
  ],
  "searchText": "",
  "calendarFrom": "",
  "calendarTo": "",
  "calendarCountries": [
    "USD"
  ],
  "ideasSymbol": "",
  "ideasSort": "popular",
  "indicatorsSort": "week_popular",
  "newsCategory": "",
  "signalsTimeframes": [
    "1D",
    "1W"
  ],
  "maxItems": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `signals` (type: `string`):

No description

## `news` (type: `string`):

No description

## `community` (type: `string`):

No description

## `calendar` (type: `string`):

No description

# 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 = {
    "symbols": [
        "NASDAQ:AAPL",
        "NASDAQ:NVDA"
    ],
    "signalsTimeframes": [
        "1D",
        "1W"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("serp.cheap.ofc/cheapest-tradingview-scraper").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 = {
    "symbols": [
        "NASDAQ:AAPL",
        "NASDAQ:NVDA",
    ],
    "signalsTimeframes": [
        "1D",
        "1W",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("serp.cheap.ofc/cheapest-tradingview-scraper").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 '{
  "symbols": [
    "NASDAQ:AAPL",
    "NASDAQ:NVDA"
  ],
  "signalsTimeframes": [
    "1D",
    "1W"
  ]
}' |
apify call serp.cheap.ofc/cheapest-tradingview-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=serp.cheap.ofc/cheapest-tradingview-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CdDbg34feru5QORjr/builds/WrahVNXX63FKbJlGU/openapi.json
