Nonprofits buy software and services like any other organization, but the buyer is rarely who you expect. The executive director signs. A development, finance or operations lead evaluates. This guide maps that committee, sizes each role with free counts, and gives you a message for each.
The examples use US organizations and placeholder names. Swap in your own market.
Three things change when the account is a nonprofit. The buyer count is small, the budget cycle is slow, and the person who feels the pain is often not the person who pays. A development director may want your tool, but the finance lead and the executive director still have to agree.
That shapes the list. You want fewer accounts and more contacts per account, spread across roles. You also want to size the segment honestly before you commit a quarter to it. Free counts do that job in minutes.
TL;DR
- Time: about 60 minutes to a sized and sampled list.
- Records: about 100 LeadOcean records for the sample. The sizing calls are free and spend nothing.
- Method: pick the nonprofit industry values, count each committee role, sample one role, then write one message per role.
Prerequisites
- A LeadOcean account. The free plan has 1,000 records for life and no card.
- An API key exported as
$LEADOCEAN_API_KEY. curlandjq, or any HTTP client.- Optional: the hosted MCP server at
https://api.leadocean.io/mcpif you work from Claude.
Requests go to https://api.leadocean.io with the x-api-key header.
Step 1: Resolve the nonprofit industry values
Filter values are exact strings, so look them up first. Nonprofits sit under more than one industry value, and a single value misses part of the segment.
for q in non-profit philanthrop fundraising civic; do
curl -s "https://api.leadocean.io/v1/enums/industry?q=$q" | jq -r '.data.values[]'
doneFrom Claude with the MCP server connected, the free tool does the same job.
leadocean_list_enum_values({ name: "industry", q: "non-profit" })The two core values are Non-profit Organizations and Non-profit Organization Management. Related values such as Philanthropy, Fundraising and Civic and Social Organizations fit if you sell to foundations or membership groups. There is also a companyType of Nonprofit, which cuts across industries, so a hospital or a school that files as a nonprofit shows up there.
Start with the two core industry values. Widen later if the count is too small.
Check one more thing before you move on. Some trade associations, foundations and political groups sit in adjacent values such as Industry Associations, Philanthropy or Political Organizations. Decide up front whether they belong in your market. A foundation that gives money buys differently from a service nonprofit that spends it.
Step 2: Size the company list for free
Count companies before people. The count costs nothing and tells you whether the segment can carry an outbound motion.
curl -s "https://api.leadocean.io/v1/companies/count" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-G --data-urlencode "industry=Non-profit Organizations,Non-profit Organization Management" \
--data-urlencode "hqCountry=US" \
--data-urlencode "employeeRange=51-200,201-500" | jq '.data.total'The MCP equivalent is leadocean_count_companies. It returns a breakdown by HQ state and NAICS code, so you can see where the segment clusters.
Small nonprofits often have no software buyer at all. The 51 to 500 employee band is where a dedicated finance, IT or development function starts to appear. Tighten or loosen the band for your product.
Step 3: Build one filter per committee role
A nonprofit buying committee is usually four roles. Count each one separately, because the counts differ by a factor of ten.
| Role | What they decide | Filter |
|---|---|---|
| Executive sponsor | Signs, owns the board story | title: ["Executive Director"] or jobLevel: ["C-Team"] |
| Fundraising lead | Owns donor and grant revenue | title: ["Director of Development"] |
| Finance lead | Owns budget and audit | jobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Finance & Accounting"] |
| Operations or IT lead | Runs the systems | jobFunction: ["Operations"] or ["Information Technology"] |
| Marketing or communications lead | Owns outreach and campaigns | jobFunction: ["Advertising & Marketing"] |
Run the sizing call for each. The count=true query parameter makes it free, and meta.total comes back capped at 100,000.
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": ["Non-profit Organizations", "Non-profit Organization Management"],
"country": ["US"],
"jobLevel": ["Director", "VP", "C-Team"],
"jobFunction": ["Finance & Accounting"],
"limit": 1
}'From Claude, the same sizing is leadocean_count_leads. Enum values are case-exact: C-Team, VP, Director, and seniority values are lowercase.
Step 4: Pull a small sample and read email status
Spend a few records to check quality before any bulk pull. Page size is 1 to 100 and pagination uses cursor.
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": ["Non-profit Organizations", "Non-profit Organization Management"],
"country": ["US"],
"title": ["Director of Development"],
"emailStatus": ["verified"],
"limit": 100
}' | jq '.data | length'This spends up to 100 records. Read email_status on each row before you send. LeadOcean does not refund bounces, so mail verified first and treat catch_all as a second wave.
If you already know the organization, list its people by domain.
curl -s "https://api.leadocean.io/v1/companies/acme.org/people?limit=25" \
-H "x-api-key: $LEADOCEAN_API_KEY"One search pages to 10,000 rows. If meta.depthCapped is true, narrow the filters with a state or a headcount band instead of walking further.
Step 5: Match the message to the role
Pick one role from Step 3 and one angle from the table. Test it on the sample from Step 4 before you scale. Send in small waves of 50 to 100, read the replies, then change one thing at a time.
The same offer lands differently on each role, so write one angle per role and keep each under 90 words. These are working hypotheses to test, not measured results.
| Role | Angle to test | Proof they will ask for |
|---|---|---|
| Executive director | Time back for a small team | A short pilot with a clear end date |
| Development director | More donor and grant revenue per staff hour | How it fits the donor database they already run |
| Finance lead | Predictable cost, audit trail | A fixed price in writing |
| Operations or IT lead | Low setup, low risk | Data handling and who can see what |
| Marketing lead | Reach the right people with less list work | A sample they can inspect |
Write the first line for the role, not the company. A finance lead reads "fixed monthly cost, no overage" and keeps going. A development director reads "less list-building time before the spring appeal" and keeps going. Neither reads a feature list.
Three habits help in this segment. Lead with the mission or program, not the product. Keep prices plain, since nonprofit budgets are approved in cycles. Ask for a short call about one named program rather than a demo.
For larger lists, export from the app or the API instead of paging. An export takes up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on the Free plan, so a paid plan applies: Solo is $97 a month and Agency is $497 a month. See pricing.
curl -s -X POST "https://api.leadocean.io/v1/exports" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filters": {
"industry": ["Non-profit Organizations", "Non-profit Organization Management"],
"country": ["US"],
"title": ["Director of Development"],
"emailStatus": ["verified"]
},
"limit": 5000
}'Check the record price before you start. In the app, the Exports page shows it ahead of the download.
Step 6: Enrich the winners and keep the list clean
Once a role converts, enrich the people you plan to call or email twice. Enrich takes exactly one of linkedin_url, email, phone or person_id. Use the person_id from your search rows.
curl -s -X POST "https://api.leadocean.io/v1/people/enrich" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"person_id": "PERSON_ID_FROM_SEARCH", "reveal_email": true}'Since October 2026, person enrich also returns career history: past roles, education and certifications, when held. A nonprofit leader who moved up from a program role reads your message differently from one who came from finance. Use it to pick the angle, not to open with their résumé.
Nonprofit staff turn over, and so does the board. Refresh the list before each campaign rather than reusing last year's export. The dataset is refreshed monthly, and each record carries its own fetched_at date. Drop anyone whose date is old.
Keep a suppression list of every address that bounced or opted out, and apply it to each new export. For a deeper cleaning routine, see the guide on email verification for nonprofits.
What you get
Free counts run on 2026-10-21 with the MCP tools leadocean_count_leads and leadocean_count_companies. People figures are mailable (verified, catch_all_valid or catch_all) unless the row says otherwise. Industry is Non-profit Organizations plus Non-profit Organization Management, country US.
| Filter | Result |
|---|---|
| Companies: HQ US, 51 to 500 employees | 10,510 companies |
| People: C-Team | 67,465 mailable (249,047 with any email status), 24,092 employers |
| People: title Executive Director | 23,495 mailable (73,516 with any email status), 14,318 employers |
| People: title Director of Development | 3,503 mailable (11,654 with any email status), 2,341 employers |
| People: Director level only, Finance & Accounting | 5,939 mailable (21,995 with any email status), 3,426 employers |
| People: Director, VP or C-Team, Operations | 7,222 mailable, 3,889 employers |
| People: Director, VP or C-Team, Advertising & Marketing | 7,367 mailable, 4,014 employers |
| People: Director, VP or C-Team, Information Technology | 2,073 mailable, 1,171 employers |
IT is the thinnest role at 2,073 people. Expect many nonprofits to have no IT leader on record, so plan to reach that buyer through operations or finance.
The company breakdown put California first (1,667), then New York (983), Texas (651), Illinois (547) and Florida (471). The top NAICS code was 813410 (civic and social organizations) with 5,675 companies.
Response shape from the API reference, placeholder values only:
{
"success": true,
"data": [
{
"profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "Director of Development at Acme Foundation" },
"contact_data": { "has_email": true, "has_phone": false, "email_status": "verified" }
}
],
"meta": { "nextCursor": "CURSOR" }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key | Check $LEADOCEAN_API_KEY is exported and sent as the x-api-key header. |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Back off and honor Retry-After. |
| 402 | Out of records on the Free plan | The 1,000 records are spent. Move to Solo ($97 a month) or Agency ($497 a month). |
| Empty results | Bad enum value, such as Nonprofit as an industry | Resolve values with /v1/enums/industry or leadocean_list_enum_values. Use Non-profit Organizations. |
meta.depthCapped is true | One search reached 10,000 rows | Add a state, a headcount band or a narrower title. |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split by state or headcount band and run several exports. |
FAQ
Who is the decision maker at a nonprofit?
The executive director usually signs, but the evaluator is a development, finance or operations lead. Count and message each role separately. In larger nonprofits, add a C-level finance or technology officer.
How do I find nonprofits only, not charities that file as something else?
Use the two Non-profit industry values for the core set. Add companyType: ["Nonprofit"] to catch schools, hospitals and others that file as nonprofits. Compare the counts, since the two filters overlap but are not the same.
How many records does this guide spend?
About 100, for the sample in Step 4. Counts, enum lookups and the company count are free. A search that returns nothing costs nothing.
Can I send these contacts to a sequencer?
Yes, through an export. LeadOcean is the data source. It has no sequencer, dialer or CRM, so you load the CSV into the tool you already use.
Where do I go next?
See lead generation for web3, for travel and for telecom. The full set is on the blog hub.
Size your nonprofit market before you write a single email
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →