# Fed H.8 Bank Assets & Liabilities API — Weekly Bank Data (`nexgensignal/fed-h8-commercial-bank-assets-liabilities-observations`) Actor

Federal Reserve H.8 bank balance sheets as data: loans, deposits, securities and bank credit for all, large, small and foreign-related US commercial banks, weekly, monthly, quarterly and annual. Filter by item, bank group and date. No API key. Part of NexGen Signal — official-source data products

- **URL**: https://apify.com/nexgensignal/fed-h8-commercial-bank-assets-liabilities-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.8 bank balance-sheet 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.8 Bank Assets & Liabilities API — Weekly Bank Data

Get the Federal Reserve's H.8 Assets and Liabilities of Commercial Banks in the United States as clean records — bank credit, loans by type (real estate, commercial and industrial, consumer), securities, deposits, borrowings and more, for all, large, small and foreign-related banks, weekly, monthly, quarterly and annual — from the Board's official release package.

Bank analysts, investors, economists and treasury teams use H.8 as the weekly read on US bank lending and deposits. This actor reads the Board's file and delivers one record per value with the line item, bank group, adjustment and measure spelled out — no XML, 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.8 observations: real estate loans at all commercial banks, weekly, seasonally adjusted.](https://api.apify.com/v2/key-value-stores/IXCaMKjxSmUTLHhmq/records/fed-h8-commercial-bank-assets-liabilities-observations.png)

| series_name | date | value | item | bank_group |
|---|---|---|---|---|
| B1026NCBA | 2026-09-23 | 5840814.3 | (11) Real estate loans | All Commercial Banks in the United States |
| B1026NCBA | 2026-09-16 | 5836706.7 | (11) Real estate loans | All Commercial Banks in the United States |
| B1026NCBA | 2026-09-09 | 5832306.2 | (11) Real estate loans | All Commercial Banks in the United States |
| B1026NCBA | 2026-09-02 | 5829780.5 | (11) Real estate loans | All Commercial Banks in the United States |
| B1026NCBA | 2026-08-26 | 5832701.4 | (11) Real estate loans | All Commercial Banks in the United States |

Rows from live run `TDDEiXwItaA3nYOaw` on Apify (input: items 1058 and 1026, all commercial banks, seasonally adjusted, levels, weekly, since 2026). Notice the weekly Wednesday dates, newest first, and the H.8 line item named on every row (values in millions of dollars).

### ✅ What you get

Every field of each record:

