# Investing.com Stock Data Scraper (`solidcode/investing-com-stock-data-scraper`) Actor

\[💰 $5.00 / 1K] Extract fundamental and quote data for stocks on Investing.com by ticker symbol — price, change, market cap, P/E, EPS, dividend yield, 52-week range, extended-hours pricing, and company profile.

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

## Pricing

from $5.00 / 1,000 results

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/actors/running/actors-in-store.md#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

## Investing.com Stock Data Scraper

Pull complete stock data from Investing.com by ticker symbol — live price, daily OHLC, 52-week range, market cap, P/E, EPS, dividend yield, beta, next-earnings date, company profile, and pre-market plus after-hours pricing, all in one flat record per stock. Type a plain ticker like `AAPL` and get back 30+ structured fields. Built for retail investors, financial analysts, and fintech builders who need clean, structured market data without copy-pasting from Investing.com one stock page at a time.

### Why This Scraper?

- **30+ fields per stock in one flat record** — symbol, ISIN, exchange, sector, industry, employee count, full company description, price, OHLC, 52-week range, volume, market cap, and key ratios, with no nested arrays to flatten.
- **Pre-market AND after-hours pricing** — extended-hours price plus its timestamp on every US listing, so you see the quote before the bell and after the close, not just the regular session.
- **Six fundamental ratios on every stock** — P/E, EPS, dividend yield, beta, trailing one-year return, and market capitalization, ready for screening and valuation models.
- **Global coverage across 46 country exchanges** — from the United States, United Kingdom, and Germany to Japan, Brazil, India, and Saudi Arabia, selectable from a clean country dropdown that resolves each ticker to its home-market listing.
- **Automatic ticker-to-listing resolution** — type a bare symbol and the scraper finds the right equity page for you; no instrument IDs, slugs, or URLs to look up by hand.
- **Batch lookups in a single run** — pass a whole list of tickers (`["AAPL", "MSFT", "BBVA"]`) and get one result per symbol, instead of running the scraper once per stock.
- **ISIN and exchange identifiers on every record** — the international securities identification number plus the listing exchange name, so each row maps cleanly to your existing security master.
- **Next-earnings date out of the box** — the next scheduled earnings report date is captured per stock, ready for earnings-calendar dashboards and alerts.
- **Tolerant by design** — a ticker that can't be matched returns a clearly flagged row (`found: false`) instead of failing the run, so one bad symbol never costs you the rest of your batch.

### Use Cases

**Investment Research**

- Screen stocks by P/E, EPS, dividend yield, and beta across a watchlist
- Compare a company's last price against its 52-week high and low
- Pull market capitalization and one-year return for valuation models
- Read the full company profile — sector, industry, employees, and description — in one place

**Portfolio Monitoring**

- Refresh price, change percent, and volume across your holdings on a schedule
- Track pre-market and after-hours moves before and after the regular session
- Watch the next-earnings date for every position to prepare ahead of reports
- Monitor daily open, high, and low for stocks you actively trade

**Fintech & App Building**

- Power a stock-quote or watchlist app with structured price and fundamentals data
- Feed a portfolio tracker with consistent, machine-readable records
- Map every stock to its ISIN and exchange for a clean security master
- Build earnings-calendar and alerting features on the next-earnings field

**Market Analysis**

- Compare the same company's listings across international exchanges
- Build sector and industry breakdowns from the company profile fields
- Analyze dividend yield and beta distributions across a market segment
- Track market-cap rankings over time with scheduled runs

**Data Enrichment**

- Enrich an existing ticker list with live price, ratios, and company metadata
- Resolve plain symbols to ISIN and exchange identifiers in bulk
- Append fresh fundamentals to a research spreadsheet or database
- Fill gaps in a security master with sector, industry, and currency data

### Getting Started

#### Look Up a Single Stock

The simplest way to start — one ticker:

```json
{
    "stockSymbols": ["AAPL"]
}
```

#### Mixed International Watchlist

Set the country to **Any country** and every symbol resolves to its best-matching listing worldwide:

```json
{
    "stockSymbols": ["AAPL", "7203", "PETR4"]
}
```

#### Batch of US Stocks

Pass a list to get one result per symbol:

