# Google Finance Scraper (`solidcode/google-finance-scraper`) Actor

\[💰 $1/1K stocks + $0.08/1K chart pts] Extract Google Finance data for any stock, ETF, or index: live quotes, company profiles, earnings (EPS & revenue vs. estimates), price chart history, latest news, and related stocks. Optionally add equity sector indexes. Pick only the data categories you need.

- **URL**: https://apify.com/solidcode/google-finance-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 stocks

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

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

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

## Google Finance Scraper

Pull structured market data from Google Finance for any list of stocks, ETFs, and market indexes — live quotes, company profiles, earnings vs. estimates, historical price charts back to IPO, news headlines, and related peers. Feed it `TICKER:EXCHANGE` symbols (or paste quote URLs) and choose exactly which data categories you want per symbol. Built for quant researchers, fintech builders, and financial analysts who need a clean, structured Google Finance feed without maintaining a brittle in-house collector.

### Why This Scraper?

- **Five structured record types in one run** — quotes (with merged company profiles), earnings periods, chart points, news, and related stocks, each tagged with a `recordType` so you can split them cleanly downstream.
- **Eight chart windows from intraday to all-time** — 1D, 5D, 1M, 6M, YTD, 1Y, 5Y, and MAX; the MAX window reaches back to a stock's IPO (Apple returns ~2,088 weekly candles, a full year ~252 daily bars, and 1D delivers intraday minute-level bars).
- **EPS and revenue actual-vs-estimate per reporting period** — every earnings row carries reported EPS and revenue against Wall Street estimates, the surprise percentages, and a beat/miss flag by fiscal quarter.
- **After-hours pricing on every quote** — extended-hours price, absolute change, and percent change with a timestamp, alongside the regular-session price, day range, 52-week range, market cap, and P/E.
- **Full company profiles** — CEO name, employee count, founding year, headquarters location, and the business description, localized into the language you pick.
- **Related-peer discovery per ticker** — Google's own set of comparable stocks for each symbol, each with a live mini-quote, so you get a competitor set without a second query.
- **10 interface languages** — English, German, French, Spanish, Italian, Portuguese, Dutch, Japanese, Korean, and Chinese for localized company descriptions and news.
- **One-click sector-index discovery** — flip a single toggle to add Google Finance's equity sector indexes (Health Care, Materials, Financials, and more) for a market-wide snapshot without listing symbols by hand.
- **Pick only what you pay for** — a live quote is always included; every other category (profile, earnings, charts, news, related) is an opt-in module, so lean runs stay lean.

### Use Cases

**Quantitative Research & Backtesting**
- Build historical price series per ticker across eight lookback windows, from intraday to IPO
- Assemble EPS and revenue surprise datasets for earnings-drift studies
- Snapshot day range, 52-week range, and volume for volatility models
- Pull all-time candle histories to seed long-horizon backtests

**Market Monitoring & Dashboards**
- Track live and after-hours prices for a watchlist on a schedule
- Feed change-percent and market-cap fields into a real-time market dashboard
- Alert on earnings beats and misses as new periods report
- Refresh a portfolio's quotes, P/E, and dividend yield on demand

**Fintech Apps & Data Products**
- Power a brokerage or portfolio app with quotes, profiles, and charts from one source
- Enrich an existing security master with CEO, employee count, and HQ location
- Embed related-peer lists into a stock comparison feature
- Localize company descriptions for a multi-language finance product

**Competitive & Sector Research**
- Map a company's peer set from its related-stocks list
- Compare market cap, P/E, and revenue across an industry group
- Add equity sector indexes for a top-down market view in one toggle
- Benchmark a target against the sector index it belongs to

**News & Sentiment Analysis**
- Collect the latest headlines, sources, and links per ticker for sentiment scoring
- Cap news volume per symbol to keep sentiment datasets balanced
- Join news flow to earnings dates to study post-announcement coverage

### Getting Started

#### A Single Stock