- `record_id` — unique per observation: release, series code and date.
- `release_code` — `H.8`.
- `series_name` — the Board's series code, e.g. `B1058NCBA`.
- `series_description`, `series_long_description` — the Board's short and long descriptions.
- `bank_group_code`, `bank_group` — `CB` all commercial banks, `DM` domestically chartered, `LG` large domestic, `SM` small domestic, `FR` foreign-related.
- `category_code`, `category` — `A` assets, `L` liabilities, `M` memo.
- `item_code`, `item` — the H.8 line, e.g. `1058` = (34) Deposits.
- `seasonal_adjustment_code`, `seasonal_adjustment` — `SA` or `NSA`.
- `measure_code`, `measure` — `LEVEL` dollar levels or `RATE` percent change at an annual rate.
- `frequency` — `Weekly (Wednesday)`, `Monthly`, `Quarterly` or `Annual` (from the Board's code list).
- `unit`, `unit_multiplier`, `currency` — unit and multiplier from the Board's code lists (e.g. `Currency`, `Millions`), and the currency where one applies.
- `date` — period end date as published (e.g. `2026-06-30` for the second quarter).
- `value` — the observation as a number.
- `observation_status`, `observation_status_label` — `A` normal; `NC`/`ND` not calculable / no data (delivered only with `includeNoData`).
- `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 the release, the package 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 — deposits at all commercial banks**

```json
{
  "seriesNames": ["B1058NCBA"],
  "maxRecords": 10
}
```

The 10 newest weekly values of deposits, all commercial banks, seasonally adjusted; about $0.50 on the Free plan.

**2. Narrowed — large vs small bank assets, weekly, 2026**

```json
{
  "bankGroups": ["LG", "SM"],
  "categories": ["A"],
  "measures": ["LEVEL"],
  "seasonalAdjustment": ["SA"],
  "frequencies": ["weekly"],
  "dateFrom": "2026",
  "maxRecords": 3000
}
```

Every weekly asset level this year for large and small domestically chartered banks.

**3. Bulk — latest weekly value of every line, all banks**

```json
{
  "bankGroups": ["CB"],
  "frequencies": ["weekly"],
  "latestOnly": true,
  "maxRecords": 200
}
```

One record per weekly all-bank series: its newest week.

Input fields:

| Field | Meaning |
|---|---|
| `seriesNames` | exact Board series codes, e.g. `B1058NCBA` |
| `seriesNameStartsWith` | series codes starting with any of these, e.g. `B1058` |
| `descriptionContains` | every word of an entry in the description; quote a phrase to keep it together |
| `bankGroups` | `CB`, `DM`, `LG`, `SM`, `FR` |
| `categories` | `A`, `L`, `M` |
| `itemCodes` | H.8 line items, e.g. `1001`, `1026`, `1058` |
| `seasonalAdjustment` | `SA`, `NSA` |
| `measures` | `LEVEL`, `RATE` |
| `frequencies` | `weekly`, `monthly`, `quarterly`, `annual` |
| `dateFrom` / `dateTo` | date window |
| `latestOnly` | one record per series |
| `includeNoData` | also deliver not-calculable values |
| `order` | `newest_first` or `oldest_first` |
| `maxRecords` | most observations delivered and billed (default 1,000) |

### 🧾 JSON sample record

```json
{
  "record_id": "H8:B1026NCBA:2026-09-23",
  "release_code": "H.8",
  "series_name": "B1026NCBA",
  "series_description": "Real estate loans, all commercial banks, seasonally adjusted",
  "series_long_description": "Real estate loans, all commercial banks, seasonally adjusted",
  "bank_group_code": "CB",
  "bank_group": "All Commercial Banks in the United States",
  "category_code": "A",
  "category": "Assets",
  "item_code": "1026",
  "item": "(11) Real estate loans",
  "seasonal_adjustment_code": "SA",
  "seasonal_adjustment": "Seasonally adjusted",
  "measure_code": "LEVEL",
  "measure": "Levels (USD)",
  "frequency": "Weekly (Wednesday)",
  "unit": "Currency",
  "unit_multiplier": "Millions",
  "currency": "USD",
  "date": "2026-09-23",
  "value": 5840814.3,
  "observation_status": "A",
  "observation_status_label": "Normal",
  "release": "H.8 Assets and Liabilities of Commercial Banks in the United States",
  "release_prepared": "2026-10-02T10:00:00",
  "source": "Board of Governors of the Federal Reserve System — H.8 Assets and Liabilities of Commercial Banks in the United States (statistical release XML package)",
  "source_dataset": "FRB_h8_xml.zip (H8_data.xml), Last-Modified Fri, 02 Oct 2026 20:15:11 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.8 Assets and Liabilities of Commercial Banks in the United States",
  "observed_at": "2026-10-04T05:12:34Z"
}
```

### 🔧 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 disallowed the package would stop the run with nothing charged.

2. **Table of contents first.** The release package `FRB_h8_xml.zip` is a static ZIP on the Board's H.8 release page. The actor reads its table of contents and code lists by byte range, then streams and decompresses the data file as it arrives.

3. **Filter while reading.** Each series is checked against your filters as soon as it starts; only matching series keep their observations.

4. **Deliver, then charge.** Matching observations (newest first by default) are pushed in batches, each charged after delivery, so records and charges always match. Reading stops at `maxRecords` or your maximum charge.

5. **Receipt.** `RUN_RECEIPT` records the robots result, the package and its date, bytes read, 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.

**Coverage and size.** Live count from the package read on 3–4 October 2026 (FRB_h8_xml.zip, 8.4 MB compressed, Last-Modified 2 October 2026; release of 2 October 2026): **978,755 observations in 1,411 series** (410 weekly, 607 monthly, 197 quarterly, 197 annual), from 1947-01-31 to 2026-09-23; 978,655 carry a value and 100 are marked not calculable. The planning index counted 978,755 observations across 1,411 series — they agree. A filter is required; a whole-file read takes seconds, and a full pull is 978,655 valued records, billed per observation.

### ⚖️ Legal & ToS

Data: Board of Governors of the Federal Reserve System, H.8 Assets and Liabilities of Commercial Banks in the United States, from the XML package on the Board's statistical release page. 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. Aggregate statistics only — no personal data.

**Data Download Program retirement:** the Board is retiring its Data Download Program ("Build Your Package" goes the week of November 9, 2026; the program later). Its notice (16 July 2026) says historical data "will remain available for download as XML files on statistical release pages" — that release-page XML file is exactly what this actor reads, not the Data Download Program. If the Board ever moves or withdraws it, runs end with a source-unavailable message and nothing is charged.

Not affiliated with or endorsed by the Federal Reserve; figures are the Board's as published.

### ❓ FAQ

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

**Why must I give a filter?**
The full release is 978,755 observations. A filter keeps runs fast and bills only what you asked for; an unfiltered run is refused with a clear message.

**How fresh is the data?**
As fresh as the Board's H.8 package: every record carries the package's prepared time and last-modified date.

**What happens when the Data Download Program retires?**
Nothing for this actor: it already reads the release-page XML file the Board says will remain available.

**Which date is a weekly value for?**
The Wednesday of the week, as the Board publishes it (`frequency` = `Weekly (Wednesday)`).

### 🆘 Troubleshooting

- **0 records** — check item codes against the H.8 release table numbers; bank groups are two letters.
- **Growth rates mixed with levels** — add `measures: ["LEVEL"]` or `["RATE"]`.
- **Stopped at maxRecords** — raise `maxRecords` or use `latestOnly`.
- **SOURCE UNAVAILABLE message** — the 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

- [US Credit Union Financial Records — NCUA](https://apify.com/nexgensignal/us-credit-union-financial-records) — credit union call-report financials beside bank aggregates.
- [Germany Bank Lending Survey - Bundesbank](https://apify.com/nexgensignal/de-bank-lending-survey-observations) — German bank lending conditions.
- [ECB Bank Lending & Deposit Rate Records — Euro Area MIR](https://apify.com/nexgensignal/ecb-bank-interest-rate-records) — euro-area bank lending and deposit rates.
- [US Treasury Fiscal Records — Rates & Debt](https://apify.com/nexgensignal/treasury-fiscal-records) — US Treasury rates and debt.

🏢 **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

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

Exact Board series codes, e.g. B1058NCBA (deposits, all commercial banks, seasonally adjusted, weekly).

## `seriesNameStartsWith` (type: `array`):

Series whose code starts with any of these, e.g. B1058.

## `descriptionContains` (type: `array`):

Series whose description has every word of an entry, any order; put a phrase in double quotes to keep it together, e.g. "real estate loans" "large domestically".

## `bankGroups` (type: `array`):

CB all commercial banks, DM domestically chartered, LG large domestic, SM small domestic, FR foreign-related institutions.

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

A assets, L liabilities, M memo items.

## `itemCodes` (type: `array`):

H.8 line items, e.g. 1001 bank credit, 1026 real estate loans, 1058 deposits.

## `seasonalAdjustment` (type: `array`):

SA seasonally adjusted, NSA not seasonally adjusted.

## `measures` (type: `array`):

LEVEL dollar levels, RATE percent change at an annual rate.

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

Any of weekly, monthly, quarterly, annual. Empty = all.

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

Only observations on or after this date (2024-01-01, or a year such as 2024).

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

Only observations on or before this date (2025-12-31, or a year).

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

One record per series: its most recent observation in the date window.

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

Also deliver observations the Board marks no data or not calculable, 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 value on one date.

## Actor input object example

```json
{
  "seriesNames": [
    "B1058NCBA"
  ],
  "seriesNameStartsWith": [],
  "descriptionContains": [],
  "bankGroups": [],
  "categories": [],
  "itemCodes": [],
  "seasonalAdjustment": [],
  "measures": [],
  "frequencies": [],
  "latestOnly": false,
  "includeNoData": false,
  "order": "newest_first",
  "maxRecords": 10
}
```

# Actor output Schema

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

The delivered (and billed) observations.

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

Package 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 = {
    "seriesNames": [
        "B1058NCBA"
    ],
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgensignal/fed-h8-commercial-bank-assets-liabilities-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 = {
    "seriesNames": ["B1058NCBA"],
    "maxRecords": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgensignal/fed-h8-commercial-bank-assets-liabilities-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 '{
  "seriesNames": [
    "B1058NCBA"
  ],
  "maxRecords": 10
}' |
apify call nexgensignal/fed-h8-commercial-bank-assets-liabilities-observations --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nexgensignal/fed-h8-commercial-bank-assets-liabilities-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/qbQiASQKGHv7br6UC/builds/yMh63bSmq9ORNd8ay/openapi.json
