PPP Loan Data Scraper - Small Business Leads & Firmographics avatar

PPP Loan Data Scraper - Small Business Leads & Firmographics

Pricing

$5.00 / 1,000 ppp loan / business records

Go to Apify Store
PPP Loan Data Scraper - Small Business Leads & Firmographics

PPP Loan Data Scraper - Small Business Leads & Firmographics

Scrape U.S. SBA PPP loan data: business name & address, NAICS industry, loan & forgiveness amount, jobs reported, lender, and owner demographics (woman/veteran/minority-owned). Filter by state, industry, size, and demographics. B2B leads at scale, no browser.

Pricing

$5.00 / 1,000 ppp loan / business records

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

PPP Loan Data Scraper — Small Business Leads, Firmographics & Lenders

Turn the U.S. government's Paycheck Protection Program (PPP) loan data into the most filterable U.S. small-business database you can get — 11+ million businesses with name, full address, industry (NAICS), loan & forgiveness amounts, jobs reported (employee-count proxy), lender, and owner demographics (woman-, veteran-, minority- and non-profit-owned).

PPP touched virtually every U.S. small business that had a payroll. That makes this dataset a complete firmographic lead source you can slice by state, city, industry, company size, loan amount, and owner demographics — segmentation that no Google-Maps lead scraper can do.

No login, no API key, no browser — fast streaming extraction straight from official SBA open data (data.sba.gov), so it never breaks on anti-bot walls.

Why this PPP scraper?

Most "PPP lookup" sites are slow web UIs with no bulk export and no real filters. This actor reads the live SBA PPP FOIA dataset and ships the richest, most segmentable record in the category:

DataTypical PPP lookupsThis actor
Business name + full street addresspartial
NAICS code and industry sector labelcode only
Initial & current loan amount, undisbursed
Forgiveness amount, date & %
Jobs reported (employee-count proxy)
First-Draw (2020) vs Second-Draw (2021)
Owner demographics — woman / veteran / minority / Hispanic / non-profit
Loan-proceeds breakdown (payroll, rent, utilities…)
Rural/Urban, HUBZone & low-to-moderate-income flags
Originating and servicing lender
Loan-size tier + lead score (0–100)
Filter by state, city, ZIP, county, NAICS, size, demographics…
Monitoring mode — only new records since last run

Use cases

  • B2B lead generation at scale — build targeted lists of real businesses by state, city, industry (NAICS), company size (jobs), and loan amount. Every record is a business with verified payroll. Sort by leadScore and work the biggest, most-established first.
  • Demographic & diversity targeting — filter to woman-owned, veteran-owned, minority-owned, Hispanic-owned, or non-profit businesses for supplier-diversity programs, grants, certifications, and inclusion-focused outreach. This is the only PPP scraper that exposes clean demographic flags.
  • Lender & fintech intelligence — see which banks and fintech lenders (Cross River, Kabbage, Celtic, JPMorgan…) originated and serviced loans, in which industries and states (lenderNameQuery). Perfect for competitive analysis and partner prospecting.
  • Industry & market research — quantify capital deployment, payroll, and employment by NAICS, geography, and business size. Analyze rural vs urban, HUBZone, and LMI-area distributions.
  • CRM enrichment & territory planning — pull business lists by ZIP/county to build call lists, size territories, and append firmographics (industry, employee band, entity type) to your existing accounts.
  • Franchise & multi-unit prospecting — filter to franchisesOnly to find franchise operators, or use jobsMin to target multi-location operators.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the PPP Loan Data Scraper, set any filters (state, industry, company size, demographics…), then click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, or XML — or pull results programmatically via the Apify API.

Input

{
"states": ["CA", "TX"],
"naicsCodes": ["722"],
"jobsMin": 20,
"loanAmountMin": 150000,
"veteranOwnedOnly": true,
"drawType": "second",
"maxResults": 1000,
"sortNewestFirst": true,
"monitorMode": false
}
  • states / cities / zipCodes / counties — location filters on the borrower (USPS state codes, exact city names, full-or-prefix ZIPs, project counties).
  • naicsCodes — industry filters by NAICS prefix (722 = restaurants, 23 = construction, 621 = health care, 6212 = dentists, 54 = professional services).
  • businessNameQuery / lenderNameQuery — substring filters on the business name or the originating/servicing lender.
  • loanAmountMin / loanAmountMax — current approved amount (USD). Loans $150K+ are in the fast default file; for smaller loans turn on includeUnder150k.
  • approvalDateFrom / approvalDateTo — exact date window (YYYY-MM-DD). PPP ran 2020-04 → 2021-05.
  • jobsMin / jobsMax — company-size band by jobs reported (e.g. 1050 employees).
  • drawTypefirst (2020) or second (2021, a survivor-and-still-operating signal).
  • forgivenessStatusforgiven or notForgiven.
  • businessTypes — entity types (Corporation, LLC, Sole Proprietorship, Non-Profit Organization…).
  • loanStatuses — normalized statuses (paidInFull, chargedOff, active, exemption4).
  • womanOwnedOnly / veteranOwnedOnly / minorityOwnedOnly / hispanicOwnedOnly / nonProfitFilter — owner-demographic targeting.
  • ruralUrban / hubzoneOnly / lowToModerateIncomeOnly — community/location flags.
  • franchisesOnly — only franchise businesses.
  • includeUnder150k (default false) — also scan the twelve "up to $150K" files (~4.9 GB, ~10M smaller loans). More coverage, slower; set sortNewestFirst to false for fastest capped runs.
  • maxResults (default 1000) — cap on returned records.
  • sortNewestFirst (default true) — most recently approved loans first.
  • monitorMode / monitorKey — emit only records new since the last run; use a distinct key per saved watch.