```json
{
    "stockSymbols": ["AAPL", "MSFT", "NVDA", "TSLA"],
    "country": "united states"
}
```

#### International Listing

Target a non-US exchange so the right listing is picked:

```json
{
    "stockSymbols": ["BBVA", "SAN"],
    "country": "spain"
}
```

### Input Reference

#### What to Look Up

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `stockSymbols` | string\[] | `["AAPL"]` | One or more stock ticker symbols to look up, such as `AAPL`, `MSFT`, or `BBVA`. Each symbol returns one result. |
| `country` | select | `United States` (pre-filled) | Country where the stocks are listed. Helps pick the right listing when the same ticker exists on multiple exchanges. Choose from 46 countries including the US, UK, Germany, Japan, Brazil, India, and more, or pick **Any country** for the best-matching listing worldwide. |

### Output

Each stock returns one flat record. Here's a representative result:

```json
{
    "symbol": "AAPL",
    "country": "united states",
    "found": true,
    "instrumentId": 6408,
    "isin": "US0378331005",
    "companyName": "Apple Inc",
    "exchange": "NASDAQ",
    "sector": "Technology",
    "industry": "Consumer Electronics",
    "market": "United States",
    "employees": 164000,
    "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide...",
    "currency": "USD",
    "lastPrice": 228.52,
    "change": 1.83,
    "changePercent": 0.81,
    "openPrice": 226.95,
    "highPrice": 229.41,
    "lowPrice": 226.30,
    "week52High": 260.10,
    "week52Low": 164.08,
    "volume": 41250300,
    "marketCap": 3470000000000,
    "peRatio": 34.72,
    "eps": 6.58,
    "dividendYield": 0.44,
    "beta": 1.21,
    "oneYearReturn": 18.34,
    "nextEarningsDate": "2026-07-30",
    "preMarketPrice": 229.10,
    "afterHoursPrice": 228.90,
    "extendedHoursTime": "2026-05-30T20:15:00+00:00",
    "url": "https://www.investing.com/equities/apple-computer-inc",
    "retrievedAt": "2026-05-30T18:00:00+00:00"
}
```

#### Identity & Profile

| Field | Type | Description |
|-------|------|-------------|
| `symbol` | string | Ticker symbol you queried |
| `companyName` | string | Full company name |
| `isin` | string | International Securities Identification Number |
| `exchange` | string | Listing exchange name (e.g. NASDAQ) |
| `sector` | string | Sector classification |
| `industry` | string | Industry classification |
| `market` | string | Market or market segment |
| `employees` | number | Number of employees |
| `description` | string | Company business description |
| `instrumentId` | number | Investing.com internal instrument identifier |

#### Price & Trading

| Field | Type | Description |
|-------|------|-------------|
| `currency` | string | Quote currency (e.g. USD) |
| `lastPrice` | number | Most recent trade price |
| `change` | number | Absolute price change for the session |
| `changePercent` | number | Percentage price change for the session |
| `openPrice` | number | Session opening price |
| `highPrice` | number | Session high |
| `lowPrice` | number | Session low |
| `week52High` | number | Highest price over the trailing 52 weeks |
| `week52Low` | number | Lowest price over the trailing 52 weeks |
| `volume` | number | Trading volume |

#### Fundamentals & Ratios

| Field | Type | Description |
|-------|------|-------------|
| `marketCap` | number | Market capitalization (raw value) |
| `peRatio` | number | Price-to-earnings ratio |
| `eps` | number | Earnings per share |
| `dividendYield` | number | Dividend yield, as a percentage |
| `beta` | number | Beta (volatility relative to the market) |
| `oneYearReturn` | number | Trailing one-year return, as a percentage |
| `nextEarningsDate` | string | Next scheduled earnings report date |

#### Extended Hours

| Field | Type | Description |
|-------|------|-------------|
| `preMarketPrice` | number | Pre-market price (null when unavailable) |
| `afterHoursPrice` | number | After-hours price (null when unavailable) |
| `extendedHoursTime` | string | Timestamp of the extended-hours quote (null when unavailable) |

#### Metadata

