# Fed H.10 Exchange Rates API — Daily FX & Dollar Index (`nexgensignal/fed-h10-foreign-exchange-rate-observations`) Actor

Federal Reserve H.10 exchange rates as data: daily, monthly and annual rates for 23 currencies against the US dollar plus the Board's nominal dollar indexes, history to 1971. Filter by currency and date. No API key. Part of NexGen Signal — official-source data products

- **URL**: https://apify.com/nexgensignal/fed-h10-foreign-exchange-rate-observations.md
- **Developed by:** [NexGen Signal](https://apify.com/nexgensignal) (community)
- **Categories:** News, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $33.50 / 1,000 h.10 exchange-rate observations

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

## 💱 Fed H.10 Exchange Rates API — Daily FX & Dollar Index

Get the Federal Reserve Board's H.10 / G.5 foreign exchange rates as clean records — business-day rates for 23 currencies against the US dollar (euro, yen, pound, Canadian dollar, yuan, peso and more), monthly and annual averages, and the Board's nominal dollar indexes (broad, advanced foreign economies, emerging markets) — straight from the Board's official release package.

Treasury teams, FX analysts, accountants and researchers use H.10 as the reference US dollar rate. The Board publishes it as one ZIP of SDMX XML: this actor reads the series you ask for and delivers one record per rate per date, with description, unit and frequency — no XML parsing, no API key.

The unit of output is one observation (one series, one date). You pay per observation delivered; a run that finds nothing costs nothing.

### 📊 Sample Output

![Table of Federal Reserve H.10 observations: the euro against the US dollar, business-day rates, September 2026.](https://api.apify.com/v2/key-value-stores/IXCaMKjxSmUTLHhmq/records/fed-h10-foreign-exchange-rate-observations.png)

| series_name | date | value | series_description | frequency |
|---|---|---|---|---|
| RXI$US_N.B.EU | 2026-09-25 | 1.14 | EMU Members Euro (USD per EUR) | Business day |
| RXI$US_N.B.EU | 2026-09-24 | 1.1373 | EMU Members Euro (USD per EUR) | Business day |
| RXI$US_N.B.EU | 2026-09-23 | 1.1394 | EMU Members Euro (USD per EUR) | Business day |
| RXI$US_N.B.EU | 2026-09-22 | 1.1432 | EMU Members Euro (USD per EUR) | Business day |
| RXI$US_N.B.EU | 2026-09-21 | 1.1469 | EMU Members Euro (USD per EUR) | Business day |

Rows from live run `HCiJkdBbWX17dU74g` on Apify (input: currencies EUR, JPY, GBP, CAD from 1 August 2026, 40 records). Notice the quoting direction in the description (USD per EUR) and the newest business day first; euro and pound filled the 40 records because they come first in the Board's file.

### ✅ What you get

Every field of each record:

- `record_id` — `H10:<series_name>:<date>`, unique per observation.
- `series_name` — the Board's series code, e.g. `RXI$US_N.B.EU`.
- `series_description` — short description with the quoting direction, e.g. `EMU Members Euro (USD per EUR)`.
- `series_long_description` — the Board's long description.
- `currency` — ISO currency code; null where the Board gives none (the dollar indexes).
- `fx_code` — the Board's FX code — the currency, or `BRD`, `AFE`, `EME` and the goods-only codes for the indexes.
- `fx_label` — the Board's label for that code, e.g. `Euro Area / U.S. Dollars per Euro`.
- `unit` — unit from the Board's code list, e.g. `Currency: Per USD` or `Index: 1997 Jan = 100`.
- `unit_multiplier` — unit multiplier as published.
- `frequency` — `Business day`, `Monthly` or `Annual`.
- `date` — observation date (ISO date for daily; month or year as published).
- `value` — the rate or index value.
- `observation_status`, `observation_status_label` — `A` (normal) or `ND` (no data, e.g. a holiday), with the Board's label.
- `release`, `release_prepared` — release name and when the Board prepared the package.
- `source`, `source_dataset`, `licence`, `attribution`, `observed_at` — provenance on every record: the Board and release, the file and its last-modified time, the Board's public-domain notice quoted, the citation the Board asks for, and the UTC read time.

### ⚙️ Sample inputs

**1. Store example — euro, yen and Canadian dollar**

```json
{
  "currencies": ["EUR", "JPY", "CAD"],
  "maxRecords": 10
}
```

The 10 newest business-day euro rates (the first matching series in the Board's file); about $0.50 on the Free plan.

**2. Narrowed — daily euro and yen since January 2026**

```json
{
  "currencies": ["EUR", "JPY"],
  "frequencies": ["daily"],
  "dateFrom": "2026-01-01",
  "maxRecords": 500
}
```

Every business-day rate this year for both currencies.

**3. Bulk — latest value of every series**

```json
{
  "dateFrom": "1971-01-01",
  "latestOnly": true,
  "maxRecords": 100
}
```

One record per series (87 in the release): the newest rate or index value. About $4.35 on Free, $2.91 on Gold.

Input fields:

| Field | Meaning |
|---|---|
| `currencies` | ISO codes (EUR, JPY, CAD, GBP, CNY, MXN …) or the index codes `BRD`, `AFE`, `EME` |
| `seriesNames` | exact Board series codes, e.g. `RXI$US_N.B.EU` or `JRXWTFB_N.B` |
| `dateFrom` | only observations on or after this date |
| `dateTo` | only observations on or before this date |
| `frequencies` | any of `daily`, `monthly`, `annual` (empty = all) |
| `latestOnly` | one record per series: its most recent observation |
| `includeNoData` | also deliver days the Board marks no data (holidays), with a null value |
| `order` | `newest_first` (default) or `oldest_first` within each series |
| `maxRecords` | most observations delivered and billed in this run (default 1,000) |

### 🧾 JSON sample record

```json
{
  "record_id": "H10:RXI$US_N.B.EU:2026-09-25",
  "series_name": "RXI$US_N.B.EU",
  "series_description": "EMU Members Euro (USD per EUR)",
  "series_long_description": "Euro-Area Euro",
  "currency": "EUR",
  "fx_code": "EUR",
  "fx_label": "Euro Area / U.S. Dollars per Euro",
  "unit": "Currency",
  "unit_multiplier": "1",
  "frequency": "Business day",
  "date": "2026-09-25",
  "value": 1.14,
  "observation_status": "A",
  "observation_status_label": "Normal",
  "release": "G.5/H.10 - Foreign Exchange Rates",
  "release_prepared": "2026-10-01T17:49:49",
  "source": "Board of Governors of the Federal Reserve System — H.10 / G.5 Foreign Exchange Rates (Data Download Program release package)",
  "source_dataset": "FRB_H10.zip (H10_data.xml), Last-Modified Sun, 04 Oct 2026 03:43:23 GMT",
  "licence": "Public domain. Federal Reserve Board: \"Unless otherwise indicated, information on Board's website is in the public domain and may be copied and distributed without permission. Please cite to the Board as the source of the information.\" (federalreserve.gov/disclaimer.htm)",
  "attribution": "Source: Board of Governors of the Federal Reserve System (US), H.10 Foreign Exchange Rates",
  "observed_at": "2026-10-04T03:43:23Z"
}
```

### 🔧 How it works

1. **Robots check.** `www.federalreserve.gov/robots.txt` is requested on every run. It answers with an HTML "page not found" (HTTP 404): **no robots policy is published (FLAGGED)**. The actor records that and relies on the Board's public-domain notice; a real robots.txt that disallows the download would stop the run with nothing charged.

2. **One release package.** The actor requests the Board's direct link for the full H.10 release (`datadownload/Output.aspx?filetype=zip&rel=H10`, about 2 MB), holds it in memory without saving it, and reads it with an incremental XML parser.

3. **Filter, deliver, charge.** Series are checked against your currencies, codes and frequencies; observations inside your date window become records, newest first by default, with no-data holidays skipped unless asked for. Records are pushed in batches and each batch is charged after delivery, so records and charges match. Parsing stops at `maxRecords` or your maximum charge.

4. **Receipt.** `RUN_RECEIPT` records the robots result, the file, the release's prepared time, series matched, and delivered and charged counts.

No login, API key, proxy or bot workaround — one public Board file, and no personal data in it.

### 💰 Pricing example

Per observation delivered, no start fee, no monthly charge:

| Apify plan | Price per observation |
|---|---|
| Free | $0.05 |
| Bronze | $0.045 |
| Silver | $0.04 |
| Gold, Platinum, Diamond | $0.0335 |

- 10 observations (the Store example): $0.50 on the Free plan, $0.335 on Gold.
- 1,000 observations (the default cap): $50 on Free, $45 on Bronze, $40 on Silver, $33.50 on Gold.
- 87 observations with `latestOnly` (one per series): $4.35 on Free, $2.91 on Gold.

**Coverage and size.** Live count from the release package read on 3 October 2026 (prepared 1 October 2026 17:49:49): **347,430 observations in 87 series** — 29 business-day, 29 monthly and 29 annual (23 currencies plus 6 dollar indexes at each frequency), from 4 January 1971. The planning index counted 347,430 observations across 87 series — they agree. 332,659 observations carry a value; 14,771 are no-data days, delivered only with `includeNoData`. A filter is required (currencies, series codes or a start date); a whole-release read takes seconds on Apify, and a full pull is 332,659 valued records, billed per observation. The goods-only dollar indexes end on 31 December 2019.

### ⚖️ Legal & ToS

Data: Board of Governors of the Federal Reserve System, G.5/H.10 Foreign Exchange Rates, from the Board's Data Download Program. The Board's notice says: "Unless otherwise indicated, information on Board's website is in the public domain and may be copied and distributed without permission. Please cite to the Board as the source of the information." Every record carries that notice in `licence` and a citation in `attribution`.

**Robots FLAG:** `www.federalreserve.gov/robots.txt` returns a 404 page — no robots policy is published. That is recorded on every run and not treated as permission by itself; the public-domain notice governs reuse. One public file, declared User-Agent, no login, key, proxy or form. Exchange rates and indexes only — no personal data.

**Source notice:** the package says the Data Download Program is being retired: "Build Your Package" goes during the week of November 9, the program later. This actor uses the release's direct link, not Build Your Package; if the Board withdraws it, runs end with a source-unavailable message and nothing is charged.

This actor is not affiliated with or endorsed by the Federal Reserve. Rates are the Board's as published — reference rates, not a trading feed.

### ❓ FAQ

**Do I need a FRED key or an account?**
No. The actor reads the Board's public release package, which needs no key, login or registration.

**Why must I give a currency, series code or start date?**
The full release is 347,430 observations. A filter keeps runs fast and bills only what you asked for; an unfiltered run is refused with a clear message.

**Which way are rates quoted?**
As the Board publishes them: most series are foreign currency per US dollar (e.g. yen per dollar); the euro, pound, Australian and New Zealand dollars are US dollars per unit of that currency. The `series_description` says which.

**How fresh is the data?**
As fresh as the Board's package — H.10 is published weekly with daily rates. Each record carries the package's prepared time.

**Can I get the dollar indexes?**
Yes: `currencies: ["BRD", "AFE", "EME"]` for the broad, advanced-foreign-economies and emerging-market nominal dollar indexes, or their series codes such as `JRXWTFB_N.B`.

### 🆘 Troubleshooting

- **0 records** — check the currency code (23 are published) or use an exact series code; remember `dateFrom` limits the window.
- **Holidays missing** — they are no-data days; set `includeNoData` to get them with a null value.
- **Only one currency returned** — the run stopped at `maxRecords`; raise it or use `latestOnly`.
- **SOURCE UNAVAILABLE message** — the Board's server did not answer after three tries; nothing was charged — run again later.
- **CAPPED message** — your maximum total charge was reached; raise it in the run options.

### 🔗 Related Actors

- [Australia Exchange Rates - RBA](https://apify.com/nexgensignal/au-exchange-rate-observation-series) — the Reserve Bank of Australia's exchange-rate series.
- [ECB Bank Lending & Deposit Rate Records — Euro Area MIR](https://apify.com/nexgensignal/ecb-bank-interest-rate-records) — euro-area bank interest rates.
- [Australia Money Market Rates - RBA](https://apify.com/nexgensignal/au-money-market-interest-rate-series) — Australian money-market rates.
- [CFTC Commitments of Traders (COT) Data — Weekly Positions](https://apify.com/nexgensignal/cftc-commitments-of-traders-records) — weekly futures positioning, including currency futures.
- [Fund & ETF Holdings API — SEC Form N-PORT Portfolio Records](https://apify.com/nexgensignal/sec-nport-fund-holdings-records) — fund holdings, including foreign-currency positions.

🏢 **About NexGen Signal** — official-source data products from government and regulator publications. Browse the catalog: [apify.com/nexgensignal](https://apify.com/nexgensignal)

### ⭐ Found this useful?

If this actor saved you time, a rating on its Apify Store page helps other buyers find it.

Part of NexGen Signal — official-source data products.

# Actor input Schema

## `currencies` (type: `array`):

ISO currency codes or Board FX codes, e.g. EUR, JPY, CAD, GBP, CNY, MXN; BRD, AFE, EME for the dollar indexes.

## `seriesNames` (type: `array`):

Exact Board series codes, e.g. RXI$US_N.B.EU (euro, business day) or JRXWTFB_N.B (nominal broad dollar index).

## `dateFrom` (type: `string`):

Only observations on or after this date.

## `dateTo` (type: `string`):

Only observations on or before this date.

## `frequencies` (type: `array`):

Any of daily, monthly, annual. Empty = all.

## `latestOnly` (type: `boolean`):

One record per series: its most recent observation.

## `includeNoData` (type: `boolean`):

Also deliver days the Board marks 'no data' (holidays), with a null value.

## `order` (type: `string`):

Observation order within each series.

## `maxRecords` (type: `integer`):

Most observations delivered and billed in this run. One record = one rate on one date.

## Actor input object example

```json
{
  "currencies": [
    "EUR",
    "JPY",
    "CAD"
  ],
  "seriesNames": [],
  "frequencies": [],
  "latestOnly": false,
  "includeNoData": false,
  "order": "newest_first",
  "maxRecords": 10
}
```

# Actor output Schema

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

The delivered (and billed) observations.

## `receipt` (type: `string`):

Release used, series matched, delivered and charged counts.

# 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 = {
    "currencies": [
        "EUR",
        "JPY",
        "CAD"
    ],
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgensignal/fed-h10-foreign-exchange-rate-observations").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 = {
    "currencies": [
        "EUR",
        "JPY",
        "CAD",
    ],
    "maxRecords": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgensignal/fed-h10-foreign-exchange-rate-observations").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 '{
  "currencies": [
    "EUR",
    "JPY",
    "CAD"
  ],
  "maxRecords": 10
}' |
apify call nexgensignal/fed-h10-foreign-exchange-rate-observations --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nexgensignal/fed-h10-foreign-exchange-rate-observations"
        }
    }
}
```

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/i3xeiieAzDImPrfCx/builds/IRpIa9ML9rSsqm2wF/openapi.json