Output

One record per PPP loan (recordType: "loan"):

{
"recordType": "loan",
"loanNumber": "2332008606",
"drawType": "First Draw",
"borrowerName": "CALIFORNIA PIZZA KITCHEN INC.",
"borrowerStreet": "12181 BLUFF CREEK DR",
"borrowerCity": "Playa Vista",
"borrowerState": "CA",
"borrowerZip": "90094",
"borrowerAddressFull": "12181 BLUFF CREEK DR, Playa Vista, CA 90094",
"initialApprovalAmount": 10000000,
"currentApprovalAmount": 10000000,
"loanAmount": 10000000,
"loanSizeTier": "major ($2M+)",
"approvalDate": "2020-04-13",
"termInMonths": 24,
"loanStatus": "paidInFull",
"loanStatusLabel": "Paid in full",
"isForgiven": true,
"forgivenessAmount": 10112876.71,
"forgivenessPct": 101.1,
"jobsReported": 500,
"naicsCode": "722511",
"naicsSector": "Accommodation & Food Services",
"businessType": "Corporation",
"businessAgeCategory": "existing",
"isFranchise": false,
"nonProfit": false,
"ownerGender": "Unanswered",
"ownerRace": "Unanswered",
"veteranStatus": "Unanswered",
"isWomanOwned": false,
"isVeteranOwned": false,
"isMinorityOwned": false,
"projectCounty": "Los Angeles",
"congressionalDistrict": "CA-36",
"ruralUrban": "Urban",
"isHubzone": false,
"isLowToModerateIncomeArea": false,
"proceeds": { "payroll": 9500000, "rent": 300000, "utilities": 200000 },
"proceedsUsedFor": ["payroll", "rent", "utilities"],
"originatingLender": "JPMorgan Chase Bank, National Association",
"servicingLenderName": "JPMorgan Chase Bank, National Association",
"leadScore": 72,
"scrapedAt": "2026-06-20T07:13:52.892Z"
}

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/ppp-loan-data-scraper').call({
states: ['CA'],
naicsCodes: ['722'],
jobsMin: 20,
maxResults: 1000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} PPP business leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new business leads straight into your CRM.
  • Slack — get notified when a monitored watch finds new records.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find veteran-owned restaurants in Texas with 20+ employees that received a PPP loan and list their lenders" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete U.S. B2B & government-data lead stack:

Tips

  • Start with the big loans. The default scans only the fast file of loans $150K+ — these are the businesses with real payroll and the best leads. Turn on includeUnder150k only when you need the long tail of small/sole-proprietor loans.
  • Target a company-size band. Combine jobsMin and jobsMax (e.g. 10–50) to find businesses in your ideal-customer size range.
  • Find survivors. Set drawType to second to focus on businesses that were still operating in 2021 and qualified for a Second-Draw loan.
  • Segment by owner demographics. Use womanOwnedOnly, veteranOwnedOnly, minorityOwnedOnly, or hispanicOwnedOnly for diversity-focused outreach and supplier programs.
  • Track a lender. Put a bank or fintech name in lenderNameQuery to study a competitor's PPP book.
  • Recurring monitoring. Combine Schedules with monitorMode and a distinct monitorKey per saved watch to harvest results incrementally without re-paying for duplicates.

FAQ

Where does the data come from? The official SBA Paycheck Protection Program (PPP) FOIA dataset published on data.sba.gov. It's public-record government data; this actor downloads, parses, filters, normalizes, scores, and structures it.

How many businesses are covered? PPP issued ~11.5 million loans in 2020–2021. Loans of $150K+ (~1 million of the largest) are scanned by default; enable includeUnder150k for the full ~11.5M.

Is the data fresh? PPP ran from April 2020 to May 2021, and SBA continues to update the file with forgiveness and status changes (the current vintage is reflected in the dataset). For lead generation it's a firmographic database — business names, addresses, industries, and sizes that remain highly accurate for segmentation and outreach.

Is there contact phone/email? PPP records contain the business name and full mailing address, industry, size, demographics, and loan details — not phone or email. Pair this with a phone/email enrichment tool or your CRM to complete the contact record.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How much does a run cost? You pay per loan/business record returned (no start fee), plus a few cents of platform compute to stream the source file.

Is this legal? This actor collects publicly available U.S. government open data released under FOIA. You are responsible for using the data in compliance with applicable laws and SBA's terms.

A field is null — why? Many owners chose not to report demographics (Gender/Race/Veteran = "Unanswered"), and some loans don't report a value. Fields are null only when the source doesn't provide them.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.