| Field | Type | Description |
|-------|------|-------------|
| `country` | string | Country you selected for the lookup |
| `found` | boolean | Whether data was successfully matched for this symbol |
| `message` | string | Present only on a miss when you set a country — a short note explaining the symbol isn't listed in that country |
| `url` | string | Source equity page on Investing.com |
| `retrievedAt` | string | ISO timestamp when the record was retrieved |

### Tips for Best Results

- **Set the country to target the right listing** — the same ticker can list on several exchanges, so picking the matching country (e.g. `spain` for `BBVA`) ensures you get the listing you actually want.
- **Batch your tickers** — pass your whole watchlist in `stockSymbols` in a single run rather than running once per stock; you get one clean result per symbol.
- **Pre-market and after-hours fields are US-listing features** — they populate for US stocks during extended-hours windows and return `null` on listings that don't trade outside the regular session, so treat them as optional in your downstream logic.
- **Check the `found` flag** — a misspelled ticker, or one that isn't listed in the country you chose, comes back with `found: false` (plus a short `message` when a country was set) instead of failing the run or returning a wrong-exchange match; filter on this field to separate matched stocks from misses.
- **Use the country dropdown over guessing** — the country selector covers 46 markets with clean labels, so you never have to remember an exchange code. When a ticker isn't listed in the country you pick, the row comes back with `found: false` and a short note instead of a wrong-exchange match.
- **Pick "Any country" for a mixed international watchlist** — it switches every symbol to a best-match lookup worldwide, so `7203` comes back from Tokyo in JPY and `PETR4` from B3 in BRL in the same run. Name a country only when you want listings pinned to one market.
- **Schedule recurring runs for fresh quotes** — price, change percent, volume, and extended-hours fields reflect the moment of retrieval, so run on a schedule to keep dashboards current.
- **`marketCap` is a raw number** — it's the full value (e.g. `3470000000000`), not an abbreviated string like `3.47T`, so it's ready for sorting and math without parsing.

### Pricing

**From $5.00 per 1,000 results** — clean, predictable pay-per-result. The closest comparable Investing.com stock data tool on the store charges a flat $7.00 per 1,000, so you pay less at every discount tier and 29% less at Gold.

Your rate depends on your Apify discount tier:

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.60 | $0.56 | $0.53 | $0.50 |
| 1,000 | $6.00 | $5.65 | $5.30 | $5.00 |
| 10,000 | $60.00 | $56.50 | $53.00 | $50.00 |
| 100,000 | $600.00 | $565.00 | $530.00 | $500.00 |

Tiered pricing takes effect on **September 9, 2026**. Until then every result is billed at the current flat rate of $5.00 per 1,000.

A "result" is one stock record in the output dataset — one per ticker you submit, so your cost is fully predictable from your input list. No compute charges — you only pay per result returned. Platform fees (storage and usage tied to your Apify plan) are additional.

### 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 investment research, market analysis, and financial application development. Users are responsible for complying with applicable laws and Investing.com's Terms of Service. Market data is provided for informational purposes only and is not investment advice. Do not use extracted data to mislead, manipulate markets, or for any illegal purpose.

# Actor input Schema

## `stockSymbols` (type: `array`):

One or more stock ticker symbols to look up, such as 'AAPL', 'MSFT', or 'BBVA'. Each symbol returns one result.

## `country` (type: `string`):

Country where the stocks are listed. Helps pick the right listing when the same ticker exists on multiple exchanges. Pick "Any country" to get the best-matching listing worldwide.

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

Proxy settings used to fetch data reliably. The default works for most runs.

## Actor input object example

```json
{
  "stockSymbols": [
    "AAPL"
  ],
  "country": "united states",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Key stock fields: symbol, company, price, change, and market cap.

# 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 = {
    "stockSymbols": [
        "AAPL"
    ],
    "country": "united states",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/investing-com-stock-data-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 = {
    "stockSymbols": ["AAPL"],
    "country": "united states",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/investing-com-stock-data-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "stockSymbols": [
    "AAPL"
  ],
  "country": "united states",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call solidcode/investing-com-stock-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solidcode/investing-com-stock-data-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/yhCd34SgR3ojHPTkt/builds/9CRX2Q4vpHk4pGCpI/openapi.json
