# Investing.com Scraper API - Quotes & Historical Prices (`sweet_stickball/investing-scraper`) Actor

Investing.com scraper and API alternative: live quotes (price, change, day and 52-week range, volume, market cap, P/E, EPS, dividend) and daily OHLCV price history for stocks, ETFs, indices, forex, crypto and commodities, by ticker, name or URL. No login.

- **URL**: https://apify.com/sweet_stickball/investing-scraper.md
- **Developed by:** [CrawlKit](https://apify.com/sweet_stickball) (community)
- **Categories:** Business, Automation, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.90 / 1,000 quotes

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?

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 Scraper API - Quotes & Historical Prices

Get live quotes and daily price history from Investing.com for stocks, ETFs, indices, currencies (forex), crypto, commodities and bonds. Give tickers, names, Investing.com instrument ids or instrument URLs; get flat JSON records ready for spreadsheets, databases or AI agents.

### What it does

- **Quote mode** (default): one record per instrument with last price, change, change %, open, day high/low, previous close, volume, 3-month average volume, 52-week high/low, bid/ask, last update time and whether the market is open. For stocks, also market cap, revenue, P/E ratio, EPS, dividend, beta, shares outstanding, next earnings date, performance (1 week to 3 years) and Investing.com's daily technical summary.
- **History mode**: one record per instrument and trading day with open, high, low, close, volume and the day-over-day change of the close, between `startDate` and `endDate` (default: last 30 days).
- Accepts tickers (`AAPL`), pairs (`EUR/USD`), names (`Bitcoin`, `Gold`), instrument ids (`6408`) and URLs (`https://www.investing.com/equities/tesla-motors`).
- No login, no API key.

### Input

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `symbols` | array of strings | Yes | — | Tickers, names, Investing.com instrument ids or instrument URLs |
| `mode` | string | No | `quote` | `quote` (latest quote) or `history` (daily OHLCV rows) |
| `startDate` | string | No | 30 days before `endDate` | History start, `YYYY-MM-DD` |
| `endDate` | string | No | today | History end, `YYYY-MM-DD` |
| `includeFundamentals` | boolean | No | `true` | Quote mode: add market cap, P/E, EPS, dividend, performance... |
| `maxItems` | integer | No | 100 | Maximum records (quotes, or daily rows across all symbols) |

Example:

```json
{
    "symbols": ["AAPL", "EUR/USD", "Bitcoin"],
    "mode": "history",
    "startDate": "2026-09-01",
    "endDate": "2026-10-24",
    "maxItems": 200
}
```

How symbols are matched: the Investing.com search is queried. For a ticker (upper case, no space: `AAPL`, `BRK.B`, `EUR/USD`) the main listing with that symbol is used, then an instrument with that exact name; if nothing matches, the symbol is reported as not found rather than guessed. For a name (`Nestle`, `Gold`, `Deutsche Bank`) the instrument with that exact name is used, then the main listing whose name contains the words, then Investing.com's top result. Every record includes `name`, `exchange` and `instrumentId` so you can check the match. To target one listing exactly, pass its instrument id or its Investing.com URL. Numeric inputs are read as instrument ids (not as Asian exchange tickers such as `7203`).

### Output

Quote record (`mode: quote`):

```json
{
    "input": "AAPL",
    "symbol": "AAPL",
    "name": "Apple Inc",
    "instrumentId": 6408,
    "type": "Equities",
    "exchange": "NASDAQ",
    "country": "United States",
    "currency": "USD",
    "url": "https://www.investing.com/equities/apple-computer-inc",
    "price": 347.73,
    "change": -0.5,
    "changePercent": -0.14,
    "open": 349.12,
    "high": 351.73,
    "low": 345.75,
    "previousClose": 347.73,
    "volume": 39539690,
    "bid": null,
    "ask": null,
    "fiftyTwoWeekHigh": 351.73,
    "fiftyTwoWeekLow": 243.42,
    "lastUpdate": "2026-10-23T19:59:59Z",
    "avgVolume3m": 43915026,
    "marketOpen": false,
    "marketCap": 5070000000000,
    "revenue": 466820000000,
    "peRatio": 39.76,
    "eps": 8.7171,
    "dividend": 1.08,
    "beta": 1.09,
    "sharesOutstanding": 14594180000,
    "nextEarningsDate": "2026-11-02",
    "performanceWeek": 1.24,
    "performanceMonth": 1.95,
    "performanceYtd": 27.91,
    "performanceYear": 32.31,
    "performance3Year": 108.36,
    "technicalSignalDaily": "strong_buy",
    "scrapedAt": "2026-10-25T11:24:21.809599+00:00"
}
```

Price history record (`mode: history`), newest day first:

```json
{
    "input": "945629",
    "symbol": "BTC/USD",
    "name": "Bitcoin US Dollar",
    "instrumentId": 945629,
    "type": "currency",
    "exchange": "Bitfinex",
    "country": null,
    "currency": "USD",
    "url": "https://www.investing.com/crypto/bitcoin/btc-usd",
    "date": "2026-10-24",
    "open": 81216,
    "high": 81230,
    "low": 79283,
    "close": 80880,
    "volume": 480,
    "changePercent": -0.4186,
    "scrapedAt": "2026-10-25T11:24:37.935582+00:00"
}
```

Fields that do not apply to an instrument (market cap of a currency pair, bid/ask when not quoted) are `null`. Large values such as market cap and revenue are numbers in the instrument's currency.

### Pricing

Pay-per-event, **no start fee**: **$4.90 per 1,000 quotes** and **$0.35 per 1,000 daily price rows** on the Apify Free plan, with lower prices on paid plans. Each quote (quote mode) or daily OHLCV row (history mode) pushed to the dataset is one event.

| Event | Free | Starter | Scale | Business | Enterprise |
|-------|------|---------|-------|----------|------------|
| Quote (`QUOTE`) | $4.90 | $4.20 | $3.70 | $2.90 | $2.90 |
| Daily price row (`PRICE_ROW`) | $0.35 | $0.30 | $0.26 | $0.21 | $0.21 |

Prices in USD per 1,000 events.

#### Cost examples (Free plan)

| Scenario | Daily rows | Cost |
|----------|------------|------|
| 1 symbol, 1 year | 252 | $0.0882 |
| 10 symbols, 1 year | 2,520 | $0.882 |
| 1 symbol, 20 years | 5,040 | $1.76 |

### Limitations

- Prices are the values Investing.com publishes; depending on the exchange they can be delayed (often 15 minutes for stocks). Not suitable for trading execution.
- Name searches return the best match described above, which may be another listing than the one you expect (for example `Bitcoin` resolves to Investing.com's Bitcoin index, `Roche` to a Toronto listing); use the ticker, instrument id or URL for an exact instrument.
- History mode returns daily rows only (no intraday bars). Weekends and holidays have no row, except for markets that trade on those days (crypto).
- Fundamentals come from Investing.com's overview data and are null for instruments without them (currencies, crypto, commodities).
- Investing.com protects its pages with Cloudflare; the Actor uses the site's own JSON endpoints through rotating proxy sessions. A run can take a few extra seconds when sessions are refused.
- This Actor returns market data only; it is not financial advice.

### Related Actors

- [SEC EDGAR Filings & Yahoo Finance Scraper](https://apify.com/sweet_stickball/sec-edgar-yahoo-finance) — Scrape SEC EDGAR filings (10-K, 10-Q, 8-K) by ticker or CIK, plus stock quotes and annual financial statements from Yahoo Finance.
- [Google Trends Scraper - Interest Over Time & Related Queries](https://apify.com/sweet_stickball/google-trends-scraper) — Scrape Google Trends: interest over time and related queries for up to 5 compared keywords, by country, time range and category.
- [Google News Scraper API - Articles by Keyword, No Login](https://apify.com/sweet_stickball/google-news-scraper) — Scrape Google News articles for any keyword: headlines, sources, dates and URLs by country and language. News monitoring API, no API key or login.

# Actor input Schema

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

Instruments to fetch: tickers (AAPL, TSLA), currency pairs (EUR/USD), names (Bitcoin, Gold), Investing.com instrument ids (6408) or instrument URLs (https://www.investing.com/equities/apple-computer-inc). The best Investing.com search match is used: exact symbol first, then exact name, then the top result. Use an id or URL to target a specific listing (exchange).

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

'quote': one record per instrument with the latest price, change, day range, 52-week range, volume and fundamentals. 'history': one record per trading day with open, high, low, close and volume.

## `startDate` (type: `string`):

First day of the price history, YYYY-MM-DD. Default: 30 days before the end date.

## `endDate` (type: `string`):

Last day of the price history, YYYY-MM-DD. Default: today.

## `includeFundamentals` (type: `boolean`):

Quote mode: add market cap, P/E ratio, EPS, dividend, beta, revenue, next earnings date, performance (week to 3 years) and the daily technical signal. Null for instruments without them (currencies, crypto).

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

Maximum number of records: quotes in quote mode (one per symbol), daily rows across all symbols in history mode.

## Actor input object example

```json
{
  "symbols": [
    "AAPL",
    "EUR/USD",
    "Bitcoin"
  ],
  "mode": "quote",
  "startDate": "2026-01-01",
  "endDate": "2026-06-30",
  "includeFundamentals": true,
  "maxItems": 10
}
```

# Actor output Schema

## `quotes` (type: `string`):

Quote records (mode 'quote') shown with the 'quotes' view.

## `history` (type: `string`):

Daily OHLCV records (mode 'history') shown with the 'history' view.

# 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": [
        "AAPL",
        "EUR/USD",
        "Bitcoin"
    ],
    "mode": "quote",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("sweet_stickball/investing-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": [
        "AAPL",
        "EUR/USD",
        "Bitcoin",
    ],
    "mode": "quote",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("sweet_stickball/investing-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 '{
  "symbols": [
    "AAPL",
    "EUR/USD",
    "Bitcoin"
  ],
  "mode": "quote",
  "maxItems": 10
}' |
apify call sweet_stickball/investing-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sweet_stickball/investing-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/CwamvX06Jn6SqIzDD/builds/Gd9CO3XwkQvKjzWJg/openapi.json
