Skip to main content

Charity Navigator API

Powered by Charity Navigator

Enrich nonprofit profiles with independent ratings, mission statements, and organizational metrics from Charity Navigator's comprehensive database.

:::info At a glance

ProviderCharity Navigator, Inc.
CoverageU.S. registered nonprofits — all 1.9M with basics; ~200K rated
Update cadenceAnnual rating refresh
LicenseCharity Navigator API Terms — attribution & link-back required (see "Legal & Compliance" below and the Legal index)
CostFree, capped at 1,000 API calls/day
Access methodGraphQL — https://api.charitynavigator.org/graphql (Bearer token)
Our pipelineOn-demand enrichment keyed by EIN; cached locally before merge into gold nonprofit tables
:::

Overview

Charity Navigator is America's largest and most-utilized independent nonprofit evaluator. Their API provides access to:

  • Star Ratings: Independent 0-4 star ratings (Encompass Rating System)
  • Mission Statements: Organization purpose and activities
  • Website URLs: Official organization websites
  • Organizational Metrics: Financial health, accountability, transparency
  • Active Advisories: Important alerts about organization status

Data Available

Data Fields

The Charity Navigator GraphQL API provides the following fields for all registered nonprofits:

FieldDescriptionCoverage
EINEmployer Identification Number100%
Charity NameOfficial organization name100%
MissionOrganization mission statementRated orgs only*
Website URLOfficial website address~80%
Charity Navigator URLLink to CN profile pageRated orgs only*
CategoryNonprofit categoryRated orgs only*
CausePrimary cause areaRated orgs only*
AddressStreet, City, State, Zip, Country100%
Active AdvisoriesStatus alertsAll orgs
Encompass Star Rating0-4 star ratingRated orgs only*
Encompass ScoreNumerical rating scoreRated orgs only*
Rating Publication DateWhen rating was publishedRated orgs only*

*Fields marked with asterisk are only available for organizations that have been rated by Charity Navigator.

Usage Limits & Compliance

Rate Limits

  • Maximum: 1,000 API calls per day
  • No bulk downloads: Use incremental enrichment
  • Caching allowed: For performance only (not redistribution)

Attribution Requirements

MANDATORY on all pages displaying Charity Navigator data:

  1. Text Credit: "Powered by Charity Navigator"

  2. Source Citation: "Data provided by Charity Navigator"

  3. Linkback: All charity names link to their Charity Navigator profile:

    <a href="https://www.charitynavigator.org/ein/[EIN]">
    [Organization Name]
    </a>
  4. Trademark Notice (once per page or in credits):

    CHARITY NAVIGATOR and the CHARITY NAVIGATOR logo are registered trademarks
    of Charity Navigator. All rights reserved. Used with permission.
  • Use descriptive anchor text (not "click here")
  • Do NOT use rel="nofollow" on Charity Navigator links
  • Allow search engines to crawl all links to charitynavigator.org

✅ Correct:

<a href="https://www.charitynavigator.org/ein/134141945">
Michael J. Fox Foundation for Parkinson's Research
</a>

❌ Incorrect:

<a href="https://www.CharityNavigator.org/ein/134141945" rel="nofollow">
Click here
</a>

Star Rating Display

When displaying Charity Navigator star ratings, use official images:

Star Images (PNG format, 239×54px)

RatingImage URL
4-Starhttps://www.charitynavigator.org/content/dam/cn/cn/icons/four_star.png
3-Starhttps://www.charitynavigator.org/content/dam/cn/cn/icons/three_star.png
2-Starhttps://www.charitynavigator.org/content/dam/cn/cn/icons/two_star.png
1-Starhttps://www.charitynavigator.org/content/dam/cn/cn/icons/one_star.png
0-Starhttps://www.charitynavigator.org/content/dam/cn/cn/icons/zero_star.png

SVG Format (Vectors)

Replace .png with .svg in the URLs above for scalable vector graphics.

Display Guidelines

  • Star images MUST link to the charity's Charity Navigator profile page
  • Do NOT stretch or skew images (maintain aspect ratio)
  • Prefer full-color versions; ensure knockout (white) versions pass accessibility tests

Example HTML:

<a href="https://www.charitynavigator.org/ein/134141945">
<img src="https://www.charitynavigator.org/content/dam/cn/cn/icons/four_star.png"
alt="Four-star rating by Charity Navigator" />
</a>

Integration Example

Python with Requests

import requests

# GraphQL API endpoint
url = "https://api.charitynavigator.org/graphql"

# Example query
query = """
query {
charity(ein: "134141945") {
ein
charityName
mission
websiteUrl
charityNavigatorUrl
category
cause
mailingAddress {
streetAddress1
city
state
postalCode
}
currentRating {
rating
ratingDate
}
}
}
"""

headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}

response = requests.post(url, json={"query": query}, headers=headers)
data = response.json()

print(f"Charity: {data['data']['charity']['charityName']}")
print(f"Rating: {data['data']['charity']['currentRating']['rating']} stars")
print(f"Mission: {data['data']['charity']['mission']}")

Enrichment Workflow

  1. Extract EINs from your nonprofit dataset
  2. Batch requests (max 1,000/day)
  3. Cache responses locally to avoid re-fetching
  4. Merge data into your gold tables
  5. Track update date to know when to refresh

Data Comparison

Charity Navigator vs Other Sources

