# Euro Area Yield Curve, ECB Rates & Bund Spreads Panel (`mrdoe/euro-area-yields-ecb-rates-panel`) Actor

Daily euro area rates panel from the ECB: deposit facility, refinancing and lending rates, EUR short rate, AAA yield curve 3 month to 30 year, credit spread, EUR FX, plus monthly Germany, France, Italy and Spain yield spreads.

- **URL**: https://apify.com/mrdoe/euro-area-yields-ecb-rates-panel.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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?

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

![Euro Area Yield Curve, ECB Rates & Bund Spreads Panel - Euro area yield curve and ECB policy rates daily panel with country bond spreads to Germany](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/euro-area-yields-ecb-rates-panel--hero.png)

### What does Euro Area Yield Curve, ECB Rates & Bund Spreads Panel do?

Euro Area Yields & ECB Rates Panel returns euro area rates data in two modes. The daily panel has one row per business day with the ECB deposit facility, main refinancing and marginal lending rates, the euro short-term rate, the euro area AAA government yield curve at 3 month, 1, 2, 5, 10, 20 and 30 year points, the all-issuer 10 year yield and its spread to the AAA yield as a credit-stress gauge, curve spreads with a regime label, daily changes, the 1-year percentile of the 10 year yield and the euro against the dollar, pound, yen and Swiss franc. The country mode returns monthly long-term government bond yields for Germany, France, Italy, Spain, Portugal, Greece, the Netherlands, Belgium, Austria, Ireland and Finland with each spread to Germany in basis points, including the BTP-Bund and OAT-Bund spreads. All data is published by the ECB.

### Why use Euro Area Yield Curve, ECB Rates & Bund Spreads Panel?

- Two views in one Actor: a daily euro area panel and monthly country spreads to Germany.
- Ready to join: one row per date for models and dashboards.
- Official source: the ECB data portal.
- Credit-stress gauge: all-issuer versus AAA 10 year yield.
- Policy rates carried forward from their change dates, so every day has the rate in force. No API key or login.

### What makes this different

Euro rate data means learning ECB series keys and stitching policy rates, curves and FX together. This Actor selects the series, aligns them by date, carries step policy rates forward and adds the spreads and percentiles, and its country mode gives the BTP-Bund style spreads in one table.

### Who can use the Euro Area Yields & ECB Rates Panel and how?

- **Quant researchers:** add euro rates, credit spread and FX features to models.
- **Bond and macro analysts:** track BTP-Bund and OAT-Bund spreads against the euro curve.
- **Portfolio managers:** monitor ECB policy versus market yields.
- **Economists and students:** study the euro area curve and periphery spreads.
- **Newsletter writers:** publish a daily euro rates dashboard.
- **Fintech apps:** show euro rate context beside European accounts.
- **AI agent builders:** let an assistant answer what the ECB rate and Bund yield are.
- **Backtesting platforms:** filter signals by euro curve regime or country stress.

### How it works

![Euro Area Yield Curve, ECB Rates & Bund Spreads Panel workflow: your input, collection, output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/euro-area-yields-ecb-rates-panel--how-it-works.png)

1. **Your input** — set a date range or a lookback in days.
2. **The Actor collects it** — the Actor reads European Central Bank and joins the series by date.
3. **Your output** — you get one row per trading day with derived features; schedule it daily with delta mode to append each new day.

### What data can you extract?

The dataset has 32 fields per row:

