# CFPB HMDA Mortgage Lending Records API (`nexgendata/cfpb-hmda-mortgage-lender-disparity-tracker`) Actor

MSA / race / income-tier approval & denial aggregates for any HMDA-reporting lender, with disparity ratios vs the lender's portfolio pre-computed. Sourced from the CFPB FFIEC Data Browser. For fair-lending compliance, lender competitive intel, redlining plaintiff law firms, and CDFI analysts.

- **URL**: https://apify.com/nexgendata/cfpb-hmda-mortgage-lender-disparity-tracker.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $150.00 / 1,000 lender aggregates

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/platform/actors/running/actors-in-store#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

## CFPB HMDA Mortgage Lending Records API

CFPB HMDA mortgage-lending public records — lenders, loan purpose, amounts and action taken, as factual records.

> Factual public records — not financial, investment or compliance advice. Screening data is provided as-is for your own compliance program.

### 📊 What you get

Clean JSON, one record per record (full output has 9 fields):

- `lender_name` — Lender name
- `lei` — Lei
- `state` — State
- `loan_purpose` — Loan purpose
- `loan_amount` — Loan amount
- `action_taken` — Action taken
- `applicant_count` — Applicant count
- `originated_count` — Originated count
- `year` — Year

**Pricing:** $0.150 per record (Pay-Per-Event) — about **7 records per $1**.

### 🤖 Use with AI agents

Point Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and pull official records on demand.

**Agentic payments (x402):** Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.

### 🔗 Related regulatory actors

**Regulatory & enforcement records:**

[US Legislation](https://apify.com/nexgendata/us-legislation-bill-tracker) · [UK FCA Notices](https://apify.com/nexgendata/uk-fca-enforcement-tracker) · [UK FCA Register](https://apify.com/nexgendata/uk-fca-enforcement-register) · [EPA ECHO](https://apify.com/nexgendata/epa-echo-enforcement-scraper) · [EPA TRI](https://apify.com/nexgendata/epa-tri-toxic-release-facilities) · [FEMA NFIP](https://apify.com/nexgendata/openfema-nfip-flood-claims) · [CFPB Complaints](https://apify.com/nexgendata/cfpb-consumer-complaints-scraper)

**Related:** [SAM.gov Exclusions](https://apify.com/nexgendata/sam-gov-federal-contractor-exclusions)

## *This actor is currently private — treated and ready for review.*

*Public official records and enforcement data, assembled for research and monitoring.*

# Actor input Schema

## `lender_name` (type: `string`):

Case-insensitive substring match against HMDA-reporting institution names. Leave blank to query at the dimension level (e.g. MSA or state aggregates across all lenders). Examples: 'Bank of America', 'WELLS FARGO', 'PENNYMAC'.

## `msa_filter` (type: `string`):

Filter aggregates to a single Metropolitan Statistical Area. Accepts either a 5-digit MSA/MD code (e.g. '35620' = New York-Newark-Jersey City) or a partial MSA name (e.g. 'New York'). Leave blank to aggregate across all MSAs reported by the lender. State-level aggregates: use US state abbreviations on aggregate\_by=lender\_msa — see README.

## `year` (type: `integer`):

HMDA filing year. Coverage 2018-2024 per CFPB Data Browser. 2024 is the most recent fully published modified-LAR year.

## `loan_purpose` (type: `string`):

HMDA loan-purpose filter. 'home\_purchase' = code 1, 'refinancing' = codes 31+32 (rate-term + cash-out), 'home\_improvement' = code 2, 'any' = all purposes. See https://ffiec.cfpb.gov/documentation/2024/lar-data-fields/ for codes.

## `aggregate_by` (type: `string`):

Roll-up dimension. 'lender\_msa' = per-MSA rows (top MSAs by volume); 'lender\_race' = per-applicant-race rows (the fair-lending disparity slice); 'lender\_income\_tier' = per-applicant-income-tier rows (LMI vs MUI redlining signal).

## `max_records` (type: `integer`):

Maximum number of aggregate rows to push to the dataset. Each row = one (lender × dimension value) aggregate. Higher values trigger more API roundtrips for the per-MSA mode (one call per MSA × race-bucket).

## Actor input object example

```json
{
  "year": 2024,
  "loan_purpose": "any",
  "aggregate_by": "lender_msa",
  "max_records": 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 = {
    "lender_name": "",
    "msa_filter": "",
    "year": 2024,
    "loan_purpose": "any",
    "aggregate_by": "lender_msa",
    "max_records": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/cfpb-hmda-mortgage-lender-disparity-tracker").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 = {
    "lender_name": "",
    "msa_filter": "",
    "year": 2024,
    "loan_purpose": "any",
    "aggregate_by": "lender_msa",
    "max_records": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/cfpb-hmda-mortgage-lender-disparity-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "lender_name": "",
  "msa_filter": "",
  "year": 2024,
  "loan_purpose": "any",
  "aggregate_by": "lender_msa",
  "max_records": 200
}' |
apify call nexgendata/cfpb-hmda-mortgage-lender-disparity-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/cfpb-hmda-mortgage-lender-disparity-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/EDNnGxxs81F0mYCa9/builds/aLh6lTA12nkQogbjj/openapi.json
