# Currency Exchange Rates: Live & History for 160+ Currencies (`scrapemint/currency-exchange-rates-scraper`) Actor

Get exchange rates for 160+ world currencies as clean rows: live rates for any base currency, plus daily historical rates back to 1999 for 30 major currencies. Perfect for pricing tools, invoicing, dashboards and backtesting. No API key needed.

- **URL**: https://apify.com/scrapemint/currency-exchange-rates-scraper.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

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

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

## Currency Exchange Rates: Live & History for 160+ Currencies

Get exchange rates as clean rows, ready for your app, spreadsheet or database. Two modes in one tool: **live rates for 160+ world currencies** (one row per currency pair), and **daily historical rates back to 1999** for 30 major currencies, straight from European Central Bank reference data.

Built for **pricing tools, invoicing, e-commerce, dashboards, accounting and backtesting**. Pick your base currencies (USD, EUR, KES, INR, anything), optionally pick targets, and get every pair as its own row. No signup and no API key.

### What you get for each currency pair

- **base** and **target**: the 3 letter currency codes
- **rate**: how much 1 unit of the base is worth in the target currency
- **inverseRate**: the reverse conversion, precomputed
- **date**: the day the rate applies to
- **source**: where the rate comes from (Open ER API for live, ECB for history)

### Example output

```json
{
  "base": "USD",
  "target": "KES",
  "rate": 129.28,
  "inverseRate": 0.0077351,
  "date": "2026-07-14",
  "source": "open.er-api.com",
  "valid": true
}
````

### Live rates or history?

- **Live rates**: 160+ currencies, refreshed daily. Every world currency you are likely to need, from EUR and JPY to KES, NGN, VND and PKR.
- **Historical daily rates**: European Central Bank reference rates, every banking day back to January 1999, for 30 major currencies. One run can pull a full decade of EUR/USD daily rates for backtesting or reporting.

### Pricing

**$0.001 per rate row.** Unsupported currency codes are **free**, and the first 2 rows of every run are free. A full live snapshot of one base against all 166 currencies costs about $0.17; ten years of daily USD to EUR history (about 2,500 rows) costs about $2.50. Commercial exchange rate APIs start at $10 to $50 per month for the same data.

### How to run it via API

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~currency-exchange-rates-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"baseCurrencies": ["USD"], "targetCurrencies": ["EUR", "GBP", "KES"], "dataType": "latest"}'
```

For history, add dates:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~currency-exchange-rates-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"baseCurrencies": ["EUR"], "targetCurrencies": ["USD"], "dataType": "history", "startDate": "2020-01-01"}'
```

### Frequently asked questions

**How fresh are the live rates?** They update once a day, which is what most billing, invoicing and reporting needs. This tool is not a real time trading feed.

**Why does history cover fewer currencies?** Historical rates come from the European Central Bank, which publishes daily reference rates for 30 major currencies. Live rates cover 160+.

**Are these the rates my bank will give me?** These are mid-market reference rates, the same kind shown by Google or XE. Banks and card networks add their own spread on top.

**Where does the data come from?** Live rates from the Open ER API public feed, historical rates from European Central Bank reference data via frankfurter.dev. Both are public, reputable sources.

### More tools from Scrapemint

- [World Economic Indicators Scraper](https://apify.com/scrapemint/world-economic-indicators-scraper): GDP, inflation and 29,000+ indicators for every country.
- [Crypto Market Data Scraper](https://apify.com/scrapemint/crypto-market-data-scraper): live crypto prices and market caps.
- [TradingView Stock Screener](https://apify.com/scrapemint/tradingview-stock-screener): screen thousands of stocks by fundamentals and technicals.

# Actor input Schema

## `baseCurrencies` (type: `array`):

Currencies to convert FROM, as 3 letter codes (USD, EUR, KES...). One row is produced per base and target pair.

## `targetCurrencies` (type: `array`):

Currencies to convert TO. Leave empty to get every available currency (160+ for live rates, 30 majors for history).

## `dataType` (type: `string`):

Live rates cover 160+ currencies, updated daily. Historical rates come from the European Central Bank: daily values back to 1999 for 30 major currencies.

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

First date for historical rates, YYYY-MM-DD. Ignored for live rates.

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

Last date for historical rates, YYYY-MM-DD. Leave empty for today. Ignored for live rates.

## `maxRows` (type: `integer`):

Stop after this many rows in total (protects your budget on long date ranges).

## Actor input object example

```json
{
  "baseCurrencies": [
    "USD",
    "EUR"
  ],
  "targetCurrencies": [
    "EUR",
    "GBP",
    "JPY",
    "INR",
    "KES",
    "NGN",
    "BRL",
    "USD"
  ],
  "dataType": "latest",
  "startDate": "2026-06-01",
  "maxRows": 1000
}
```

# 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 = {
    "baseCurrencies": [
        "USD",
        "EUR"
    ],
    "targetCurrencies": [
        "EUR",
        "GBP",
        "JPY",
        "INR",
        "KES",
        "NGN",
        "BRL",
        "USD"
    ],
    "startDate": "2026-06-01"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/currency-exchange-rates-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 = {
    "baseCurrencies": [
        "USD",
        "EUR",
    ],
    "targetCurrencies": [
        "EUR",
        "GBP",
        "JPY",
        "INR",
        "KES",
        "NGN",
        "BRL",
        "USD",
    ],
    "startDate": "2026-06-01",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/currency-exchange-rates-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 '{
  "baseCurrencies": [
    "USD",
    "EUR"
  ],
  "targetCurrencies": [
    "EUR",
    "GBP",
    "JPY",
    "INR",
    "KES",
    "NGN",
    "BRL",
    "USD"
  ],
  "startDate": "2026-06-01"
}' |
apify call scrapemint/currency-exchange-rates-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Currency Exchange Rates: Live & History for 160+ Currencies",
        "description": "Get exchange rates for 160+ world currencies as clean rows: live rates for any base currency, plus daily historical rates back to 1999 for 30 major currencies. Perfect for pricing tools, invoicing, dashboards and backtesting. No API key needed.",
        "version": "0.1",
        "x-build-id": "Bh5abG44OnrxtnNmQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~currency-exchange-rates-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-currency-exchange-rates-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/scrapemint~currency-exchange-rates-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-currency-exchange-rates-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/scrapemint~currency-exchange-rates-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-currency-exchange-rates-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",
                "required": [
                    "baseCurrencies"
                ],
                "properties": {
                    "baseCurrencies": {
                        "title": "Base currencies",
                        "type": "array",
                        "description": "Currencies to convert FROM, as 3 letter codes (USD, EUR, KES...). One row is produced per base and target pair.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "targetCurrencies": {
                        "title": "Target currencies",
                        "type": "array",
                        "description": "Currencies to convert TO. Leave empty to get every available currency (160+ for live rates, 30 majors for history).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dataType": {
                        "title": "What to fetch",
                        "enum": [
                            "latest",
                            "history"
                        ],
                        "type": "string",
                        "description": "Live rates cover 160+ currencies, updated daily. Historical rates come from the European Central Bank: daily values back to 1999 for 30 major currencies.",
                        "default": "latest"
                    },
                    "startDate": {
                        "title": "History start date",
                        "type": "string",
                        "description": "First date for historical rates, YYYY-MM-DD. Ignored for live rates."
                    },
                    "endDate": {
                        "title": "History end date",
                        "type": "string",
                        "description": "Last date for historical rates, YYYY-MM-DD. Leave empty for today. Ignored for live rates."
                    },
                    "maxRows": {
                        "title": "Max rows",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Stop after this many rows in total (protects your budget on long date ranges).",
                        "default": 1000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
