Multi-Source FX Rates from Free Public APIs avatar

Multi-Source FX Rates from Free Public APIs

Pricing

from $0.25 / 1,000 results

Go to Apify Store
Multi-Source FX Rates from Free Public APIs

Multi-Source FX Rates from Free Public APIs

Aggregate free foreign-exchange rates from Frankfurter (ECB-backed), ECB daily XML, and open.er-api — no API keys, no login. One dataset row per source/base/quote with rate, amount, and rate date. Unofficial; not affiliated with the ECB or ExchangeRate-API.

Pricing

from $0.25 / 1,000 results

Rating

0.0

(0)

Developer

Bakos Bence

Bakos Bence

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Share

What is Multi-Source FX Rates from Free Public APIs?

Aggregate free foreign-exchange rates from Frankfurter (ECB-backed), ECB daily XML, and open.er-api — no API keys, no login. One dataset row per source/base/quote with rate, amount, and rate date.

What Multi-Source FX Rates from Free Public APIs returns

FieldWhat it isExample
sourceSourcefrankfurter
baseCurrencyBase currencyUSD
quoteCurrencyQuote currencyEUR
rateRate0.86
amountAmount1
rateDateRate date2026-09-07
sourceUrlSource URLhttps://api.frankfurter.dev/v1/latest?from=USD
scrapedAtScraped at2026-09-08T10:00:00+00:00

How do I run Multi-Source FX Rates from Free Public APIs?

  1. Click Try for free.
  2. Fill Base currency (ISO code), Quote currencies to include and Rate feeds.
  3. Click Start.
  4. Open the dataset and download it, or send it on with one of the integrations below.

Saved runs on the Tasks tab:

Input

The Input tab lists every field. The sample input is:

{
"baseCurrency": "USD",
"quoteCurrencies": [],
"sources": [
"frankfurter",
"ecb",
"open_er_api"
],
"maxItems": 5
}

Output

One row looks like this. scrapedAt, when present, is the time that run finished.

{
"source": "frankfurter",
"baseCurrency": "USD",
"quoteCurrency": "EUR",
"rate": 0.86,
"amount": 1,
"rateDate": "2026-09-07",
"scrapedAt": "2026-09-08T10:00:00+00:00",
"sourceUrl": "https://api.frankfurter.dev/v1/latest?from=USD"
}

How much does Multi-Source FX Rates from Free Public APIs cost?

You pay for each row saved. Platform usage is included. Current rates are on the Pricing tab.

How pay-per-event billing works: Actors in Store.

Integrations

Excel

  1. Click Try for free, run this Actor, and wait until the run finishes.
  2. Open that run and go to its dataset.
  3. Choose Export, then Excel.

To download the newest successful run later without opening the dataset:

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
  3. Run that task once.
  4. Paste this into a browser. Replace TASK_ID and YOUR_TOKEN.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=xlsx&clean=true&status=SUCCEEDED&token=YOUR_TOKEN

Anyone with that URL can read the rows. Treat the token like a password.

Dataset export formats: Dataset items.

Google Sheets

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
  3. Run that task once so there is a successful dataset.
  4. In a Google Sheet, click cell A1 and paste this formula. Replace TASK_ID and YOUR_TOKEN.
=IMPORTDATA("https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN")
  1. Wait until the columns fill. Sheets refreshes IMPORTDATA on its own. Use Data → Data connectors → Refresh when you want it now.

Anyone with that URL can read the rows. Treat the token like a password.

API, Python, and Node

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. Send this request. Replace YOUR_TOKEN.
curl -X POST "https://api.apify.com/v2/acts/bakos_bence~currency-rates/runs?token=YOUR_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{"baseCurrency":"USD","quoteCurrencies":[],"sources":["frankfurter","ecb","open_er_api"],"maxItems":5}'
  1. From the response, copy defaultDatasetId.
  2. Fetch the rows:
https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=YOUR_TOKEN

The API tab on this page has the same call in JavaScript, Python, and the CLI. Client docs: JavaScript, Python, Run an Actor.

Zapier

  1. In Apify Console, open Settings → API & Integrations and copy an API token. You will only need it if the connection asks for a token. The usual path is the access prompt below.
  2. In Zapier, create a Zap. For the action, search Apify and choose Run Actor.
  3. Connect your Apify account and choose Allow Access.
  4. Select Multi-Source FX Rates from Free Public APIs.
  5. Paste this input:
{
"baseCurrency": "USD",
"quoteCurrencies": [],
"sources": [
"frankfurter",
"ecb",
"open_er_api"
],
"maxItems": 5
}
  1. Use a synchronous run only when the run will finish within 30 seconds. Otherwise leave it asynchronous, then add Fetch dataset items, or start the Zap with the Finished Actor run trigger.
  2. Test the step. Add the next action, such as Google Sheets, Slack, or email. Publish the Zap.

Triggers and the other actions: Zapier integration.

Make

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. In a Make scenario, add a module and search Apify.
  3. Create the connection with OAuth, or paste the API token.
  4. Choose Run an Actor. Select Multi-Source FX Rates from Free Public APIs. Set Run synchronously to Yes.
  5. Paste this input:
{
"baseCurrency": "USD",
"quoteCurrencies": [],
"sources": [
"frankfurter",
"ecb",
"open_er_api"
],
"maxItems": 5
}
  1. Add Get Dataset Items. Set the dataset ID to the default dataset ID from the Run an Actor module.
  2. Add the module that should receive the rows, such as Google Sheets Bulk add rows, and map the fields.

