# Credit Spreads, VIX & Financial Stress: Market Risk Data (`scrapemint/credit-spreads-market-stress`) Actor

Keyless daily risk dashboard: corporate bond spreads for US, euro and emerging market credit, volatility indexes for equities, oil and gold, Treasury curve spreads and inflation expectations, and official financial conditions indexes. Every level ranked against its own trailing history.

- **URL**: https://apify.com/scrapemint/credit-spreads-market-stress.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Business, News
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 indicator rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Credit Spreads, VIX & Financial Stress: Market Risk Data

The risk dashboard a macro desk watches, as clean rows. **Corporate bond spreads** for US, European and emerging market credit, **volatility indexes** for equities, oil and gold, **Treasury curve spreads and inflation expectations**, and the **official financial conditions indexes**. No API key, no login, no browser.

Credit spreads are the reason this exists: what lenders charge risky borrowers over government debt is the earliest widely published sign that risk appetite is turning, and it usually moves before equities do.

### A level on its own tells you nothing

A high yield spread of 2.81 per cent is either the calmest credit market in a decade or the start of something, depending on where it sits in its own history. So **every latest row is ranked against its own trailing window**: percentile rank, z score, the high, the low and the median, plus the move over a week, a month, a quarter and a year.

That context is what separates this from a quote. In a live run today, broad US high yield sat at the **38th percentile** of its own year while **CCC and lower rated credit sat at the 99th** — the risky end selling off while the index looked calm. One number without the other hides that.

### Modes

- **Latest** - one row per series: newest value, the moves over 1 week, 1 month, 3 months and 1 year, and the full trailing context.
- **History** - one row per series per date over any window.
- **Catalogue** - every series covered, with its units and publication frequency.

### What is covered

| Category | Series |
| --- | --- |
| **credit** | US high yield, US investment grade, US BBB, US CCC and lower, euro high yield, emerging market corporate spreads, US high yield effective yield |
| **volatility** | S\&P 500 (VIX), Nasdaq 100, crude oil, gold |
| **rates** | 10y minus 2y, 10y minus 3m, 10 year, 2 year, 10 year real yield, 10 year breakeven inflation, 5 year forward inflation |
| **conditions** | Chicago Fed national and adjusted financial conditions, St Louis Fed financial stress index |
| **dollar** | broad trade weighted dollar, dollar against advanced economies |

Every one was verified returning live data before shipping.

### Example output

```json
{
  "mode": "latest",
  "seriesId": "BAMLH0A3HYC",
  "name": "US CCC and lower rated bond spread",
  "category": "credit",
  "unit": "percentage points over government bonds (option adjusted spread)",
  "latestValue": 10.01,
  "latestDate": "2026-07-27",
  "publicationLagDays": 2,
  "changeFromPreviousBasisPoints": 4.0,
  "change1Month": 0.61,
  "change1Year": 1.67,
  "percentileRankInLookback": 99.1,
  "zScoreInLookback": 1.803,
  "lookbackLow": 7.83,
  "lookbackHigh": 10.2,
  "atLookbackHigh": false
}
```

### Things worth knowing

- **Units are not interchangeable.** A spread is percentage points over government bonds, a volatility index is annualised per cent, a conditions index is standard deviations from its own average. Ranking or averaging across them is meaningless, so the unit rides on every row and a caveat field says so.
- **Series publish on different calendars.** The conditions indexes are weekly, everything else is daily, so the newest value is not the same age across rows. Each row carries `publicationLagDays` and an `isStale` flag, and the trailing comparisons resolve to the most recent observation **at or before** the target date rather than counting rows backwards, which would make a weekly series look a month staler than it is.
- **A holiday inside a daily series returns an empty value, not a missing row.** The 10 year Treasury yield on Independence Day comes back blank; read carelessly that becomes a yield of zero. Blank observations are dropped, never zeroed.
- **Requesting several series in one call returns a ZIP archive** rather than CSV, so each series is fetched separately.
- **Series discovery needs an API key**, which this actor does not use, so the catalogue is a fixed curated list rather than a search. Catalogue mode prints it.
- **An unrecognised identifier answers 404 with an HTML page.** Anything that is not the expected CSV header is never parsed as data, and if nothing you asked for resolves, the run returns an explanation and charges nothing.

### Pricing

**$0.004 per row.** The first 2 rows of every run are free, and note rows (an unknown series, a category that does not exist, a series that returned nothing) are never charged.

The default latest snapshot of credit and volatility is 11 rows, or **$0.044**. Every series in the catalogue with full context is 23 rows, or **$0.092**. A quarter of daily history for one series is about 60 rows.

### Related actors

- **Government Bond Yields Worldwide** - the risk free level these spreads sit on top of.
- **US Treasury Yields & Interest Rates Scraper** - one country in depth, including auctions and bills.
- **SOFR & Money Market Rates: Benchmarks and Fed Operations** - the overnight funding market.

### How to run it via API

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~credit-spreads-market-stress/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"latest","categories":["credit","volatility"],"lookbackDays":365}'
```

Data is published by the Federal Reserve Bank of St Louis (FRED). Spread indexes are ICE BofA index data as republished there.

# Actor input Schema

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

latest = newest value per series with the moves over a week, month, quarter and year and where the level sits in its own range. history = one row per series per date. catalogue = list every series this actor covers.

## `categories` (type: `array`):

credit (corporate bond spreads), volatility (VIX and friends), rates (Treasury yields, curve spreads, inflation expectations), conditions (official financial conditions and stress indexes), dollar (trade weighted dollar). Empty returns every category.

## `series` (type: `array`):

Exact series identifiers such as BAMLH0A0HYM2 or VIXCLS. Overrides categories. Run catalogue mode to see every covered identifier.

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

Latest mode. The trailing window used for the percentile rank, the high, the low and the median. 365 gives the level in the context of the past year.

## `daysBack` (type: `integer`):

History mode. How far back to pull, counting from the end date.

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

History mode. YYYY-MM-DD. Overrides days back.

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

History mode. YYYY-MM-DD. Defaults to today.

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

Cap on rows returned. Controls total cost.

## Actor input object example

```json
{
  "mode": "latest",
  "categories": [
    "credit",
    "volatility"
  ],
  "series": [],
  "lookbackDays": 365,
  "daysBack": 90,
  "startDate": "",
  "endDate": "",
  "maxRows": 200
}
```

# 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 = {
    "categories": [
        "credit",
        "volatility"
    ],
    "lookbackDays": 365
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/credit-spreads-market-stress").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 = {
    "categories": [
        "credit",
        "volatility",
    ],
    "lookbackDays": 365,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/credit-spreads-market-stress").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 '{
  "categories": [
    "credit",
    "volatility"
  ],
  "lookbackDays": 365
}' |
apify call scrapemint/credit-spreads-market-stress --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/credit-spreads-market-stress"
        }
    }
}

```

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/eoqsQ1XFKnzsVuZk4/builds/G7c97FtbsYPdIzbQI/openapi.json
