# Foundation Grant Prospector (990-PF Giving Data) (`immense_greenery/foundation-grant-prospector`) Actor

Find private foundations by cause, name, or state and rank them by how much they actually give out each year (total grants paid), with assets and their latest IRS 990-PF filing. Free public data via ProPublica Nonprofit Explorer.

- **URL**: https://apify.com/immense\_greenery/foundation-grant-prospector.md
- **Developed by:** [Adam Tokar](https://apify.com/immense_greenery) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

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

## Foundation Grant Prospector (990-PF Giving Data)

Find the foundations that can actually fund your nonprofit. Search US private foundations by cause, name, or state, and rank them by **how much they give out each year** (total grants paid from their latest IRS 990-PF), alongside their assets and filing history. Powered by the free public ProPublica Nonprofit Explorer data.

Built for nonprofits, grant writers, development teams, and researchers doing funder prospecting, so you spend your time on foundations with real giving capacity instead of guessing.

### Why grants paid matters

Assets tell you how big a foundation is. **Grants paid tells you how much it actually gives away.** A foundation sitting on a large endowment but paying out little is a weak prospect. This Actor surfaces the giving number front and center and lets you filter on it.

### What it does

- Searches ProPublica by your cause or name query, optionally restricted to a state.
- Pulls each foundation's latest IRS filing and extracts the giving and financial summary.
- Filters to confirmed private foundations (990-PF) and to a minimum grants-paid threshold, so the output is only real, fundable prospects.
- You can also pass a list of EINs to profile specific foundations directly.

### Input

| Field | Type | Description |
|---|---|---|
| `query` | string | Foundation name or cause keywords (for example `health foundation`, `maternal`, `community`). |
| `eins` | array | Specific foundation EINs to profile. When set, the query is skipped. |
| `state` | string | Optional 2 letter US state code (for example `NC`, `TX`, `CO`). |
| `maxFoundations` | integer | Max foundations to return. Default 10. |
| `minGrantsPaidUsd` | integer | Only return foundations that gave at least this much in their latest filing. Default 0. |
| `privateFoundationsOnly` | boolean | Only confirmed 990-PF private foundations. Default true. |

### Output example

```json
{
    "ein": "841393308",
    "name": "Daniels Fund",
    "city": "Denver",
    "state": "CO",
    "nteeCode": "T22",
    "isPrivateFoundation": true,
    "latestFilingYear": 2023,
    "totalAssetsUsd": 1303622638,
    "totalRevenueUsd": 123024315,
    "grantsPaidUsd": 67434251,
    "filingPdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=...",
    "propublicaUrl": "https://projects.propublica.org/nonprofits/organizations/841393308",
    "scrapedAt": "2026-07-02T18:30:00.000Z"
}
````

### Use cases

- Build a ranked prospect list of foundations by cause and geography
- Qualify funders by real giving capacity before you invest time in an application
- Enrich a CRM or grant pipeline with foundation financials and IRS links
- Feed an AI grant matching agent with fundable foundation targets

### Honest limitations

- Every figure comes directly from the foundation's most recent IRS filing as published by ProPublica. When a value is not in the filing, the field is `null`. Nothing is estimated or fabricated.
- This Actor returns each foundation's **total** grants paid, assets, and revenue. It does **not** return the individual grant line items (who received each grant), because that detail is not available through a reliable public feed for recent filing years. If you need per grant recipient data, that lives in the raw IRS e-file XML for older years only.
- Financial data typically runs one to two filing years behind, since foundations file annually and processing takes time. Treat it as a picture of who funds and how much, not a live deadline feed.
- Search matches on organization names and text, so broad queries can surface similarly named organizations. The private-foundation and minimum-giving filters remove ones without real giving data.

### Fair use

This Actor reads the free, public ProPublica Nonprofit Explorer API at a polite rate. Please use the data responsibly and credit ProPublica and the IRS as the underlying sources.

# Actor input Schema

## `query` (type: `string`):

Foundation name or cause keywords (for example: health foundation, maternal, cardiovascular, community). Leave empty if you provide EINs.

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

Optional list of specific foundation EINs to look up. When provided, the search query is skipped.

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

Optional 2-letter US state code to restrict results (for example NC, TX, CO).

## `maxFoundations` (type: `integer`):

Maximum number of foundations to return.

## `minGrantsPaidUsd` (type: `integer`):

Only return foundations whose latest filing reports at least this much in total grants paid. Great for finding funders with real giving capacity.

## `privateFoundationsOnly` (type: `boolean`):

Only return organizations whose latest filing is a 990-PF (private foundation). Default: true.

## Actor input object example

```json
{
  "query": "health foundation",
  "maxFoundations": 10,
  "minGrantsPaidUsd": 100000,
  "privateFoundationsOnly": true
}
```

# 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 = {
    "query": "health foundation",
    "maxFoundations": 10,
    "minGrantsPaidUsd": 100000
};

// Run the Actor and wait for it to finish
const run = await client.actor("immense_greenery/foundation-grant-prospector").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 = {
    "query": "health foundation",
    "maxFoundations": 10,
    "minGrantsPaidUsd": 100000,
}

# Run the Actor and wait for it to finish
run = client.actor("immense_greenery/foundation-grant-prospector").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 '{
  "query": "health foundation",
  "maxFoundations": 10,
  "minGrantsPaidUsd": 100000
}' |
apify call immense_greenery/foundation-grant-prospector --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=immense_greenery/foundation-grant-prospector",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Foundation Grant Prospector (990-PF Giving Data)",
        "description": "Find private foundations by cause, name, or state and rank them by how much they actually give out each year (total grants paid), with assets and their latest IRS 990-PF filing. Free public data via ProPublica Nonprofit Explorer.",
        "version": "0.1",
        "x-build-id": "Dnn1ylPdybIe5hiSl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/immense_greenery~foundation-grant-prospector/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-immense_greenery-foundation-grant-prospector",
                "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/immense_greenery~foundation-grant-prospector/runs": {
            "post": {
                "operationId": "runs-sync-immense_greenery-foundation-grant-prospector",
                "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/immense_greenery~foundation-grant-prospector/run-sync": {
            "post": {
                "operationId": "run-sync-immense_greenery-foundation-grant-prospector",
                "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": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Foundation name or cause keywords (for example: health foundation, maternal, cardiovascular, community). Leave empty if you provide EINs."
                    },
                    "eins": {
                        "title": "EIN list",
                        "type": "array",
                        "description": "Optional list of specific foundation EINs to look up. When provided, the search query is skipped.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "state": {
                        "title": "State filter",
                        "type": "string",
                        "description": "Optional 2-letter US state code to restrict results (for example NC, TX, CO)."
                    },
                    "maxFoundations": {
                        "title": "Max foundations",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of foundations to return.",
                        "default": 10
                    },
                    "minGrantsPaidUsd": {
                        "title": "Minimum grants paid (USD)",
                        "type": "integer",
                        "description": "Only return foundations whose latest filing reports at least this much in total grants paid. Great for finding funders with real giving capacity.",
                        "default": 0
                    },
                    "privateFoundationsOnly": {
                        "title": "Private foundations only (990-PF)",
                        "type": "boolean",
                        "description": "Only return organizations whose latest filing is a 990-PF (private foundation). Default: true.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
