# ProPublica Nonprofit Explorer Scraper (`parseforge/propublica-nonprofit-explorer-scraper`) Actor

Search ProPublica Nonprofit Explorer for U.S. 501(c) organizations: EIN, name, NTEE code, state, city, revenue, expenses, assets, IRS subsection, ruling year, and Form 990 filings. Export nonprofit financial data to JSON, CSV, or Excel for journalism, grantmaking, and research.

- **URL**: https://apify.com/parseforge/propublica-nonprofit-explorer-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Other, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 result items

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🏛️ ProPublica Nonprofit Explorer Scraper

> 🚀 **Export 1.8M+ US nonprofits in seconds.** Search by keyword, state, or NTEE category, or look up any organization by EIN. Pull IRS Form 990 financials, addresses, NTEE codes, and filing history. No login, no scraping pipeline.

> 🕒 **Last updated:** 2026-05-23 · **📊 28 fields** per record · **🏛️ 1.8M+ US nonprofits** · **🇺🇸 50 states + territories** · **🗂️ Search + EIN lookup**

The **ProPublica Nonprofit Explorer Scraper** taps the ProPublica Nonprofit Explorer API and returns clean, structured records covering **mission, address, officers, financials, IRS Form 990 filings, NTEE classifications, and tax-exempt status** for every US 501(c) organization that has filed with the IRS. The underlying dataset is sourced directly from IRS 990 returns and Business Master File.

Coverage spans **1.8M+ tax-exempt organizations across all 50 states, DC, and US territories**, with rich classification by NTEE category (Arts, Education, Health, Human Services, Environment, etc.). This Actor exports them as CSV, Excel, JSON, or XML in under a minute, with two query modes: keyword search across the whole index, or batch lookup by EIN.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Investigative journalists, philanthropy researchers, board governance teams, due-diligence analysts, grant writers, academic researchers, foundation officers | Donor research, board diligence, grant-program analysis, 990 financials, peer benchmarking, FOIA backgrounders |

---

### 📋 What the ProPublica Nonprofit Scraper does

Two workflows in a single Actor:

- 🔍 **Search mode.** Keyword search across name, alias, and address. Optional state and NTEE category filters. Returns enriched profiles with full 990 data, not just search hits.
- 🆔 **Lookup mode.** Batch-resolve an array of EINs to full organization profiles, including filing history and asset / income / revenue.

Each record includes the organization name, address, NTEE classification, IRS subsection code, tax-exempt status, foundation type, financial totals from the latest 990, and a list of filings with and without supporting data files.

> 💡 **Why it matters:** investigative reporting, philanthropic due diligence, and grant analysis all start with structured nonprofit data. Pulling it manually means clicking through ProPublica one EIN at a time. This Actor batches the whole pipeline.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded nonprofit dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td>maxItems</td><td>integer</td><td>10</td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td>mode</td><td>string</td><td>"search"</td><td>One of search or lookup.</td></tr>
<tr><td>searchQuery</td><td>string</td><td>"red cross"</td><td>Keyword. Searches name, alias, address.</td></tr>
<tr><td>state</td><td>string</td><td><i>any</i></td><td>2-letter US state code, e.g. "NY", "CA".</td></tr>
<tr><td>category</td><td>string</td><td><i>any</i></td><td>NTEE major category filter. 26 options.</td></tr>
<tr><td>eins</td><td>array of strings</td><td><i>none</i></td><td>EINs to lookup. Required for lookup mode.</td></tr>
</tbody>
</table>

**Example: search for "youth" nonprofits in Texas.**

