# Investing.com Stocks All-in-One: Prices, Financials & History (`pintostudio/investing-com-stocks`) Actor

One scraper for everything about a stock on Investing.com: live quote, historical prices, financial statements, ratios, earnings, dividends, analyst targets, technicals, news, profile and market lists (gainers, losers, most active). 32 languages, any currency.

- **URL**: https://apify.com/pintostudio/investing-com-stocks.md
- **Developed by:** [Pinto Studio](https://apify.com/pintostudio) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 stock data

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Investing.com Stocks All-in-One: Prices, Financials & History

Get **stocks** data from [Investing.com](https://www.investing.com): prices, history
and more. Choose exactly what you need, in **32 languages** and in **any currency**.

### What you can get

Pick one or more options in **"What do you want to get?"** (`dataToGet`):

| Option | Name | What you get |
|--------|------|--------------|
| `overview` | Quote & overview | Current price, change, day range, 52-week range, volume, market cap, P/E, EPS, dividend yield, performance (1 day to all time) and a buy/sell summary. |
| `historical` | Historical prices | Daily, weekly or monthly prices (open, high, low, close, volume, change %) between two dates. |
| `technical` | Technical analysis | Indicators (RSI, MACD, ...), moving averages (5 to 200) and pivot points, with buy/sell signals. |
| `profile` | Company profile | What the company does, sector, industry, employees, address, website and top executives. |
| `income_statement` | Income statement | Revenue, costs, profit and EPS for each year or quarter (values in millions). |
| `balance_sheet` | Balance sheet | Assets, liabilities and equity for each year or quarter (values in millions). |
| `cash_flow` | Cash flow statement | Cash from operations, investing and financing for each year or quarter (values in millions). |
| `ratios` | Financial ratios | Valuation, profitability, growth and debt ratios compared with the industry. |
| `earnings` | Earnings | Past results (EPS and revenue, actual vs forecast) and the next report date. |
| `dividends` | Dividends | Dividend history (ex-date, pay date, amount) plus yield and payout ratio. |
| `forecast` | Analyst forecast | Analyst price targets (average, high, low), buy/hold/sell counts and recent ratings. |
| `news` | Latest news | Latest news articles about it (title, summary, link, date, source). |
| `related` | Related instruments | Other instruments people also watch, with their price and change. |
| `market_listing` | MARKET: listing of a country | Every stock of a country, with price, change, volume, performance and fundamentals. |
| `top_gainers` | MARKET: top gainers | The stocks that rose the most today in a country. |
| `top_losers` | MARKET: top losers | The stocks that fell the most today in a country. |
| `most_active` | MARKET: most active | The most traded stocks today in a country. |

### How to use it (no code needed)

1. Open the actor on Apify and go to the **Input** tab.
2. In **"Stocks to look up"**, type what you want, one per line, for example:
   `AAPL`, `MSFT`.
3. In **"What do you want to get?"**, tick the data you need.
4. (Optional) choose a **Language** and a **Currency**.
5. Click **Start**.
6. When it finishes, open the **Output** tab. You can download the results as
   **JSON, CSV, Excel** or view them as a table.

### Input fields

| Field | What it does | Example |
|-------|--------------|---------|
| `instruments` | Ticker symbols (AAPL), company names (Apple), ISIN codes (US0378331005) or investing.com links. One per line. | `["AAPL", "MSFT"]` |
| `country` | Optional. Use it when the same symbol exists in more than one country. A country name or a 2-letter code. | `"united states"` or `"US"` |
| `dataToGet` | What you want. Pick one or more of the options in the table above. | `["overview", "historical"]` |
| `language` | Language of names, descriptions and news (32 languages). | `"en"`, `"pt-br"`, `"de"`, `"ja"` |
| `currency` | Optional. Show prices in another currency. `local` = the currency of the chosen language's country. Empty = the instrument's own currency. | `"EUR"`, `"BRL"`, `"local"` |
| `historicalFrom / historicalTo` | Dates for historical prices. Empty = the last 30 days. | `"2026-01-01"` |
| `historicalInterval` | `daily`, `weekly` or `monthly`. | `"daily"` |
| `historicalOrder` | `asc` (oldest first) or `desc` (newest first). | `"asc"` |
| `splitHistoricalRows` | `true` saves every day as its own row: best for Excel/CSV. | `false` |
| `technicalInterval` | Timeframe of the technical analysis: `1m`, `5m`, `15m`, `30m`, `1h`, `5h`, `1d`, `1w`, `1mo` or `all`. | `"1d"` |
| `financialPeriod` | `annual` or `quarterly` financial statements. | `"annual"` |
| `marketCountry` | Country for the MARKET options. | `"US"`, `"germany"` |
| `marketLimit` | Maximum number of rows for the MARKET options (up to 2000). | `100` |
| `proxyType` | `ours` (default): our proxy, included in the price. `own`: use your own proxy. | `"ours"` |
| `ownProxyUrls` | Your proxy URLs, only used when `proxyType` is `own`. | `["http://user:pass@host:port"]` |

#### Example inputs

**1. Prices and history**

```json
{
  "instruments": [
    "AAPL",
    "MSFT"
  ],
  "dataToGet": [
    "overview",
    "historical"
  ],
  "historicalFrom": "2026-01-01",
  "historicalTo": "2026-06-30",
  "country": "united states"
}
```

**2. In Portuguese, prices in Brazilian reais**

```json
{
  "instruments": [
    "Petrobras"
  ],
  "dataToGet": [
    "overview",
    "news"
  ],
  "language": "pt-br",
  "currency": "BRL"
}
```

**3. Market data (no list needed)**

```json
{
  "dataToGet": [
    "top_gainers",
    "top_losers"
  ],
  "marketCountry": "US",
  "marketLimit": 20
}
```

Market options return **one row per item** (e.g. one row per stock), so they look like a normal table.

### What the results look like

Every result is one item in the dataset. For the stocks you typed, you get **one
item per stock and per option**:

| Field | Meaning |
|-------|---------|
| `input` | What you typed |
| `dataType` | Which option this item is (`overview`, `historical`, ...) |
| `instrument` | The stock that was found: name, symbol, link, and how it was found |
| `language` | Language of the texts |
| `currency` | Currency of the prices in this item |
| `meta` | Extra details, e.g. the exchange rate used when you asked for another currency |
| `data` | The data itself |
| `error` | `null`, or the reason this item failed (the other items still work) |

Example (shortened):

```json
{
  "input": "AAPL",
  "dataType": "overview",
  "instrument": {
    "kind": "equities",
    "slug": "apple-computer-inc",
    "cid": null,
    "url": "https://www.investing.com/equities/apple-computer-inc",
    "found_by": "list (symbol)",
    "id": "6408",
    "name": "Apple Inc",
    "symbol": "AAPL",
    "country": "united states",
    "currency": "USD",
    "other_matches": 4
  },
  "language": "en",
  "currency": "EUR",
  "meta": {
    "currency": "EUR",
    "native_currency": "USD",
    "fx_rate": 0.8778,
    "fx_pair": "USD/EUR",
    "fx_basis": "latest"
  },
  "data": {
    "id": "6408",
    "kind": "equities",
    "slug": "apple-computer-inc",
    "type": "equity",
    "name": "Apple Inc",
    "short_name": "Apple",
    "symbol": "AAPL",
    "url": "https://www.investing.com/equities/apple-computer-inc",
    "isin": "US0378331005",
    "is_open": false,
    "is_crypto": false,
    "exchange": {
      "id": "2",
      "code": "NASDAQ",
      "name": "Nasdaq Stock Exchange",
      "country": "United States",
      "flag": "US"
    },
    "price": {
      "last": 299.391246,
      "previous_close": 294.870576,
      "open": 294.975912,
      "high": 299.917926,
      "low": 293.650434,
      "change": 4.52067,
      "change_percent": 1.53,
      "bid": null,
      "ask": null,
      "currency": "EUR",
      "decimals": 2,
      "delayed": false,
      "updated_at": "2026-09-25T19:59:59+00:00"
    },
    "range_52_weeks": {
      "low": 213.674076,
      "high": 303.139452
    },
    "...": "6 more fields"
  },
  "error": null
}
```

### Call it from your code

Replace `YOUR_API_TOKEN` with your token (Apify Console → Settings → Integrations)
and `pintostudio` with your Apify username.

**Using the API** (runs the actor and returns the results in one call):

```bash
curl -X POST "https://api.apify.com/v2/acts/pintostudio~investing-com-stocks/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"instruments": ["AAPL"], "dataToGet": ["overview"]}'
```

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("pintostudio/investing-com-stocks").call(run_input={
    "instruments": ["AAPL", "MSFT"],
    "dataToGet": ["overview"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["input"], item["dataType"], item["data"])
```

**JavaScript** (`npm install apify-client`):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('pintostudio/investing-com-stocks').call({
    instruments: ["AAPL", "MSFT"],
    dataToGet: ['overview'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Proxy

Investing.com blocks many IPs, so every request goes through a proxy. You have two options in **Proxy** (`proxyType`):

| Option | What happens | Who pays for the proxy |
|--------|--------------|------------------------|
| **Our proxy** (default) | Requests go through our proxy. Nothing to set up. | Included in the event price, no extra cost. |
| **My own proxy** | Requests go through the proxy URLs you add in **Your proxy URLs** (`ownProxyUrls`). Several URLs are rotated. | You, directly to your proxy provider. The actor price stays the same. |

Apify Proxy is not used by this actor, so it never adds proxy usage to your Apify bill.
If you choose **My own proxy** without adding a URL, the run stops with a clear message.

### Pricing

You only pay for what you get (pay per event). Items that fail are **never charged**.

| Event | Price | When |
|-------|-------|------|
| Actor start | $0.00005 | Once per run |
| Stock data | $0.005 | Each stock × basic option (overview, historical, technical, profile, news, related) |
| Stock fundamentals | $0.008 | Each stock × fundamental option (income statement, balance sheet, cash flow, ratios, earnings, dividends, forecast) |
| Market row | $0.0005 | Each row of a market list (listing, top gainers, top losers, most active) |

**Examples:** overview of 100 stocks ≈ $0.50 · full financial statements (3 statements) for 10 stocks ≈ $0.24 · top 100 gainers ≈ $0.05.
Historical prices are charged once per stock, no matter how many days you ask for.
Set a **maximum cost per run** and the actor stops cleanly when it is reached.
Tip: ask for several stocks and options in one run, it is faster than many small runs.

### Good to know

- **Not sure what to type?** Paste the link of the stock from investing.com.
  It always works.
- **Currency:** prices are converted with the live exchange rate. Historical prices,
  dividends, earnings and financial statements use the rate of **each date**.
  Percentages, ratios and volumes are never converted. The item's `meta` shows the
  rate used.
- **Language:** changes names, descriptions and news. Numbers stay the same.
- **Errors:** if one stock or option fails, you get an item with an
  `error` explaining why, and everything else still runs.
- **Proxy:** see [Proxy](#proxy) above. By default you do not need to do anything.

# Actor input Schema

## `instruments` (type: `array`):

Ticker symbols (AAPL), company names (Apple), ISIN codes (US0378331005) or investing.com links. One per line.

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

Helps when the same symbol exists in several countries. A name (united states) or a 2-letter code (US).

## `dataToGet` (type: `array`):

Pick one or more. Options starting with MARKET do not need anything in the list above.

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

investing.com edition to read. Names, descriptions and news come in this language.

## `currency` (type: `string`):

Convert prices into this currency, e.g. EUR, BRL, JPY. Type 'local' for the currency of the chosen language's country. Leave empty to keep each instrument's own currency.

## `historicalFrom` (type: `string`):

First date for 'Historical prices'. Empty = 30 days ago.

## `historicalTo` (type: `string`):

Last date for 'Historical prices'. Empty = today.

## `historicalInterval` (type: `string`):

One row per day, per week or per month.

## `historicalOrder` (type: `string`):

Oldest first or newest first.

## `splitHistoricalRows` (type: `boolean`):

Save each price row as its own dataset item (best for Excel/CSV export).

## `technicalInterval` (type: `string`):

Timeframe of the technical analysis (Daily is the usual choice).

## `financialPeriod` (type: `string`):

Yearly or quarterly income statement, balance sheet and cash flow.

## `marketCountry` (type: `string`):

Country for the MARKET options: a name (germany) or a 2-letter code (DE).

## `marketLimit` (type: `integer`):

How many rows the MARKET options return at most.

## `proxyType` (type: `string`):

Our proxy is included in the price, you pay nothing extra. Choose "My own proxy" to send the requests through your own proxy instead (its traffic is billed by your proxy provider, not by us).

## `ownProxyUrls` (type: `array`):

Only used when Proxy is "My own proxy". One URL per line, e.g. http://user:pass@host:port. Several URLs are rotated.

## Actor input object example

```json
{
  "instruments": [
    "AAPL",
    "MSFT"
  ],
  "dataToGet": [
    "overview"
  ],
  "language": "en",
  "historicalInterval": "daily",
  "historicalOrder": "asc",
  "splitHistoricalRows": false,
  "technicalInterval": "1d",
  "financialPeriod": "annual",
  "marketCountry": "US",
  "marketLimit": 100,
  "proxyType": "ours"
}
```

# Actor output Schema

## `results` (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 = {
    "instruments": [
        "AAPL",
        "MSFT"
    ],
    "dataToGet": [
        "overview"
    ],
    "proxyType": "ours"
};

// Run the Actor and wait for it to finish
const run = await client.actor("pintostudio/investing-com-stocks").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 = {
    "instruments": [
        "AAPL",
        "MSFT",
    ],
    "dataToGet": ["overview"],
    "proxyType": "ours",
}

# Run the Actor and wait for it to finish
run = client.actor("pintostudio/investing-com-stocks").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 '{
  "instruments": [
    "AAPL",
    "MSFT"
  ],
  "dataToGet": [
    "overview"
  ],
  "proxyType": "ours"
}' |
apify call pintostudio/investing-com-stocks --silent --output-dataset

```

## MCP server setup

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

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/hApGStXwqIZAE4EMU/builds/V3yN3dffNOpt4vV7J/openapi.json
