# CauseIQ Nonprofit Scraper (`compute-edge/causeiq-scraper`) Actor

Extract nonprofit organization data from CauseIQ.com -- the comprehensive directory of US nonprofits, charities, foundations, and associations.

- **URL**: https://apify.com/compute-edge/causeiq-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Other, Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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 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

## CauseIQ Nonprofit & Association Directory Scraper

**Extract nonprofit organization data from CauseIQ.com** -- the comprehensive directory of US nonprofits, charities, foundations, and associations. This Actor scrapes organization names, revenue figures, total assets, employee counts, EIN numbers, IRS classification types, and profile URLs from the **CauseIQ nonprofit directory**. It supports filtering by **category** (such as colleges, hospitals, food banks, museums) and optionally by **US state**, making it an ideal tool for nonprofit research, grant prospecting, donor analysis, and competitive benchmarking.

### What data can you scrape from CauseIQ?

This **CauseIQ scraper** extracts structured nonprofit data directly from the site's embedded JSON-LD metadata, ensuring high accuracy and reliability. Because it uses CheerioCrawler (HTTP-only, no browser), it runs extremely fast and at minimal compute cost.

| Field | Description |
|-------|-------------|
| **name** | Organization name |
| **revenue** | Annual revenue (from IRS Form 990) |
| **assets** | Total assets |
| **employees** | Number of employees |
| **ein** | Employer Identification Number (EIN) |
| **irsType** | IRS classification (e.g., 501(c)(3)) |
| **profileUrl** | CauseIQ organization profile URL |
| **category** | The category searched |

When **Scrape Detail Pages** is enabled, additional fields are extracted:

| Field | Description |
|-------|-------------|
| **description** | Organization description from meta tags |
| **address** | Street address with city, state, ZIP |
| **location** | City, state, ZIP |
| **phone** | Phone number |
| **website** | Organization website URL |
| **nteeCode** | NTEE classification code (e.g., B42: Undergraduate College) |
| **naicsCode** | NAICS industry code |
| **yearFormed** | Year the organization was formed |
| **metroArea** | Metropolitan area |

### Why use this CauseIQ scraper?

- **No login required** -- all data is extracted from publicly accessible directory pages
- **Category filtering** -- scrape specific nonprofit sectors like colleges, hospitals, food banks, animal shelters, and museums
- **State filtering** -- narrow results to a specific US state (e.g., California, New York, Texas)
- **JSON-LD extraction** -- uses embedded structured data for high accuracy, not fragile DOM selectors
- **Fast and efficient** -- CheerioCrawler (no browser needed) keeps compute costs extremely low
- **Pagination support** -- automatically follows listing pages with 20 organizations per page
- **Two modes** -- quick listing data or full detail page scraping for complete nonprofit profiles
- **Bulk export** -- download results as JSON, CSV, Excel, or connect via API

### How to scrape CauseIQ nonprofit data