| Field                           | Type   | Description                                                       |
| ------------------------------- | ------ | ----------------------------------------------------------------- |
| `date`                          | string | Date, YYYY-MM-DD (first of month in country view).                |
| `aaa_3m`                        | number | AAA euro area yield, 3 month, percent.                            |
| `aaa_1y`                        | number | AAA yield, 1 year, percent.                                       |
| `aaa_2y`                        | number | AAA yield, 2 year, percent.                                       |
| `aaa_5y`                        | number | AAA yield, 5 year, percent.                                       |
| `aaa_10y`                       | number | AAA yield, 10 year, percent.                                      |
| `aaa_20y`                       | number | AAA yield, 20 year, percent.                                      |
| `aaa_30y`                       | number | AAA yield, 30 year, percent.                                      |
| `all_issuers_10y`               | number | All-issuer euro area government yield, 10 year, percent.          |
| `estr`                          | number | Euro short-term rate, percent.                                    |
| `eur_usd`                       | number | US dollars per euro.                                              |
| `eur_gbp`                       | number | Pounds per euro.                                                  |
| `eur_jpy`                       | number | Yen per euro.                                                     |
| `eur_chf`                       | number | Swiss francs per euro.                                            |
| `deposit_facility_rate`         | number | ECB deposit facility rate, percent.                               |
| `main_refinancing_rate`         | number | ECB main refinancing operations rate, percent.                    |
| `marginal_lending_rate`         | number | ECB marginal lending facility rate, percent.                      |
| `spread_10y_2y_bps`             | number | Yield spread 10y 2y, basis points.                                |
| `spread_30y_10y_bps`            | number | Yield spread 30y 10y, basis points.                               |
| `aaa_10y_over_deposit_rate_bps` | number | Aaa 10y over deposit rate bps.                                    |
| `all_vs_aaa_10y_bps`            | number | All-issuer minus AAA 10 year yield, basis points (credit stress). |
| `estr_vs_deposit_rate_bps`      | number | Estr vs deposit rate bps.                                         |
| `curve_regime`                  | string | inverted, flat or normal.                                         |
| `change_10y_bps`                | number | 1-day change in 10y, basis points.                                |
| `change_2y_bps`                 | number | 1-day change in 2y, basis points.                                 |
| `change_deposit_rate_bps`       | number | 1-day change in deposit rate, basis points.                       |
| `eur_usd_change_1d_pct`         | number | 1-day change in eur usd, percent.                                 |
| `aaa_10y_percentile_1y`         | number | Percentile of aaa 10y over the last 252 trading days.             |
| `fetch_path`                    | string | How the data was obtained.                                        |
| `source`                        | string | Data source.                                                      |
| `scraped_at`                    | string | Timestamp.                                                        |
| `actor_version`                 | string | Actor version.                                                    |

### How to use Euro Area Yield Curve, ECB Rates & Bund Spreads Panel

![Euro Area Yield Curve, ECB Rates & Bund Spreads Panel input form](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/euro-area-yields-ecb-rates-panel--input.png)

1. Open the Actor and go to the **Input** tab.
2. Choose **Data view**: the daily euro area panel, or monthly country yields and spreads. Leave the dates empty for the last 90 days (400 days in country view) or set a range, and schedule with delta mode to append new rows.
3. Optionally set filters and a **Max results** limit.
4. Click **Start**. A default run finishes in under a minute.
5. Open the **Output** tab, then download the dataset or connect it to your tools.

### Input Parameters

| Parameter            | Type    | Required | Default                   | Description                                                                                                            |
| -------------------- | ------- | -------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `mode`               | string  | No       | `"daily_panel"`           | daily\_panel returns one row per business day; country\_yields returns monthly government yields and spreads to Germany. |
| `startDate`          | string  | No       | —                         | First trading date, YYYY-MM-DD. Leave empty to use the lookback below.                                                 |
| `endDate`            | string  | No       | —                         | Last trading date, YYYY-MM-DD. Leave empty for today.                                                                  |
| `lookbackDays`       | integer | No       | `90`                      | Used when no start date is set.                                                                                        |
| `newestFirst`        | boolean | No       | `true`                    | Return the newest day first. Turn off for chronological order.                                                         |
| `maxItems`           | integer | No       | `0`                       | Cap on returned rows. Set 0 for no limit.                                                                              |
| `deltaMode`          | boolean | No       | `false`                   | After the first run with a delta key, return and bill only days not delivered before.                                  |
| `deltaStateKey`      | string  | No       | `"default"`               | Name of the tracked stream.                                                                                            |
| `proxyConfiguration` | object  | No       | `{"useApifyProxy":false}` | Optional proxy. The sources work without one.                                                                          |