```json
{
    "maxItems": 50,
    "mode": "search",
    "searchQuery": "youth",
    "state": "TX"
}
````

**Example: batch-resolve 3 EINs to full profiles.**

```json
{
    "maxItems": 10,
    "mode": "lookup",
    "eins": ["13-1644147", "53-0196605", "94-1156347"]
}
```

> ⚠️ **Good to Know:** 990 financials reflect the most recent IRS filing on record, which can lag the current fiscal year by 18-24 months depending on filing extensions. For real-time fundraising data, consult the nonprofit directly. Search results always include enriched profile data, not just match snippets.

***

### 📊 Output

Each record contains up to **28 fields** of organization metadata, financials, and filing history. Download as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `ein` | integer | `131644147` |
| 🆔 `strein` | string | `"13-1644147"` |
| 🏛️ `name` | string | `"American Red Cross"` |
| 🏷️ `subName` | string | null | `"American National Red Cross"` |
| 📍 `address` | string | `"431 18th St Nw"` |
| 🏙️ `city` | string | `"Washington"` |
| 📍 `state` | string | `"DC"` |
| 📮 `zipcode` | string | `"20006"` |
| 🔗 `url` | string | ProPublica profile URL |
| 🏷️ `subsectionCode` | integer | `3` (501(c)(3)) |
| 🗂️ `nteeCode` | string | `"M20"` (Disaster Prep) |
| 📅 `rulingDate` | date | `"1938-01-01"` |
| 🏛️ `foundationCode` | integer | `15` |
| 🏷️ `exemptOrganizationStatusCode` | integer | `1` |
| 💰 `assetAmount` | integer | `4783000000` |
| 💵 `incomeAmount` | integer | `3022000000` |
| 💸 `revenueAmount` | integer | `3022000000` |
| 📅 `taxPeriod` | integer | `202312` |
| 📅 `accountingPeriod` | integer | `12` |
| 🏷️ `dataSource` | string | `"BMF"` |
| 📋 `filingsWithData` | array | List of 990s with parsed financials |
| 📋 `filingsWithoutData` | array | List of 990s on file only |
| 📊 `score` | number | null | Search relevance score |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-23T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>🏛️ Major charity: American Red Cross</strong></summary>

```json
{
    "recordType": "organization",
    "ein": 131644147,
    "strein": "13-1644147",
    "name": "American National Red Cross",
    "address": "431 18th St Nw",
    "city": "Washington",
    "state": "DC",
    "zipcode": "20006-5001",
    "url": "https://projects.propublica.org/nonprofits/organizations/131644147",
    "subsectionCode": 3,
    "nteeCode": "M20",
    "rulingDate": "1938-01-01",
    "foundationCode": 15,
    "exemptOrganizationStatusCode": 1,
    "assetAmount": 4783000000,
    "incomeAmount": 3022000000,
    "revenueAmount": 3022000000,
    "taxPeriod": 202312,
    "filingsWithData": [
        { "tax_prd": 202312, "tax_prd_yr": 2023, "formtype": 0, "pdf_url": "https://..." }
    ],
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🌳 Small environmental nonprofit: Local land trust</strong></summary>

```json
{
    "recordType": "organization",
    "ein": 222345678,
    "strein": "22-2345678",
    "name": "Community Land Trust Of Hudson Valley",
    "city": "Kingston",
    "state": "NY",
    "subsectionCode": 3,
    "nteeCode": "C30",
    "assetAmount": 1240000,
    "revenueAmount": 380000,
    "taxPeriod": 202212,
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🎓 Higher education: Stanford University</strong></summary>

```json
{
    "recordType": "organization",
    "ein": 941156365,
    "strein": "94-1156365",
    "name": "Leland Stanford Junior University",
    "city": "Stanford",
    "state": "CA",
    "subsectionCode": 3,
    "nteeCode": "B43",
    "assetAmount": 56300000000,
    "revenueAmount": 9670000000,
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🏛️ | **1.8M+ nonprofits.** Every US 501(c) tax-exempt organization in the IRS Business Master File. |
| 💰 | **Form 990 financials.** Assets, income, revenue, tax period, plus links to filed 990 PDFs. |
| 🔍 | **Two query modes.** Free-text search across the whole index, or batch EIN lookup for due diligence. |
| 🗂️ | **NTEE classification.** Filter by 26 NTEE categories, from Arts to Public Safety. |
| 🇺🇸 | **All 50 states + DC + territories.** Filter by state for regional analysis. |
| ⚡ | **Fast.** 50 enriched profiles in under 30 seconds. |
| 🚫 | **No authentication.** Public dataset, no key needed. |

> 📊 Nonprofit transparency starts with IRS 990 filings. This Actor makes 1.8M+ of them queryable from a single Actor run.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ ProPublica Nonprofit Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **1.8M+ orgs** | **Live per run** | search, state, NTEE, EIN | ⚡ 2 min |
| GuideStar / Candid Premier | $1,000+/year | Same dataset + extras | Daily | Many | 🐢 Days |
| Manual ProPublica clicks | Free | Per-org | Manual | Limited | 🐌 Slow |
| IRS bulk 990 downloads | Free | Annual flat-file | Annual | Heavy parsing required | 🕒 Weeks |

Pick this Actor when you want clean, queryable nonprofit data without subscribing to a premium platform.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the ProPublica Nonprofit Explorer Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a mode (search or lookup), set keyword, state, category, or EIN list.
4. 🚀 **Run it.** Click **Start** and let the Actor pull enriched profiles.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 📰 Investigative Journalism

- Background checks on nonprofits in a story
- Cross-state comparisons of advocacy groups
- Trace dark-money networks via EIN graphs
- 990 financials for nonprofit governance stories

</td>
<td width="50%" valign="top">

#### 🎓 Philanthropy & Grants

- Identify grant-eligible organizations by NTEE
- Benchmark grantees against peer nonprofits
- Pre-grant due diligence on candidate orgs
- Track funder peer-group financials over time

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🏛️ Board Governance & Compliance

- Board background checks on candidate trustees
- Cross-reference officer EINs across nonprofits
- Validate 501(c) status before partnering
- Pull annual financials for audit planning

</td>
<td width="50%" valign="top">

#### 📊 Sector Research & Academia

- State-level nonprofit ecosystem mapping
- NTEE category market sizing
- Longitudinal asset / revenue studies
- Research on tax-exempt sector growth

</td>
</tr>
</table>

***

### 🔌 Automating ProPublica Nonprofit Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Refresh a watched-EIN list nightly, or pull a state directory monthly.

***

### 🌟 Beyond business use cases

Nonprofit transparency data feeds research, civic projects, classrooms, and personal investigations.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Nonprofit-sector papers in public policy journals
- Sociology of philanthropy coursework
- Reproducible datasets for civic-tech studies
- Open-data exercises on tax-exempt sector

</td>
<td width="50%">

#### 🎨 Personal and creative

- Personal donor decision-making spreadsheets
- Family foundation grant trackers
- Hobbyist civic-tech dashboards
- Newsletter research for nonprofit beats

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Local community nonprofit ecosystem maps
- Watchdog projects on advocacy funding
- Investigative civic journalism on charities
- Voter-guide nonprofit cross-referencing

</td>
<td width="50%">

#### 🧪 Experimentation

- Train fraud-detection ML on 990 anomalies
- Prototype an AI agent that drafts grant memos
- Build a "is this org legit?" Slack bot
- Test data warehouse loaders on nonprofit schemas

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20ProPublica%20Nonprofit%20Explorer%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20ProPublica%20Nonprofit%20Explorer%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20ProPublica%20Nonprofit%20Explorer%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20ProPublica%20Nonprofit%20Explorer%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Pick search or lookup mode. In search mode, supply a keyword plus optional state and NTEE category. In lookup mode, supply an array of EINs. Every record returns full profile data.

#### 📏 How accurate is the data?

The data is sourced directly from IRS 990 filings and the Business Master File. Financials reflect the most recent filing on record (typically 18-24 months behind the current fiscal year).

#### 🔁 How often is the dataset refreshed?

ProPublica refreshes the Nonprofit Explorer on a regular cadence (multiple times per year, sometimes monthly). Every run of this Actor pulls the latest snapshot.

#### 🔎 Can I batch-resolve hundreds of EINs?

Yes. Pass them in the `eins` array. The Actor automatically rate-limits to stay friendly with the source.

#### 🗂️ What is NTEE?

The National Taxonomy of Exempt Entities. 26 major categories (Arts, Education, Health, Human Services, etc.) and finer subcategories used by the IRS and research community.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to trigger this Actor on any cron interval.

#### ⚖️ Is this data legal to use?

Yes. IRS Form 990 filings are public record. ProPublica publishes them under permissive terms for research and journalism.

#### 💼 Can I use this data commercially?

Yes for analytical and editorial use. Review ProPublica's terms and the underlying IRS public-record rules for redistribution scenarios.

#### 💳 Do I need a paid Apify plan?

No. The free Apify plan handles small runs (10 records). Paid plans lift the cap and unlock scheduling.

#### 🔁 What happens if a run fails?

Apify retries transient errors automatically. Failed runs preserve partial datasets so no progress is lost.

#### 🛬 What if I need full 990 PDF parsing?

Each record includes `filingsWithData` URLs to the actual 990 PDFs on the IRS portal. For automated PDF extraction, request a companion PDF parser via the contact form below.

#### 🆘 What if I need help?

Reach our support team through the Apify platform or the Tally form linked below.

***

### 🔌 Integrate with any app

ProPublica Nonprofit Explorer Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get nonprofit alerts in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe nonprofit data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push enriched profiles into your CRM, or alert your editorial team in Slack when a new filing appears.

***

### 🔗 Recommended Actors

- [**🏛️ Florida Sunbiz Business Scraper**](https://apify.com/parseforge/sunbiz-florida-business-scraper) - FL business registrations and officers
- [**📈 SEC EDGAR Scraper**](https://apify.com/parseforge/sec-edgar-scraper) - Public-company filings and financials
- [**🏛️ FINRA BrokerCheck Scraper**](https://apify.com/parseforge/finra-brokercheck-scraper) - Broker and investment adviser histories
- [**📊 Indexmundi Scraper**](https://apify.com/parseforge/indexmundi-scraper) - Global demographic and economic indicators
- [**🗺️ Nominatim OSM Scraper**](https://apify.com/parseforge/nominatim-osm-scraper) - Geocode nonprofit addresses via OpenStreetMap

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by ProPublica, the Internal Revenue Service, or any nonprofit organization. All trademarks mentioned are the property of their respective owners. Only publicly available IRS-disclosed nonprofit data is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `mode` (type: `string`):

search = keyword/state/category search across all nonprofits, lookup = pull full profile for one or more EINs.

## `searchQuery` (type: `string`):

Keyword search. Searches name, alias, address. Used in search mode.

## `state` (type: `string`):

US state filter for search mode.

## `category` (type: `string`):

NTEE major category filter for search mode.

## `eins` (type: `array`):

List of EIN strings, e.g. \['13-1644147','53-0196605']. Required for lookup mode.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "search",
  "searchQuery": "red cross"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "maxItems": 10,
    "mode": "search",
    "searchQuery": "red cross"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/propublica-nonprofit-explorer-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 = {
    "maxItems": 10,
    "mode": "search",
    "searchQuery": "red cross",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/propublica-nonprofit-explorer-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 '{
  "maxItems": 10,
  "mode": "search",
  "searchQuery": "red cross"
}' |
apify call parseforge/propublica-nonprofit-explorer-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/propublica-nonprofit-explorer-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ProPublica Nonprofit Explorer Scraper",
        "description": "Search ProPublica Nonprofit Explorer for U.S. 501(c) organizations: EIN, name, NTEE code, state, city, revenue, expenses, assets, IRS subsection, ruling year, and Form 990 filings. Export nonprofit financial data to JSON, CSV, or Excel for journalism, grantmaking, and research.",
        "version": "1.0",
        "x-build-id": "gxr8r0995mpsJfU42"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~propublica-nonprofit-explorer-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-propublica-nonprofit-explorer-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~propublica-nonprofit-explorer-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-propublica-nonprofit-explorer-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~propublica-nonprofit-explorer-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-propublica-nonprofit-explorer-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "lookup"
                        ],
                        "type": "string",
                        "description": "search = keyword/state/category search across all nonprofits, lookup = pull full profile for one or more EINs."
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword search. Searches name, alias, address. Used in search mode."
                    },
                    "state": {
                        "title": "State",
                        "enum": [
                            "",
                            "AL",
                            "AK",
                            "AZ",
                            "AR",
                            "CA",
                            "CO",
                            "CT",
                            "DE",
                            "FL",
                            "GA",
                            "HI",
                            "ID",
                            "IL",
                            "IN",
                            "IA",
                            "KS",
                            "KY",
                            "LA",
                            "ME",
                            "MD",
                            "MA",
                            "MI",
                            "MN",
                            "MS",
                            "MO",
                            "MT",
                            "NE",
                            "NV",
                            "NH",
                            "NJ",
                            "NM",
                            "NY",
                            "NC",
                            "ND",
                            "OH",
                            "OK",
                            "OR",
                            "PA",
                            "RI",
                            "SC",
                            "SD",
                            "TN",
                            "TX",
                            "UT",
                            "VT",
                            "VA",
                            "WA",
                            "WV",
                            "WI",
                            "WY",
                            "DC",
                            "PR",
                            "AS",
                            "GU",
                            "MP",
                            "VI"
                        ],
                        "type": "string",
                        "description": "US state filter for search mode."
                    },
                    "category": {
                        "title": "NTEE Category",
                        "enum": [
                            "",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23",
                            "24",
                            "25",
                            "26"
                        ],
                        "type": "string",
                        "description": "NTEE major category filter for search mode."
                    },
                    "eins": {
                        "title": "EINs (lookup mode)",
                        "type": "array",
                        "description": "List of EIN strings, e.g. ['13-1644147','53-0196605']. Required for lookup mode.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