1. Go to the [CauseIQ Scraper](https://apify.com/seatsignal/causeiq-scraper) page on the Apify Store
2. Click **Try for free** to open the Actor in the Apify Console
3. Enter a **Category** slug (e.g., `colleges-and-universities`, `hospitals`, `food-banks`, `animal-shelters`, `museums`). Find available category slugs by browsing [causeiq.com/directory/](https://www.causeiq.com/directory/)
4. Optionally enter a **State Filter** (e.g., `california`, `new-york`, `texas`) to narrow results to a single US state
5. Set **Max Pages** to control how many listing pages to scrape. Each page contains 20 organizations
6. Toggle **Scrape Detail Pages** on if you want full organization profiles (address, phone, NTEE code, website) or leave it off for a faster run with basic financial data
7. Set **Max Requests** as a safety limit to prevent runaway costs
8. Click **Start** and wait for results
9. Download your data as JSON, CSV, or Excel, or access it via the Apify API

### Input example

```json
{
    "category": "colleges-and-universities",
    "state": "",
    "maxPages": 5,
    "scrapeDetails": false,
    "maxRequestsPerCrawl": 500
}
````

### Output example

Each nonprofit organization returns a JSON object like this (listing mode):

```json
{
    "name": "Harvard University",
    "revenue": "$6,051,934,438",
    "assets": "$70,647,595,000",
    "employees": "37,629",
    "ein": "04-2103580",
    "irsType": "501(c)(3)",
    "profileUrl": "https://www.causeiq.com/organizations/harvard-university,042103580/",
    "category": "colleges-and-universities"
}
```

With **Scrape Detail Pages** enabled, each record includes additional fields:

```json
{
    "name": "Mount Holyoke College",
    "revenue": "$255,831,582",
    "assets": "$1,513,018,179",
    "employees": "2,880",
    "ein": "04-2103578",
    "irsType": "501(c)(3)",
    "profileUrl": "https://www.causeiq.com/organizations/mount-holyoke-college,042103578/",
    "category": "colleges-and-universities",
    "description": "Mount Holyoke College is a highly selective, nondenominational, residential, liberal arts college for women...",
    "address": "50 College St, South Hadley, MA 01075",
    "location": "South Hadley, MA 01075",
    "phone": "(413) 538-2000",
    "website": "mtholyoke.edu/",
    "nteeCode": "B42: Undergraduate College (4-year)",
    "naicsCode": "611310: Colleges, Universities, and Professional Schools",
    "yearFormed": "1836",
    "metroArea": "Springfield, MA"
}
```

### How much does it cost to scrape CauseIQ?

This Actor uses **CheerioCrawler** (no browser), so compute costs are very low. The main cost factor is the per-result Actor fee.

| Scenario | Pages | Results | Est. Compute | Est. Actor Fee |
|----------|-------|---------|-------------|----------------|
| One category, 1 page | 1 | ~20 | ~$0.005 | ~$0.04 |
| One category, 5 pages | 5 | ~100 | ~$0.01 | ~$0.20 |
| One category, all pages | 50+ | ~1,000+ | ~$0.10 | ~$2.00 |
| Category + detail pages | 5 + 100 | ~100 | ~$0.05 | ~$0.20 |

Actor pricing: **$0.002 per result** + minimal platform compute costs. A typical run of 5 pages costs under $0.25 total.

### Available categories

Here are some popular CauseIQ directory categories you can scrape:

| Category Slug | Description |
|---------------|-------------|
| `colleges-and-universities` | Higher education institutions |
| `hospitals` | Healthcare facilities |
| `food-banks` | Food distribution nonprofits |
| `animal-shelters` | Animal welfare organizations |
| `museums` | Museums and cultural institutions |
| `youth-development` | Youth-focused nonprofits |
| `environmental` | Environmental organizations |
| `arts-culture` | Arts and cultural nonprofits |

Browse all categories at [causeiq.com/directory/categories-ntees/](https://www.causeiq.com/directory/categories-ntees/)

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `category` | string | Yes | `colleges-and-universities` | CauseIQ category slug |
| `state` | string | No | -- | US state filter (e.g., `california`) |
| `maxPages` | integer | No | `5` | Max listing pages to scrape (1-500) |
| `scrapeDetails` | boolean | No | `false` | Visit detail pages for full profiles |
| `maxRequestsPerCrawl` | integer | No | `500` | Safety limit on total HTTP requests |

### Tips for best results

- **Finding category slugs**: Browse the [CauseIQ directory](https://www.causeiq.com/directory/) and copy the URL slug from the address bar. For example, `https://www.causeiq.com/directory/colleges-and-universities-list/` uses the slug `colleges-and-universities`.
- **State filtering**: Use lowercase state names with hyphens for multi-word states (e.g., `new-york`, `north-carolina`, `south-dakota`).
- **Quick mode**: Keep `scrapeDetails` set to `false` for fast bulk extraction of names, revenue, assets, and EIN numbers.
- **Full profiles**: Enable `scrapeDetails` to get address, phone, website, and NTEE codes. This makes one additional request per organization, so it is slower.
- **Large scrapes**: Increase both `maxPages` and `maxRequestsPerCrawl` together. Each page has 20 organizations.

### Integrations

Connect CauseIQ nonprofit data with your workflow:

- **API** -- Access results programmatically via the [Apify API](https://docs.apify.com/api/v2)
- **Webhooks** -- Get notified when a scrape completes
- **Zapier / Make** -- Pipe results into Google Sheets, CRMs, or databases
- **Python / Node.js** -- Use the [Apify SDK](https://docs.apify.com/sdk/js) to run and retrieve data

### Legal disclaimer

This Actor extracts publicly available nonprofit organization data from CauseIQ.com. It does not extract private user data, bypass authentication, or access protected content. The scraped data consists of nonprofit organization information derived from IRS Form 990 filings, which are public records. CauseIQ makes this data freely accessible on their public directory pages.

Users are responsible for ensuring their use of scraped data complies with applicable laws, including GDPR and CCPA, as well as the CauseIQ Terms of Service. For questions about data usage, consult a legal professional.

### Support

- **Issues?** Open an issue on the Actor's Apify page
- **Custom data needs?** Contact us for enterprise solutions

# Actor input Schema

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

CauseIQ category slug. Examples: 'colleges-and-universities', 'hospitals', 'food-banks', 'animal-shelters', 'museums'. Find slugs at causeiq.com/directory/.

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

Optional US state to filter by (e.g., 'california', 'new-york', 'texas'). Leave empty for all states.

## `maxPages` (type: `integer`):

Maximum number of listing pages to scrape. Each page has 20 organizations.

## `scrapeDetails` (type: `boolean`):

If true, visits each organization's detail page for full description and mission. Slower but more complete.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum total HTTP requests. Safety limit.

## Actor input object example

```json
{
  "category": "colleges-and-universities",
  "maxPages": 5,
  "scrapeDetails": false,
  "maxRequestsPerCrawl": 500
}
```

# Actor output Schema

## `results` (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 = {
    "category": "colleges-and-universities"
};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/causeiq-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 = { "category": "colleges-and-universities" }

# Run the Actor and wait for it to finish
run = client.actor("compute-edge/causeiq-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 '{
  "category": "colleges-and-universities"
}' |
apify call compute-edge/causeiq-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CauseIQ Nonprofit Scraper",
        "description": "Extract nonprofit organization data from CauseIQ.com -- the comprehensive directory of US nonprofits, charities, foundations, and associations.",
        "version": "0.1",
        "x-build-id": "Yjk73eEGqB1hq0sRn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~causeiq-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-causeiq-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/compute-edge~causeiq-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-causeiq-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/compute-edge~causeiq-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-causeiq-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",
                "required": [
                    "category"
                ],
                "properties": {
                    "category": {
                        "title": "Category",
                        "type": "string",
                        "description": "CauseIQ category slug. Examples: 'colleges-and-universities', 'hospitals', 'food-banks', 'animal-shelters', 'museums'. Find slugs at causeiq.com/directory/."
                    },
                    "state": {
                        "title": "State Filter",
                        "type": "string",
                        "description": "Optional US state to filter by (e.g., 'california', 'new-york', 'texas'). Leave empty for all states."
                    },
                    "maxPages": {
                        "title": "Max Pages",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of listing pages to scrape. Each page has 20 organizations.",
                        "default": 5
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "If true, visits each organization's detail page for full description and mission. Slower but more complete.",
                        "default": false
                    },
                    "maxRequestsPerCrawl": {
                        "title": "Max Requests",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum total HTTP requests. Safety limit.",
                        "default": 500
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