If the run can take longer than your Make plan lets a synchronous module wait, start with Watch Actor Runs instead, then add Get Dataset Items. Details: Make integration.

n8n

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On n8n Cloud, open the nodes panel, search Apify, and install the node. On a self-hosted n8n, go to Settings → Community Nodes → Install and enter @apify/n8n-nodes-apify.
  3. Create a credential. Search Apify API, paste the token, and save. On n8n Cloud you can use Apify OAuth2 instead.
  4. Add an Apify node. Choose Run Actor. Pick Multi-Source FX Rates from Free Public APIs. Turn on Wait for finish.
  5. Set the input to:
{
"baseCurrency": "USD",
"quoteCurrencies": [],
"sources": [
"frankfurter",
"ecb",
"open_er_api"
],
"maxItems": 5
}
  1. Add another Apify node, Get Dataset Items. Set the dataset ID to the defaultDatasetId from the Run Actor node.
  2. Add the next node, such as Google Sheets, and map the fields.

Full setup, triggers, and the AI-tool node: n8n integration.

Power BI

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
  3. Run that task once.
  4. Open Power BI Desktop → Home → Get data → Web.
  5. Paste this URL. Replace TASK_ID and YOUR_TOKEN.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
  1. When asked how to sign in, choose Anonymous → Connect.
  2. Check that the preview is a table, then Load.
  3. After you publish, schedule refresh against that same URL.

A 401 means the token is missing or you did not choose Anonymous. Anyone with the URL can read the rows.

Looker Studio

Looker Studio does not open a private CSV URL on its own. Put the rows in a Google Sheet first.

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
  3. Run that task once.
  4. In a Google Sheet, click cell A1 and paste this formula. Replace TASK_ID and YOUR_TOKEN.
=IMPORTDATA("https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN")
  1. Wait until the columns fill.
  2. In Looker Studio, choose Create → Report → Google Sheets and pick that spreadsheet.
  3. After the next run, refresh the Sheet, then refresh the Looker data source.

For a single snapshot, open the finished run, export CSV from the dataset, and use File upload in Looker Studio.

Tableau

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
  3. Run that task once.
  4. In Tableau Desktop 2023.3+, install the REST API connector from Tableau Exchange.
  5. Choose Connect → To a Server → REST API.
  6. Paste this URL. Replace TASK_ID and YOUR_TOKEN. Set the response format to CSV.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
  1. Leave credentials empty. The token is already in the URL.
  2. Create an extract. Refresh it after the next run.

For a single snapshot, open the finished run, export CSV from the dataset, and connect Tableau to that file.

Qlik

  1. In Apify Console, open Settings → API & Integrations and copy an API token.
  2. On this Actor, open the Tasks tab, open the task you want, and copy the task ID from the URL.
  3. Run that task once.
  4. In Qlik Cloud or Qlik Sense, choose Add data → REST.
  5. Set the method to GET and paste this URL. Replace TASK_ID and YOUR_TOKEN.
https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=csv&clean=true&status=SUCCEEDED&token=YOUR_TOKEN
  1. Set the response type to CSV.
  2. Test the connection, pick the table, and load.
  3. Reload the app after the next run.

For a single snapshot, open the finished run, export CSV from the dataset, and add that file in Qlik.

Webhooks

  1. In Apify Console, open this Actor and go to Integrations.
  2. Add a webhook for Actor run succeeded.
  3. Set the URL of the service that should receive the run.
  4. When a run finishes, the payload includes defaultDatasetId. Read the rows with this URL. Replace DATASET_ID and YOUR_TOKEN. The token is under Settings → API & Integrations.
https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=YOUR_TOKEN

Event types and the payload: Webhooks.

AI tools

  1. Open the API tab on this Actor.
  2. Copy the MCP config shown there.
  3. Paste it into the MCP client (Claude, Cursor, or another client that accepts that config).
  4. Sign in when the client asks. It can then run this Actor.

Setup for each client: Apify MCP server.

Airtable, Google Drive, Slack, and Snowflake are listed in Integrations.

FAQ

How to scrape currency rates

  1. Open this Actor in Apify Console.
  2. Click Start on the prefilled USD sample (5 rows).
  3. Export the dataset or pull via API.
{
"baseCurrency": "USD",
"quoteCurrencies": [],
"sources": ["frankfurter", "ecb", "open_er_api"],
"maxItems": 5
}

FAQ

Is this official ECB or bank software?

No. It is unofficial and not affiliated with the ECB or any rate provider.

Do I need an API key?

No — only free public endpoints.

Can AI agents call this?

Yes — Actor ID bakos_bence/currency-rates via Apify API or MCP.

Something broke?

Open the Issues tab on this Actor’s page.

Can I schedule this?

Yes. Save a Task from the input you want, then add a schedule in Console. After each successful run, this URL returns that task’s newest dataset. Replace TASK_ID and YOUR_TOKEN (the token is under Settings → API & Integrations).

https://api.apify.com/v2/actor-tasks/TASK_ID/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED&token=YOUR_TOKEN

This Actor is not affiliated with the ECB or ExchangeRate-API.