### Output Data

![Euro Area Yield Curve, ECB Rates & Bund Spreads Panel dataset table](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/euro-area-yields-ecb-rates-panel--output.png)

Daily view: `deposit_facility_rate`, `main_refinancing_rate`, `marginal_lending_rate` and `estr` are percent; `aaa_*` are euro area AAA government yields; `all_issuers_10y` includes all issuers, so `all_vs_aaa_10y_bps` is a stress gauge; `spread_*_bps` are basis points; `curve_regime` is inverted, flat or normal. Country view: `yield_xx` are monthly long-term yields per country and `spread_xx_vs_de_bps` are their spreads to Germany, with `widest_spread_vs_de_bps` and the average across countries. Country rows are dated to the first of the reference month.

![Euro Area Yield Curve, ECB Rates & Bund Spreads Panel field map of one record](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/euro-area-yields-ecb-rates-panel--fields.png)

A real dataset item:

```json
{
    "date": "2026-09-24",
    "aaa_3m": 2.6116095708,
    "aaa_1y": 3.0297028728,
    "aaa_2y": 3.2294000719,
    "aaa_5y": 3.3434829292,
    "aaa_10y": 3.5661681763,
    "aaa_20y": 3.8124981185,
    "aaa_30y": 3.7442467417,
    "all_issuers_10y": 4.0646327167,
    "estr": 2.44,
    "eur_usd": 1.1367,
    "eur_gbp": 0.85986,
    "eur_jpy": 180.57,
    "eur_chf": 0.9409,
    "deposit_facility_rate": 2.5,
    "main_refinancing_rate": 2.65,
    "marginal_lending_rate": 2.9,
    "spread_10y_2y_bps": 33.7,
    "spread_30y_10y_bps": 17.8,
    "aaa_10y_over_deposit_rate_bps": 106.6,
    "all_vs_aaa_10y_bps": 49.8,
    "estr_vs_deposit_rate_bps": -6,
    "curve_regime": "normal",
    "change_10y_bps": 4.3,
    "change_2y_bps": 1.1,
    "change_deposit_rate_bps": 0,
    "eur_usd_change_1d_pct": -0.386,
    "aaa_10y_percentile_1y": 100,
    "fetch_path": "ecb_sdmx_csv",
    "source": "european_central_bank_data_portal",
    "scraped_at": "2026-09-27T05:07:10.235Z",
    "actor_version": "1.0.0"
}
```

### How to read and use the results

1. **Read curve\_regime and spread\_10y\_2y\_bps** for the euro curve slope.
2. **Check all\_vs\_aaa\_10y\_bps** for credit stress.
3. **Compare aaa\_10y with the deposit rate** for policy expectations.
4. **Use country view** for spreads to Germany.
5. **Join on date** to your own data.
6. **Schedule with delta mode** to append new rows.

### Usage Examples

#### Daily panel, last 90 days

```json
{}
```

#### Monthly country spreads

```json
{
    "mode": "country_yields",
    "lookbackDays": 1000,
    "newestFirst": false
}
```

#### Only new days

```json
{
    "deltaMode": true,
    "deltaStateKey": "daily"
}
```

### Tips for Best Results

- Join on the date column; markets are closed on weekends and holidays, so those dates have no row.
- Run the Actor once for the whole history, then schedule it daily with delta mode.
- Use the percentile fields rather than raw levels to compare conditions across years.
- Curve inversion is a slow signal; combine it with faster features such as daily changes.
- Use the country view to track the BTP-Bund spread; it is monthly, so join it by month.
- estr\_vs\_deposit\_rate\_bps shows how far the market short rate sits from the deposit rate.
- Default is 5 results for a fast test. Set the max to 0 to return everything available.

### Reliability by mode