Data FieldCharity NavigatorIRS EO-BMFForm 990 XMLBigQuery
Star Rating✅ (0-4 stars)
Mission✅ (Rated orgs)✅ (30-40%)✅ (30-40%)
Website✅ (~80%)✅ (30-40%)
Financials✅ (Summary)✅ (Detailed)✅ (Detailed)
Coverage~200K rated1.9M orgs~300K/year5M+ records
Update FreqAnnualMonthlyAnnualAnnual
Independent RatingUNIQUE

Key Advantages:

  • Only source with independent star ratings
  • ✅ High-quality mission statements (manually reviewed)
  • ✅ Better website URL coverage than Form 990
  • ✅ Active advisories (warnings, alerts)
  • ✅ Nonprofit evaluation methodology is transparent

Limitations:

  • Only ~200K organizations have ratings (largest orgs prioritized)
  • Smaller nonprofits may not have Charity Navigator profiles
  • 1,000 API calls/day limit (use caching strategically)

Best Practices

Rate Limit Management

import time
from datetime import datetime, timedelta

class CharityNavigatorClient:
def __init__(self, api_key, daily_limit=1000):
self.api_key = api_key
self.daily_limit = daily_limit
self.call_count = 0
self.reset_time = datetime.now() + timedelta(days=1)

def query(self, ein):
# Check if we've hit the daily limit
if self.call_count >= self.daily_limit:
wait_seconds = (self.reset_time - datetime.now()).total_seconds()
if wait_seconds > 0:
print(f"Rate limit reached. Waiting {wait_seconds:.0f}s...")
time.sleep(wait_seconds)
self.call_count = 0
self.reset_time = datetime.now() + timedelta(days=1)

# Make API call
response = self._make_request(ein)
self.call_count += 1

return response

Caching Strategy

Cache responses to avoid redundant API calls:

import json
from pathlib import Path

cache_dir = Path("data/cache/charity_navigator/")
cache_dir.mkdir(parents=True, exist_ok=True)

def get_charity_data(ein, api_client):
cache_file = cache_dir / f"{ein}.json"

# Check cache first
if cache_file.exists():
with open(cache_file) as f:
return json.load(f)

# Fetch from API
data = api_client.query(ein)

# Save to cache
with open(cache_file, 'w') as f:
json.dump(data, f, indent=2)

return data

Incremental Updates

Only fetch new/updated ratings:

import pandas as pd
from datetime import datetime, timedelta

def needs_update(last_updated, max_age_days=90):
"""Check if rating needs refresh (default: every 90 days)"""
if pd.isna(last_updated):
return True

age = datetime.now() - pd.to_datetime(last_updated)
return age > timedelta(days=max_age_days)

# Filter nonprofits needing updates
nonprofits = pd.read_parquet("data/gold/nonprofits.parquet")
needs_refresh = nonprofits[
nonprofits['cn_updated_date'].apply(needs_update)
]

print(f"Need to refresh: {len(needs_refresh):,} organizations")

Schema

Fields to Add to Gold Tables

When enriching your nonprofit dataset, add these fields:

enriched_fields = {
'cn_star_rating': 'int64', # 0-4 stars
'cn_encompass_score': 'float64', # Numerical score
'cn_rating_date': 'datetime64', # When rated
'cn_mission': 'string', # Mission statement
'cn_website': 'string', # Website URL
'cn_category': 'string', # Category
'cn_cause': 'string', # Cause area
'cn_profile_url': 'string', # Link to CN profile
'cn_advisory_status': 'string', # Active advisories
'cn_updated_date': 'datetime64', # When we fetched data
}

Cost

FREE with the following limits:

  • 1,000 API calls per day
  • Beta offering (no fees)
  • Nonprofit use case

For commercial use or higher volume, contact Charity Navigator: api@charitynavigator.org

API Terms of Use

By using the Charity Navigator API, you agree to:

  1. Rate Limits: Max 1,000 calls/day
  2. Attribution: Display "Powered by Charity Navigator" on all pages
  3. Linkbacks: Link all charity names to their CN profiles
  4. Trademark: Include trademark notice
  5. No Redistribution: Cannot resell or redistribute CN data
  6. No Derivative Ratings: Cannot create competing rating systems
  7. Caching: Only for performance, not redistribution
  8. Termination: CN can terminate access for violations

Intellectual Property

  • All Charity Navigator data and ratings are proprietary
  • API and database owned by Charity Navigator, Inc.
  • Users have no ownership rights to cached data
  • Feedback/suggestions become CN property

Full Terms

Complete API Terms of Use: https://www.charitynavigator.org/partner/api-terms

Troubleshooting

"No rating available"

Not all nonprofits have Charity Navigator ratings. The service prioritizes:

  • Larger organizations (>$1M revenue)
  • National/regional nonprofits
  • Organizations with public interest

Solution: Check for null ratings and gracefully handle unrated orgs.

"Rate limit exceeded"

Error: Maximum daily API calls (1,000) reached

Solution:

  • Implement caching (see above)
  • Process in batches over multiple days
  • Prioritize most important organizations first

"Invalid EIN"

Error: Organization not found

Possible causes:

  • EIN typo or formatting error
  • Organization not in CN database
  • Inactive/dissolved organization

Solution: Validate EINs before querying, handle 404s gracefully.

Support


Trademark Notice: CHARITY NAVIGATOR and the CHARITY NAVIGATOR logo are registered trademarks of Charity Navigator. All rights reserved. Used with permission.