# Metal Prices Scraper (`parseforge/metalprices-com-scraper`) Actor

Scrapes MetalPrices.com for historical and current prices of 23 metals. Returns each price record with metal, price, unit, date, and currency in one flat row.

- **URL**: https://apify.com/parseforge/metalprices-com-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 12 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Metal Prices Scraper

**Scrape historical and current metal prices for 23 metals, from aluminum to zinc, in 65+ currencies.** Every record includes the price, unit, date, and currency. Export to CSV, JSON, Excel, or XML.

MetalPrices.com publishes daily spot prices for base metals, precious metals, and rare earths, but browsing the site means clicking through one metal at a time. This Actor reads the public price feeds directly, fetching historical time series for a single metal or today's snapshot for all 23 metals in one run. No API key or registration required.

| Who uses it | What they scrape MetalPrices.com for |
|---|---|
| Procurement managers | Monitor daily copper, aluminum, or steel prices to time purchase orders. |
| Commodity analysts | Pull years of gold, silver, or platinum history into a spreadsheet for trend analysis. |
| Recycling operators | Check current palladium, rhodium, or lithium prices before accepting a lot. |
| Academic researchers | Collect long-run price series for industrial metals to feed economic models. |

### What it does

This Actor collects metal price records from MetalPrices.com by metal code and date range, or fetches the current price for every metal at once, and returns each record as a flat row.

- 📅 **Historical mode:** fetch up to 10,000 days of price history for one metal, back to the year 2000.
- 🌐 **Current-all mode:** grab today's spot price for all 23 metals in a single run.
- 💱 **65+ currencies:** request prices in USD, EUR, GBP, JPY, or any supported currency code.
- ⚖️ **Flexible units:** choose pounds, troy ounces, grams, kilograms, or metric tons per metal.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with MetalPrices.com data

**📈 Build a commodity price dashboard.**

A procurement team runs the Actor daily in current-all mode, pipes the JSON into a BI tool, and overlays copper, aluminum, and nickel prices on their inventory levels.

**📊 Backtest a trading strategy.**

A quant researcher fetches 20 years of gold and silver history in USD per troy ounce, exports to CSV, and loads it into a backtesting engine.

**🏭 Set raw-material budgets.**

A manufacturer pulls the last 120 days of steel and zinc prices in EUR per metric ton to forecast next quarter's input costs.

**♻️ Price scrap metal lots.**

A recycler checks today's palladium, platinum, and rhodium prices in USD per ounce before quoting a catalytic converter shipment.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Reads the public MetalPrices.com feeds without registration or rate-limit headaches. |
| **One fixed schema** | Every record lands with the same columns: metal, price, unit, date, and currency. |
| **Bulk history** | Pull up to 1,000,000 records per run, covering two decades of daily prices. |
| **All metals at once** | Current-all mode returns 23 rows in seconds, one per metal. |

### How it compares

No other Store actor targets MetalPrices.com the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Metal Prices Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When MetalPrices.com changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor by selecting a metal code and a lookback period in days, or switch to current-all mode to pull every metal at once. Filters apply as each record is read so only the requested date range and currency reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "mode": "history",
  "maxItems": 10,
  "metalCode": "au",
  "currency": "USD",
  "unit": "oz",
  "period": 30
}
```

A larger pull:

```json
{
  "mode": "history",
  "maxItems": 200,
  "metalCode": "au",
  "currency": "USD",
  "unit": "oz",
  "period": 30
}
```

### Pricing

Pay-per-result: **$0.0045 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.45 |
| 1,000 results | $4.50 |
| 10,000 results | $45.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Metal Prices Scraper](https://apify.com/parseforge/metalprices-com-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to MetalPrices.com through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/metalprices-com-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that you set a valid metal code and a period greater than 0 in history mode. If the site layout changed, the Actor may need an update; contact support with your run ID.

**The currency I entered is not working.**

Make sure you used the three-letter ISO code like EUR, not the symbol. If the code is correct but prices still show in USD, the site may not support that currency for the selected metal.

**I got fewer records than I expected.**

The site may not have data for every calendar day. Weekends and holidays often have no published price. Try a wider date range or set period to 0 for all available history.

**The run timed out.**

Large historical requests can take a while. Increase the run timeout in the Actor's advanced settings, or reduce the period and run multiple smaller jobs.

### FAQ

| Question | Answer |
|---|---|
| Which metals can I scrape? | All 23 metals listed on MetalPrices.com: aluminum, cobalt, copper, gallium, gold, indium, iridium, iron ore, lead, lithium, molybdenum, neodymium, nickel, palladium, platinum, rhodium, ruthenium, silver, steel, tellurium, tin, uranium, and zinc. |
| How far back does the historical data go? | Daily prices are available back to roughly the year 2000 for most metals. Set the period to 0 to request all available history. |
| Can I get prices in my local currency? | Yes. Set the currency field to any supported code like EUR, GBP, JPY, or CNY. The Actor supports 65+ currencies. |
| What unit are the prices in? | You choose the unit per run. Precious metals default to troy ounces, base metals to pounds, but you can override with grams, kilograms, or metric tons. |
| Does this Actor need a MetalPrices.com account? | No. It reads the public price pages directly. No login, no API key, no registration. |
| How many records can I get in one run? | You can set maxItems up to 1,000,000. In current-all mode you get 23 rows per run. In history mode, one row per day per metal. |
| What output formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML from the Apify run detail page. |
| Can I schedule this scraper to run daily? | Yes. Use Apify's scheduler to run the Actor every morning in current-all mode and append the results to a dataset. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by MetalPrices.com. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Choose scraping mode. 'history' fetches historical prices for a single metal. 'currentAll' fetches today's prices for all 23 metals.

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

How many price records to collect per run.

## `metalCode` (type: `string`):

Select the metal to scrape prices for (used in history mode).

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

Currency code for prices (e.g. USD, EUR, GBP, JPY). Supports 65+ currencies.

## `unit` (type: `string`):

Price unit. Default depends on the metal (oz for precious metals, lb for base metals).

## `period` (type: `integer`):

Number of days of historical data (e.g. 30, 120, 480). Use 0 for all available history (back to ~2000). Only used in history mode.

## Actor input object example

```json
{
  "mode": "history",
  "maxItems": 10,
  "metalCode": "au",
  "currency": "USD",
  "unit": "oz",
  "period": 30
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with all scraped items

# 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 = {
    "mode": "history",
    "maxItems": 10,
    "metalCode": "au",
    "currency": "USD",
    "unit": "oz",
    "period": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/metalprices-com-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 = {
    "mode": "history",
    "maxItems": 10,
    "metalCode": "au",
    "currency": "USD",
    "unit": "oz",
    "period": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/metalprices-com-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 '{
  "mode": "history",
  "maxItems": 10,
  "metalCode": "au",
  "currency": "USD",
  "unit": "oz",
  "period": 30
}' |
apify call parseforge/metalprices-com-scraper --silent --output-dataset

```

## MCP server setup

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