The simplest possible run — one ticker with its live quote, profile, news, and related peers:

```json
{
    "stocks": ["AAPL:NASDAQ"]
}
````

#### A Watchlist with Chosen Categories

Several symbols, keeping only the quote, profile, and earnings data:

```json
{
    "stocks": ["AAPL:NASDAQ", "MSFT:NASDAQ", "GOOGL:NASDAQ", "TSLA:NASDAQ"],
    "dataModules": ["profile", "financials"]
}
```

#### Chart-Heavy Historical Pull

One year of daily candles plus news, with company text in German:

```json
{
    "stocks": ["NVDA:NASDAQ", "AMZN:NASDAQ"],
    "dataModules": ["chart", "news", "profile"],
    "chartWindow": "1Y",
    "maxNewsPerStock": 10,
    "language": "de"
}
```

#### Sector-Wide Snapshot

Skip the symbol list entirely and let the actor discover equity sector indexes:

```json
{
    "includeSectorIndexes": true,
    "maxDiscoveredSymbols": 20,
    "dataModules": ["related"]
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `stocks` | string\[] | `["GOOGL:NASDAQ", "AAPL:NASDAQ", "MSFT:NASDAQ"]` | Symbols in `TICKER:EXCHANGE` form (e.g. `AAPL:NASDAQ`). Works for stocks, ETFs, and market indexes. You can also paste full Google Finance quote URLs. Each symbol is looked up independently. |

#### Discovery

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeSectorIndexes` | boolean | `false` | Also add Google Finance's equity sector indexes (Health Care, Materials, Financials, and more) to your results — a quick market-wide snapshot without listing symbols by hand. |
| `maxDiscoveredSymbols` | integer | `20` | When sector indexes are on, limits how many index symbols to add (1–100). Does not affect the symbols you enter above. |

#### Data Categories

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `dataModules` | string\[] | `["profile", "news", "related"]` | Which categories to return per symbol. Options: **Company profile** (CEO, employees, HQ, description), **Earnings** (EPS & revenue vs. estimates), **Price chart history**, **Latest news articles**, **Related stocks**. A live quote is always included. |

#### Chart & News Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `chartWindow` | select | `1M` | How far back the price chart reaches: 1 day (intraday), 5 days, 1 month, 6 months, Year to date, 1 year, 5 years, or Maximum available. Only applies when the Price chart category is selected. |
| `maxNewsPerStock` | integer | `6` | Caps how many news articles to return per symbol (0–50). Only applies when the News category is selected. |

#### Localization

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `language` | select | `English` | Language for Google Finance text such as company descriptions and news. Ten options: English, German, French, Spanish, Italian, Portuguese, Dutch, Japanese, Korean, Chinese (Simplified). |

### Output

Every row carries a `recordType` field — `quote`, `financialPeriod`, `chartPoint`, `newsArticle`, or `relatedStock` — so you can filter each collection cleanly.

#### Quote (`recordType: "quote"`)

The parent record for each symbol. Company-profile fields (description, CEO, employees, HQ, founded, market cap, P/E, 52-week range) are merged in when the **Company profile** category is selected.

```json
{
    "recordType": "quote",
    "ticker": "AAPL",
    "exchange": "NASDAQ",
    "name": "Apple Inc",
    "type": "stock",
    "currency": "USD",
    "country": "United States",
    "price": 229.87,
    "change": 1.42,
    "changePercent": 0.62,
    "previousClose": 228.45,
    "brandColor": "#333333",
    "afterHours": { "price": 230.10, "change": 0.23, "changePercent": 0.10, "timestamp": "2026-07-02T23:59:00+00:00" },
    "lastUpdated": "2026-07-02T20:00:00+00:00",
    "symbol": "AAPL:NASDAQ",
    "url": "https://www.google.com/finance/quote/AAPL:NASDAQ",
    "description": "Apple Inc. is an American multinational technology company...",
    "ceo": "Tim Cook",
    "employees": 164000,
    "founded": 1976,
    "hq": { "city": "Cupertino", "state": "California", "country": "United States" },
    "marketCap": 3480000000000,
    "open": 228.90,
    "high": 230.44,
    "low": 228.10,
    "fiftyTwoWeekHigh": 260.10,
    "fiftyTwoWeekLow": 164.08,
    "avgVolume": 54000000,
    "peRatio": 34.8,
    "dividendYield": 0.44
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"quote"` |
| `ticker` | string | Symbol ticker (e.g. `AAPL`) |
| `exchange` | string | Exchange code (e.g. `NASDAQ`) |
| `name` | string | Company or instrument name |
| `type` | string | `stock` or `instrument` (ETF / index) |
| `currency` | string | Quote currency |
| `country` | string | Country of listing |
| `price` | number | Current price |
| `change` | number | Absolute price change |
| `changePercent` | number | Percent price change |
| `previousClose` | number | Previous session close |
| `brandColor` | string | Google Finance brand accent color |
| `afterHours` | object | Extended-hours `price`, `change`, `changePercent`, and `timestamp` when available |
| `lastUpdated` | string | ISO 8601 quote timestamp |
| `symbol` | string | Full `TICKER:EXCHANGE` symbol |
| `url` | string | Google Finance quote URL |

#### Company Profile Fields (merged into the quote)

Present when the **Company profile** category is selected.

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Business description (localized to `language`) |
| `ceo` | string | Chief executive name |
| `employees` | number | Employee count |
| `founded` | number | Founding year |
| `hq` | object | Headquarters `city`, `state`, `country`, `street` |
| `marketCap` | number | Market capitalization |
| `open` / `high` / `low` | number | Session open, high, and low |
| `fiftyTwoWeekHigh` / `fiftyTwoWeekLow` | number | 52-week price range |
| `avgVolume` | number | Average trading volume |
| `peRatio` | number | Price/earnings ratio |
| `dividendYield` | number | Dividend yield |

#### Earnings Period (`recordType: "financialPeriod"`)

Emitted when the **Earnings** category is selected — one row per reporting period. This is earnings actual-vs-estimate data (not full financial statements).

```json
{
    "recordType": "financialPeriod",
    "ticker": "AAPL",
    "fiscalYear": 2026,
    "fiscalQuarter": 2,
    "periodType": "quarterly",
    "fiscalEnd": "2026-03-31",
    "revenue": 90753000000,
    "revenueEstimate": 89200000000,
    "eps": 1.53,
    "epsEstimate": 1.50,
    "revenueSurprisePct": 1.74,
    "epsSurprisePct": 2.0,
    "beat": true,
    "currency": "USD",
    "reportedAt": "2026-05-01T20:30:00+00:00"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `ticker` | string | Parent symbol |
| `fiscalYear` | number | Fiscal year |
| `fiscalQuarter` | number | Fiscal quarter (1–4) |
| `periodType` | string | Always `quarterly` — Google's earnings feed reports by fiscal quarter |
| `fiscalEnd` | string | Fiscal period end date |
| `revenue` / `revenueEstimate` | number | Reported revenue vs. estimate |
| `eps` / `epsEstimate` | number | Reported EPS vs. estimate |
| `revenueSurprisePct` / `epsSurprisePct` | number | Surprise vs. estimate, in percent |
| `beat` | boolean | Whether the period beat estimates |
| `currency` | string | Reporting currency |
| `reportedAt` | string | ISO 8601 report timestamp |

#### Chart Point (`recordType: "chartPoint"`)

Emitted when the **Price chart** category is selected — one row per historical candle. Row count scales with `chartWindow` (a MAX window can return a couple thousand points).

```json
{
    "recordType": "chartPoint",
    "ticker": "AAPL",
    "date": "2026-07-02T20:00:00+00:00",
    "price": 229.87,
    "change": 1.42,
    "changePercent": 0.62,
    "volume": 48210000
}
```

| Field | Type | Description |
|-------|------|-------------|
| `ticker` | string | Parent symbol |
| `date` | string | ISO 8601 candle timestamp |
| `price` | number | Price at this point |
| `change` / `changePercent` | number | Change vs. the prior point |
| `volume` | number | Volume at this point when available |

#### News Article (`recordType: "newsArticle"`)

Emitted when the **Latest news** category is selected — capped by `maxNewsPerStock`.

```json
{
    "recordType": "newsArticle",
    "ticker": "AAPL",
    "title": "Apple unveils new product lineup",
    "snippet": "The company announced updates across its hardware range...",
    "source": "Reuters",
    "url": "https://www.reuters.com/technology/apple-...",
    "thumbnailUrl": "https://encrypted-tbn0.gstatic.com/..."
}
```

| Field | Type | Description |
|-------|------|-------------|
| `ticker` | string | Parent symbol |
| `title` | string | Headline |
| `snippet` | string | Summary text |
| `source` | string | Publisher name |
| `url` | string | Article URL |
| `thumbnailUrl` | string | Thumbnail image URL |

#### Related Stock (`recordType: "relatedStock"`)

Emitted when the **Related stocks** category is selected — Google's peer set for the symbol, each with a live mini-quote.

```json
{
    "recordType": "relatedStock",
    "ticker": "AAPL",
    "relatedTicker": "MSFT",
    "relatedExchange": "NASDAQ",
    "name": "Microsoft Corp",
    "currency": "USD",
    "price": 465.12,
    "change": -2.31,
    "changePercent": -0.49
}
```

| Field | Type | Description |
|-------|------|-------------|
| `ticker` | string | Parent symbol this peer relates to |
| `relatedTicker` | string | Peer symbol ticker |
| `relatedExchange` | string | Peer symbol exchange |
| `name` | string | Peer instrument name |
| `currency` | string | Peer quote currency |
| `price` / `change` / `changePercent` | number | Peer live mini-quote |

### Tips for Best Results

- **Always include the exchange suffix.** Symbols must be in `TICKER:EXCHANGE` form (e.g. `AAPL:NASDAQ`). Bare tickers like `AAPL` are skipped — the exchange tells Google Finance which listing to load.
- **MAX and 1D charts return the most points.** A MAX window can be a couple thousand candles per symbol and 1D returns intraday minute bars; narrow `chartWindow` (e.g. `1M` or `1Y`) to control both volume and cost when you don't need the full history.
- **Turn off modules you don't need.** A live quote is always included — leave `chart` and `financials` out of `dataModules` for the fastest, leanest runs.
- **Stick to stocks, ETFs, and indexes.** Crypto and currency pairs (like `BTC-USD` or `EUR-USD`) aren't supported and are skipped automatically — Google Finance only serves a sparkline for those, with no structured quote.
- **Set `language` for localized profiles.** Company descriptions and news come back in the language you choose — handy for multi-region products.
- **Use `includeSectorIndexes` for a top-down view.** Toggle it on with no `stocks` at all to pull equity sector indexes as a market-wide snapshot, or combine it with your own watchlist.
- **Cap news to keep datasets balanced.** Set `maxNewsPerStock` low (2–5) when you're building sentiment datasets so no single ticker dominates the sample.

### Pricing

**From $1.00 per 1,000 stocks + $0.08 per 1,000 chart points.**

This actor uses a **pay-per-event** model with two events, so you only pay for the data you actually collect:

- **Per stock** — charged once per symbol scraped, covering its quote, company profile, earnings, news, and related peers (all bounded).
- **Per chart point** — charged once per historical price candle collected, and only when the **Price chart** category is turned on.

You're charged per stock, plus per historical chart point collected — pick the data you need and you only pay for it. Apify's Bronze, Silver, and Gold loyalty discount tiers apply automatically on the platform, so higher tiers pay less per event.

#### Example Costs

All figures below use the lowest (Gold) tier prices — $1.00 per 1,000 stocks and $0.08 per 1,000 chart points.

| Run | Stocks | Chart points | Cost |
|-----|--------|--------------|------|
| 1,000 stocks — quotes + news + related (no chart) | 1,000 × $0.001 | 0 | $1.00 |
| 1,000 stocks + 1-month daily charts (~21 pts each = 21,000 pts) | 1,000 × $0.001 | 21,000 × $0.00008 | $2.68 |
| 1,000 stocks + 1-year daily charts (~252 pts each = 252,000 pts) | 1,000 × $0.001 | 252,000 × $0.00008 | $21.16 |
| 100 stocks + MAX charts (~2,000 pts each = 200,000 pts) | 100 × $0.001 | 200,000 × $0.00008 | $16.10 |

Chart depth is the main cost driver: a quotes-only run is charged purely per stock, while a MAX-window chart pull adds a per-point charge for thousands of candles. **No compute or time-based charges — you pay per stock and per chart point, plus a small fixed per-run start fee.**

Apify's loyalty tiers apply automatically, so higher tiers pay less per event:

- **Per stock (per 1,000):** No discount $1.20 · Bronze $1.13 · Silver $1.07 · Gold $1.00
- **Per chart point (per 1,000):** No discount $0.095 · Bronze $0.09 · Silver $0.085 · Gold $0.08

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate financial research, market monitoring, and data-product development. Users are responsible for complying with applicable laws and Google Finance's terms of service, and for respecting content usage rules for any linked articles. Market data may be delayed and is provided for informational purposes only — it is not investment advice. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

## `stocks` (type: `array`):

Symbols to look up in Google Finance format 'TICKER:EXCHANGE', for example 'AAPL:NASDAQ', 'GOOGL:NASDAQ', or 'TSLA:NASDAQ'. Works for stocks, ETFs, and market indexes. You can also paste full Google Finance quote URLs. Each symbol is looked up independently. Crypto/currency dash-pairs (e.g. 'BTC-USD') and bare tickers without an exchange (e.g. 'AAPL') are skipped — always include the exchange suffix, like 'AAPL:NASDAQ'.

## `includeSectorIndexes` (type: `boolean`):

Also scrape Google Finance's equity sector indexes (Health Care, Materials, Financials, and more) and add them to your results. Useful for a quick market-wide snapshot without listing symbols by hand.

## `maxDiscoveredSymbols` (type: `integer`):

When 'Include sector indexes' is on, limit how many index symbols to add. Does not affect the symbols you enter above.

## `dataModules` (type: `array`):

Choose which categories of data to return for each symbol. Pick only what you need — fewer categories means faster, cheaper runs. A live quote is always included.

## `chartWindow` (type: `string`):

How far back the price chart should go. Only applies when the Price chart category is selected. Longer windows return more data points.

## `maxNewsPerStock` (type: `integer`):

Limit how many news articles to return per symbol. Only applies when the News category is selected.

## `language` (type: `string`):

Language for Google Finance text such as company descriptions and news.

## Actor input object example

```json
{
  "stocks": [
    "GOOGL:NASDAQ",
    "AAPL:NASDAQ",
    "MSFT:NASDAQ"
  ],
  "includeSectorIndexes": false,
  "maxDiscoveredSymbols": 20,
  "dataModules": [
    "profile",
    "news",
    "related"
  ],
  "chartWindow": "1M",
  "maxNewsPerStock": 6,
  "language": "en"
}
```

# Actor output Schema

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

Live quote and company-profile records for each symbol, plus related stocks and any discovered sector indexes.

## `financials` (type: `string`):

EPS and revenue actual-vs-estimate records per fiscal period.

## `chart` (type: `string`):

Historical price chart data points per symbol.

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

Latest news articles per symbol.

# 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 = {
    "stocks": [
        "GOOGL:NASDAQ",
        "AAPL:NASDAQ",
        "MSFT:NASDAQ"
    ],
    "maxDiscoveredSymbols": 20,
    "dataModules": [
        "profile",
        "news",
        "related"
    ],
    "chartWindow": "1M",
    "maxNewsPerStock": 6,
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/google-finance-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 = {
    "stocks": [
        "GOOGL:NASDAQ",
        "AAPL:NASDAQ",
        "MSFT:NASDAQ",
    ],
    "maxDiscoveredSymbols": 20,
    "dataModules": [
        "profile",
        "news",
        "related",
    ],
    "chartWindow": "1M",
    "maxNewsPerStock": 6,
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/google-finance-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 '{
  "stocks": [
    "GOOGL:NASDAQ",
    "AAPL:NASDAQ",
    "MSFT:NASDAQ"
  ],
  "maxDiscoveredSymbols": 20,
  "dataModules": [
    "profile",
    "news",
    "related"
  ],
  "chartWindow": "1M",
  "maxNewsPerStock": 6,
  "language": "en"
}' |
apify call solidcode/google-finance-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/google-finance-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Finance Scraper",
        "description": "[💰 $1/1K stocks + $0.08/1K chart pts] Extract Google Finance data for any stock, ETF, or index: live quotes, company profiles, earnings (EPS & revenue vs. estimates), price chart history, latest news, and related stocks. Optionally add equity sector indexes. Pick only the data categories you need.",
        "version": "1.0",
        "x-build-id": "NoSbFAtP7JgRaoLDm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~google-finance-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-google-finance-scraper",
                "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/solidcode~google-finance-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-google-finance-scraper",
                "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/solidcode~google-finance-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-google-finance-scraper",
                "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": {
                    "stocks": {
                        "title": "Stocks & Tickers",
                        "type": "array",
                        "description": "Symbols to look up in Google Finance format 'TICKER:EXCHANGE', for example 'AAPL:NASDAQ', 'GOOGL:NASDAQ', or 'TSLA:NASDAQ'. Works for stocks, ETFs, and market indexes. You can also paste full Google Finance quote URLs. Each symbol is looked up independently. Crypto/currency dash-pairs (e.g. 'BTC-USD') and bare tickers without an exchange (e.g. 'AAPL') are skipped — always include the exchange suffix, like 'AAPL:NASDAQ'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeSectorIndexes": {
                        "title": "Include sector indexes",
                        "type": "boolean",
                        "description": "Also scrape Google Finance's equity sector indexes (Health Care, Materials, Financials, and more) and add them to your results. Useful for a quick market-wide snapshot without listing symbols by hand.",
                        "default": false
                    },
                    "maxDiscoveredSymbols": {
                        "title": "Max sector indexes",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "When 'Include sector indexes' is on, limit how many index symbols to add. Does not affect the symbols you enter above."
                    },
                    "dataModules": {
                        "title": "Data to Collect",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Choose which categories of data to return for each symbol. Pick only what you need — fewer categories means faster, cheaper runs. A live quote is always included.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "profile",
                                "financials",
                                "chart",
                                "news",
                                "related"
                            ],
                            "enumTitles": [
                                "Company profile (CEO, employees, HQ, description)",
                                "Earnings (EPS & revenue vs. estimates)",
                                "Price chart history (data points)",
                                "Latest news articles",
                                "Related stocks"
                            ]
                        }
                    },
                    "chartWindow": {
                        "title": "Chart Time Window",
                        "enum": [
                            "1D",
                            "5D",
                            "1M",
                            "6M",
                            "YTD",
                            "1Y",
                            "5Y",
                            "MAX"
                        ],
                        "type": "string",
                        "description": "How far back the price chart should go. Only applies when the Price chart category is selected. Longer windows return more data points."
                    },
                    "maxNewsPerStock": {
                        "title": "Max News Articles per Symbol",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Limit how many news articles to return per symbol. Only applies when the News category is selected."
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "pt",
                            "nl",
                            "ja",
                            "ko",
                            "zh-CN"
                        ],
                        "type": "string",
                        "description": "Language for Google Finance text such as company descriptions and news."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
