Set it up once. Never check a bank website again. Daily mortgage rate comparisons from 10 lenders, delivered to your Discord automatically.
Looking for just the scraper without Discord delivery? See Multi-Lender-Mortgage-Rate-Lookup.
Every morning, your OpenClaw agent scrapes 10 lender websites using a two-tier approach:
- Tier 1 — Patchright (headless): 8 lenders scraped in parallel via stealth Chromium
- Tier 2 — OpenClaw Browser (real Chrome): Chase and Rocket Mortgage require a persistent browser session with cookies — the OpenClaw browser profile handles these automatically
All rates are combined, ranked lowest to highest against Freddie Mac and Mortgage News Daily national averages, and posted to your Discord.
📊 MORTGAGE RATES — Mar 26, 2026 | 11/11 lenders reporting
| Lender | Rate | APR | ||
|---|---|---|---|---|
| 🏆 | Navy Federal CU | 5.375% | 6.875% | BEST |
| 🟢 | Wells Fargo | 5.875% | 6.082% | |
| 🟢 | Citi | 6.125% | 6.259% | |
| Freddie Mac natl avg | 6.380% | benchmark | ||
| 🟡 | Mr. Cooper | 6.250% | 6.550% | |
| 🟡 | Guaranteed Rate | 6.325% | 6.639% | |
| 🟡 | SoFi | 6.351% | 5.625% | |
| 🟡 | US Bank | 6.375% | 6.529% | |
| 🟡 | Truist | 6.375% | 6.565% | |
| MND Index | 6.620% | benchmark | ||
| 🔴 | Bank of America | 6.625% | 6.846% | |
| 🔴 | Chase | 6.490% | 6.578% | |
| 🔴 | Rocket Mortgage | 6.750% | 6.890% | WORST |
📈 Avg: 6.186% | vs yesterday: ▲ 0.086%
| Lender | Rate | APR | ||
|---|---|---|---|---|
| 🏆 | Navy Federal CU | 5.375% | 6.875% | BEST |
| 🟢 | US Bank | 5.490% | 5.774% | |
| 🟢 | Truist | 5.600% | 5.892% | |
| 🟡 | Guaranteed Rate | 5.625% | 6.096% | |
| Freddie Mac natl avg | 5.750% | benchmark | ||
| 🟡 | Bank of America | 5.750% | 6.134% | |
| 🟡 | Wells Fargo | 5.750% | 6.000% | |
| 🟡 | SoFi | 5.831% | 5.990% | |
| 🔴 | Chase | 5.875% | 6.012% | |
| 🔴 | Rocket Mortgage | 6.125% | 6.340% | WORST |
📈 Avg: 5.632% | vs yesterday: ▲ 0.084%
| Product | Rate | APR |
|---|---|---|
| 30yr Fixed | 6.490% | 6.578% |
| 15yr Fixed | 5.500% | 5.667% |
| 30yr FHA Fixed | 6.000% | 6.780% |
| 30yr Jumbo Fixed | 5.990% | 6.082% |
| 7/6 Jumbo ARM | 5.375% | 5.980% |
🟢 below average | 🟡 near average | 🔴 above average — instantly see who's charging you the most
| # | Lender | Type | How |
|---|---|---|---|
| 1 | Bank of America | Big 4 Bank | Patchright |
| 2 | Wells Fargo | Big 4 Bank | Patchright |
| 3 | Chase | Big 4 Bank | OpenClaw Browser |
| 4 | Citi | Big 4 Bank | Patchright |
| 5 | Navy Federal CU | Credit Union | Patchright |
| 6 | SoFi | Online Lender | Patchright |
| 7 | US Bank | National Bank | Patchright |
| 8 | Guaranteed Rate | Online Lender | Patchright |
| 9 | Truist | National Bank | Patchright |
| 10 | Mr. Cooper | Largest Servicer | Patchright |
| 11 | Rocket Mortgage | Online Lender | OpenClaw Browser |
Benchmarks: Freddie Mac PMMS (weekly national average) + Mortgage News Daily (daily index)
bash <(curl -s https://raw.githubusercontent.com/seang1121/OpenClaw-Mortgage-Interest-Rates-Report/main/install.sh) YOUR_ZIPReplace YOUR_ZIP with your ZIP code (e.g. 90210). That's it. Two minutes and you're done.
- Checks that OpenClaw gateway is running
- Checks for OpenClaw browser — if not set up, walks you through
openclaw browser setup(required for Chase + Rocket Mortgage) - Clones this repo into
~/.openclaw/workspace/mortgage-rates/ - Creates a Python venv and installs patchright + stealth Chromium
- Sets your ZIP code
- Registers a daily 8:00 AM EST cron job in OpenClaw
- Report gets delivered to your Discord channel
# Clone into your OpenClaw workspace
git clone https://github.com/seang1121/OpenClaw-Mortgage-Interest-Rates-Report.git ~/.openclaw/workspace/mortgage-rates
cd ~/.openclaw/workspace/mortgage-rates
# Install dependencies
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m patchright install chromium
# Set your ZIP code
echo '{"zip_code": "YOUR_ZIP"}' > config.json
# Test it
python3 mortgage_rate_report.pyThen register the cron job in ~/.openclaw/cron/jobs.json (see Cron Setup below).
echo '{"zip_code": "10001"}' > ~/.openclaw/workspace/mortgage-rates/config.jsonFind daily-mortgage-rates in ~/.openclaw/cron/jobs.json and edit the expr field:
| Schedule | Cron Expression |
|---|---|
| Daily at 8 AM | 0 8 * * * |
| Weekdays only at 8 AM | 0 8 * * 1-5 |
| Twice daily (8 AM + 5 PM) | 0 8,17 * * * |
| Every 6 hours | 0 */6 * * * |
In jobs.json, update the delivery.to field with your Discord channel ID.
Add this to your ~/.openclaw/cron/jobs.json in the jobs array:
{
"id": "mortgage-rates-001",
"name": "daily-mortgage-rates",
"enabled": true,
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
"tz": "America/New_York"
},
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "MORTGAGE RATE REPORT: Run this command:\ncd ~/.openclaw/workspace/mortgage-rates && source venv/bin/activate && python3 mortgage_rate_report.py 2>&1\n\nRead the full output and reply with it formatted for Discord.",
"timeoutSeconds": 300
},
"delivery": {
"mode": "announce",
"channel": "discord",
"to": "YOUR_CHANNEL_ID"
}
} OpenClaw Cron (8:00 AM EST)
|
+---------+---------+
| |
TIER 1: Script TIER 2: OpenClaw Browser
mortgage_rate_report.py (real Chrome profile)
| |
asyncio.gather() Chase — ZIP gate, click
batches of 4 "See rates", extract
| full product menu
+-----+-----+ |
| | | Rocket Mortgage —
patchright patchright urllib wait for JS render,
(stealth) (stealth) (API) extract all products
| | | |
BofA SoFi Freddie |
WF USB Mac |
Citi Guar MND |
Navy Truist |
Fed Cooper |
| | | |
+-----+-----+-----+-----+
|
Combine all rates
Rank lowest to highest
Calculate day-over-day
|
Deliver to Discord
Tier 1 — Patchright (8 lenders + 2 benchmarks): Stealth-patched headless Chromium that bypasses bot detection, Cloudflare, and JS-rendered SPAs. Runs in parallel batches of 4. Freddie Mac and MND are fetched via direct API (no browser).
Tier 2 — OpenClaw Browser (Chase + Rocket): These lenders require a persistent Chrome session with cookies and a real browser profile. The OpenClaw browser (~/.openclaw/browser/openclaw/) handles this — it opens the page, fills the ZIP code, clicks through, and extracts the full product menu (30yr, 15yr, FHA, Jumbo, VA, ARM).
90 days of rate history stored locally at data/mortgage_rates_history.json for trend tracking.
- OpenClaw running with gateway active
- OpenClaw Browser set up (
openclaw browser setup) — required for Chase + Rocket Mortgage - Python 3.10+
- ~200MB disk space (Chromium browser)
- Internet access
Why do I need the OpenClaw browser? Chase and Rocket Mortgage use aggressive anti-bot protection that blocks even stealth headless browsers. They need a real Chrome profile with persistent cookies and session state. The OpenClaw browser provides this — it's a managed Chrome instance that your agent can control like a real user.
| Problem | Solution |
|---|---|
| 0 lenders reporting | Run python3 mortgage_rate_report.py --headed to see what the browser loads. Some VPNs/corporate networks block stealth browsers. |
| Cron job not firing | Check ~/.openclaw/cron/jobs.json — is the job enabled: true? Is the gateway running (pm2 status)? |
| Rates look wrong | Bank websites change layouts. Open an issue or PR. |
| patchright install fails | Make sure you ran python -m patchright install chromium. On corporate networks, set HTTPS_PROXY. |
- Found a working URL for a new lender? Open an issue.
- Built a custom schedule or integration? Share it.
- Lender broke? Submit a PR with the updated regex or URL.
MIT