| Mode                                | Status | Needs login or key? | Notes                          |
| ----------------------------------- | ------ | ------------------- | ------------------------------ |
| ECB policy rates and EUR short rate | ✅     | No                  | Published by the ECB.          |
| AAA and all-issuer yield curve      | ✅     | No                  | Daily curve estimates.         |
| Country spreads to Germany          | 🟡     | No                  | Monthly, published with a lag. |
| Intraday or real-time values        | ❌     | -                   | End-of-day only.               |

✅ works as described, 🟡 works with caveats, ❌ not supported.

### Only new records (delta mode)

Turn on **Only new trading days (delta mode)** and set a **Delta key**. The first run returns the whole range; later runs return, and bill, only trading days not delivered before.

### Known Limitations

- Country yields are monthly convergence-criteria yields, not daily bond prices.
- Daily euro area yields are curve estimates for AAA and all-issuer government bonds, not single bonds.
- Values are end-of-day and appear after the ECB publishes them.
- The euro short-term rate starts in 2019; earlier days have no value.
- This is information, not financial advice.

### Integrations

Run it from the Apify API, on a schedule, or from a webhook. Send results straight to Google Sheets, Make, Zapier, Slack or your own database with Apify's built-in integrations.

### Export Formats

Download the dataset as JSON, CSV, Excel, XML, HTML table or RSS from the **Output** tab or the API.

### Frequently Asked Questions

#### Where does the data come from?

The European Central Bank data portal, which publishes these series for free.

#### How far back does it go?

Policy rates go back to 1999, the yield curve to 2004 and each country series to its own start.

#### Does it need an API key or account?

No.

#### Can I get intraday data?

No, the data is end-of-day.

#### Why is a value empty?

The series did not exist on that date, or the source has not published that day yet.

#### Am I charged for empty days?

No, only for rows returned.

#### Do I need an account or login?

No. The Actor reads public European Central Bank data and needs no account or API key.

#### Am I charged for failed runs or empty results?

You are only charged for results that are actually written to the dataset.

#### Can I run it on a schedule?

Yes. Create a Task with your input and add a schedule in Apify Console. With monitor mode on, each scheduled run returns only what changed since the previous one.

### Changelog

- **2026-09-27:** First release.

### Enterprise and custom work

Need higher volumes, a custom output schema, dedicated scheduling or a no-breaking-changes commitment for a production pipeline? Open an issue on the Actor page and describe your use case. Bulk terms and custom builds are available.

### Support

Questions or a missing field? Open an issue from the **Issues** tab on this Actor's page and it will be looked at.

### Legal / Responsible Use

This Actor reads publicly published European Central Bank data. You are responsible for how you use the data. It is not financial advice and not affiliated with the European Central Bank.

# Actor input Schema

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

daily\_panel returns one row per business day; country\_yields returns monthly government yields and spreads to Germany.

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

First trading date, YYYY-MM-DD. Leave empty to use the lookback below.

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

Last trading date, YYYY-MM-DD. Leave empty for today.

## `lookbackDays` (type: `integer`):

Used when no start date is set.

## `newestFirst` (type: `boolean`):

Return the newest day first. Turn off for chronological order.

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

Cap on returned rows. Set 0 for no limit.

## `deltaMode` (type: `boolean`):

After the first run with a delta key, return and bill only days not delivered before.

## `deltaStateKey` (type: `string`):

Name of the tracked stream.

## `proxyConfiguration` (type: `object`):

Optional proxy. The sources work without one.

## Actor input object example

```json
{
  "mode": "daily_panel",
  "lookbackDays": 90,
  "newestFirst": true,
  "maxItems": 0,
  "deltaMode": false,
  "deltaStateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/euro-area-yields-ecb-rates-panel").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 = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/euro-area-yields-ecb-rates-panel").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 '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call mrdoe/euro-area-yields-ecb-rates-panel --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/euro-area-yields-ecb-rates-panel"
        }
    }
}
```

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/5rOqBr72WiNtJraGC/builds/3d1WoZ6sKgItzi8ww/openapi.json
