# PPP Loan Data Scraper - Small Business Leads & Firmographics (`scrapesage/ppp-loan-data-scraper`) Actor

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.

- **URL**: https://apify.com/scrapesage/ppp-loan-data-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 ppp loan / business records

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

## 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**:

| Data | Typical PPP lookups | This actor |
|---|---|---|
| Business name + full street address | partial | ✅ |
| NAICS code **and** industry sector label | code 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](https://console.apify.com/sign-up) — 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](https://docs.apify.com/api/v2).

### Input

```json
{
    "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. `10`–`50` employees).
- **drawType** — `first` (2020) or `second` (2021, a survivor-and-still-operating signal).
- **forgivenessStatus** — `forgiven` 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"`):

```json
{
    "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:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it weekly/monthly with **monitoring mode** to harvest only newly-seen records as fresh leads.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
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](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new business leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored watch finds new records.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/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](https://docs.apify.com/platform/integrations/mcp)** — 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](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/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**:

- **[SBA Loan Leads Scraper](https://apify.com/scrapesage/sba-loan-leads-scraper)** — SBA 7(a) & 504 borrowers, lenders & industries (fresh financing leads).
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly-registered LLCs & companies (fresh formation leads).
- **[SAM.gov Scraper](https://apify.com/scrapesage/sam-gov-scraper)** — federal contract opportunities & contacts.
- **[USAspending Scraper](https://apify.com/scrapesage/usaspending-scraper)** — federal awards, contractors & recipient leads.
- **[GSA eLibrary Scraper](https://apify.com/scrapesage/gsa-elibrary-scraper)** — GSA Schedule contractors & government B2B leads.
- **[FMCSA Trucking Scraper](https://apify.com/scrapesage/fmcsa-trucking-scraper)** — motor carriers, authority & owner leads.
- **[US Federal Grants Scraper](https://apify.com/scrapesage/us-federal-grants-scraper)** — Grants.gov, NIH & NSF funding.
- **[TaxBuzz Scraper](https://apify.com/scrapesage/taxbuzz-scraper)** — tax preparers, CPAs & accountant leads.

### 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](https://docs.apify.com/platform/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](https://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](https://docs.apify.com/platform/integrations/drive).

**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](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `states` (type: `array`):

Filter borrowers by U.S. state (2-letter USPS codes, e.g. CA, TX, NY). Leave empty for all states.

## `cities` (type: `array`):

Filter by borrower city (exact city names, e.g. "Austin", "Miami"). Leave empty for all cities.

## `zipCodes` (type: `array`):

Filter by borrower ZIP. Full or prefix ZIPs (e.g. "787" matches all 787xx). Leave empty for all.

## `counties` (type: `array`):

Filter by project county name (e.g. "Los Angeles", "Cook"). Leave empty for all.

## `naicsCodes` (type: `array`):

Filter by NAICS code prefix — 2 to 6 digits. Examples: 722 = restaurants/food service, 23 = construction, 621 = health care, 54 = professional services, 6212 = dentists, 8121 = personal care. Leave empty for all industries.

## `businessNameQuery` (type: `string`):

Only return borrowers whose business name contains this text (case-insensitive substring).

## `lenderNameQuery` (type: `string`):

Only return loans whose originating or servicing lender name contains this text (e.g. "JPMorgan", "Cross River", "Kabbage").

## `loanAmountMin` (type: `integer`):

Minimum current approved loan amount. Loans of $150K+ are in the fast default file; for smaller loans enable "Include loans under $150K".

## `loanAmountMax` (type: `integer`):

Maximum current approved loan amount. Setting this below 150000 automatically scans the "up to $150K" source files.

## `approvalDateFrom` (type: `string`):

Only loans approved on/after this date (YYYY-MM-DD). PPP ran from 2020-04 to 2021-05.

## `approvalDateTo` (type: `string`):

Only loans approved on/before this date (YYYY-MM-DD).

## `jobsMin` (type: `integer`):

Minimum number of jobs reported (a proxy for company size / employee count). E.g. 10 = skip sole proprietors and tiny businesses.

## `jobsMax` (type: `integer`):

Maximum number of jobs reported. Combine with "Min jobs reported" to target a company-size band (e.g. 10–50 employees).

## `drawType` (type: `string`):

First Draw (2020) vs Second Draw (2021). A Second Draw loan means the business survived into 2021 and was still operating — a stronger lead.

## `forgivenessStatus` (type: `string`):

Filter by whether the loan was forgiven (forgiveness = a legitimate, operating business that met payroll requirements).

## `businessTypes` (type: `array`):

Filter by entity type (exact PPP values, e.g. "Corporation", "Limited Liability Company(LLC)", "Sole Proprietorship", "Subchapter S Corporation", "Partnership", "Non-Profit Organization", "Self-Employed Individuals", "Independent Contractors"). Leave empty for all.

## `loanStatuses` (type: `array`):

Normalized loan statuses to include: paidInFull, chargedOff, active, exemption4. Leave empty for all.

## `franchisesOnly` (type: `boolean`):

Only return loans to franchise businesses (a named franchise brand).

## `womanOwnedOnly` (type: `boolean`):

Only return loans to women-owned businesses (Gender = Female Owned).

## `veteranOwnedOnly` (type: `boolean`):

Only return loans to veteran-owned businesses.

## `minorityOwnedOnly` (type: `boolean`):

Only return loans where the owner's reported race is a minority group (or Hispanic/Latino ethnicity).

## `hispanicOwnedOnly` (type: `boolean`):

Only return loans where the owner's reported ethnicity is Hispanic or Latino.

## `nonProfitFilter` (type: `string`):

Include all businesses, only non-profits, or only for-profits.

## `ruralUrban` (type: `string`):

Filter by SBA rural/urban classification of the business location.

## `hubzoneOnly` (type: `boolean`):

Only return businesses located in a HUBZone (Historically Underutilized Business Zone).

## `lowToModerateIncomeOnly` (type: `boolean`):

Only return businesses located in a low-to-moderate income (LMI) area.

## `includeUnder150k` (type: `boolean`):

Off (default) = scan only the fast ~452 MB file of loans $150K+ (the largest businesses with real payroll = the best leads). On = also scan the twelve "up to $150K" files (~4.9 GB, ~10M smaller loans) — much more coverage but slower. For fastest results when on, set "Sort newest first" to false.

## `maxResults` (type: `integer`):

Maximum number of loan records to return.

## `sortNewestFirst` (type: `boolean`):

Return the most recently approved loans first (Second Draw 2021 loans surface first). Note: sorting requires reading every selected file; set to false for the fastest early-stop on capped runs.

## `deduplicateResults` (type: `boolean`):

Drop duplicate loan records within a run (by loan number).

## `monitorMode` (type: `boolean`):

Emit only loans not seen in previous runs of the same monitor key — ideal for incremental lead harvesting on a schedule. Works alongside Apify Schedules (it controls what is emitted, not when the run fires).

## `monitorKey` (type: `string`):

A label for this monitored watch (e.g. "ca-restaurants"). Use a distinct key per saved filter set so their seen-lists don't mix.

## `proxyConfiguration` (type: `object`):

Optional. SBA open data downloads cleanly without a proxy (this is the default). You can enable an Apify proxy if your network requires it.

## Actor input object example

```json
{
  "states": [
    "CA"
  ],
  "naicsCodes": [
    "722"
  ],
  "drawType": "any",
  "forgivenessStatus": "any",
  "franchisesOnly": false,
  "womanOwnedOnly": false,
  "veteranOwnedOnly": false,
  "minorityOwnedOnly": false,
  "hispanicOwnedOnly": false,
  "nonProfitFilter": "any",
  "ruralUrban": "any",
  "hubzoneOnly": false,
  "lowToModerateIncomeOnly": false,
  "includeUnder150k": false,
  "maxResults": 100,
  "sortNewestFirst": true,
  "deduplicateResults": true,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped PPP loan / business records as JSON items in the default dataset.

# 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 = {
    "states": [
        "CA"
    ],
    "naicsCodes": [
        "722"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/ppp-loan-data-scraper").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 = {
    "states": ["CA"],
    "naicsCodes": ["722"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/ppp-loan-data-scraper").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 '{
  "states": [
    "CA"
  ],
  "naicsCodes": [
    "722"
  ],
  "maxResults": 100
}' |
apify call scrapesage/ppp-loan-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/ppp-loan-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/h8KjZjk3jqH79hJCf/builds/bG1ONfwgW6AYRORVP/openapi.json
