Demo functions for working with ProPublica’s Nonprofit Explorer.
Use this database to view summaries of 3 million tax returns from tax-exempt organizations and see financial details such as their executive compensation and revenue and expenses. You can browse IRS data released since 2013 and access more than 14 million tax filing documents going back as far as 2001.
From their site:
Nonprofit Explorer includes summary data for nonprofit tax returns and full Form 990 documents, in both PDF and digital formats.
The summary data contains information processed by the IRS during the 2012-2018 calendar years; this generally consists of filings for the 2011-2017 fiscal years, but may include older records. This data release includes only a subset of what can be found in the full Form 990s.
In addition to the raw summary data, we link to PDFs and digital copies of full Form 990 documents wherever possible. This consists of separate releases by the IRS of Form 990 documents processed by the agency, which we update regularly.
We also link to copies of audits nonprofit organizations that spent $750,000 or more in Federal grant money in a single fiscal year since 2016. These audits are copied from the Federal Audit Clearinghouse.
Which Organizations Are Here?
Every organization that has been recognized as tax exempt by the IRS has to file Form 990 every year, unless they make less than $200,000 in revenue and have less than $500,000 in assets, in which case they have to file form 990-EZ. Organizations making less than $50,000 don’t have to file either form but do have to let the IRS they’re still in business via a Form 990N “e-Postcard.”
Nonprofit Explorer has organizations claiming tax exemption in each of the 27 subsections of the 501(c) section of the tax code, and which have filed a Form 990, Form 990EZ or Form 990PF. Taxable trusts and private foundations that are required to file a form 990PF are also included. Small organizations filing a Form 990N “e-Postcard” are not included in this data.
Types of Nonprofits
There are 27 nonprofit designations based on the numbered subsections of section 501(c) of the tax code.
How to Research Tax-Exempt Organizations
We’ve created a guide for investigating nonprofits for those just getting started as well as for seasoned pros.
API
The data powering this website is available programmatically, via an API. Read the API documentation »
Get the Data
For those interested in acquiring the original data from the source, here’s where our data comes from:
There is basic meta-data available for each organization (name, EIN, tax year, total revenue, etc.).
Information for each 990 depends on the type of filing - paper versions or e-files.
The API has some capability to access digitized information, as well as download PDFs of paper filers.
The generic API call will return a list with five tables:
Grab a table of meta-data available on all returns for one org:
library( RCurl )
library( jsonlite )
library( dplyr )
library( pander )
# API CALL
# https://projects.propublica.org/nonprofits/api/v2/organizations/010165097.json
ein <- "010165097"
URL <- paste0( "https://projects.propublica.org/nonprofits/api/v2/organizations/", ein, ".json" )
results.json <- getURL( URL, ssl.verifypeer = FALSE )
r2 <- gsub( "\n", "", results.json )
api.tables <- fromJSON( r2 )
names( api.tables )
## [1] "organization" "filings_with_data" "filings_without_data"
## [4] "data_source" "api_version"
tax_prd | tax_prd_yr | formtype |
---|---|---|
201712 | 2017 | 1 |
201512 | 2015 | 1 |
201412 | 2014 | 1 |
201312 | 2013 | 0 |
201212 | 2012 | 1 |
201112 | 2011 | 1 |
pdf_url |
---|
NA |
NA |
NA |
https://projects.propublica.org/nonprofits/download-filing?path=2014_09_EO%2F01-0165097_990O_201312.pdf |
NA |
NA |
updated | totrevenue | totfuncexpns | totassetsend |
---|---|---|---|
2019-10-15T18:40:39.744Z | 174354 | 164641 | 98154 |
2017-06-30T00:40:46.710Z | 169693 | 160351 | 90996 |
2017-06-30T00:24:53.693Z | 172126 | 188041 | 58127 |
2017-06-30T00:05:00.581Z | 194073 | 187045 | 74014 |
2017-06-29T23:56:02.188Z | 171454 | 164369 | 65394 |
2017-06-29T23:41:38.920Z | 180031 | 171155 | 60251 |
totliabend | pct_compnsatncurrofcr | subseccd | totcntrbs | prgmservrev |
---|---|---|---|---|
29381 | -0.001 | 6 | 91145 | 6075 |
45962 | -0.001 | 6 | 81195 | 10095 |
30732 | -0.001 | 6 | 53740 | 37375 |
30704 | 0 | 6 | NA | NA |
18167 | -0.001 | 6 | 78910 | 0 |
20109 | -0.001 | 6 | 89291 | 0 |
duesassesmnts | othrinvstinc | grsamtsalesastothr | basisalesexpnsothr |
---|---|---|---|
75595 | 84 | 0 | 0 |
79061 | 45 | 0 | 0 |
73416 | 33 | 0 | 0 |
NA | NA | NA | NA |
59910 | 62 | 0 | 0 |
56042 | 116 | 0 | 0 |
gnsaleofastothr | grsincgaming | grsrevnuefndrsng | direxpns | netincfndrsng |
---|---|---|---|---|
0 | 0 | 8610 | 7524 | 1086 |
0 | 0 | 6007 | 7030 | -1023 |
0 | 0 | 14930 | 7668 | 7262 |
NA | 0 | NA | NA | 6543 |
0 | 0 | 28708 | 9627 | 19081 |
0 | 0 | 25455 | 8722 | 16733 |
grsalesminusret | costgoodsold | grsprft | othrevnue | totrevnue | totexpns |
---|---|---|---|---|---|
0 | 0 | 0 | 369 | 174354 | 164641 |
0 | 0 | 0 | 320 | 169693 | 160351 |
0 | 0 | 0 | 300 | 172126 | 188041 |
NA | NA | NA | NA | NA | NA |
0 | 0 | 0 | 13491 | 171454 | 164369 |
0 | 0 | 0 | 17849 | 180031 | 171155 |
totexcessyr | othrchgsnetassetfnd | totnetassetsend | unrelbusincd |
---|---|---|---|
9713 | 0 | 68773 | 0 |
9342 | 8296 | 45034 | 0 |
-15915 | 0 | 27395 | 0 |
NA | NA | NA | NA |
7085 | 0 | 47227 | 0 |
8876 | 0 | 40142 | 0 |
initiationfee | grspublicrcpts | nonpfrea | gftgrntrcvd170 | txrevnuelevied170 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | NA | 0 |
0 | 0 | 0 | 0 | 0 |
NA | NA | 0 | NA | 0 |
0 | 0 | 0 | NA | 0 |
0 | 0 | 0 | 0 | 0 |
srvcsval170 | grsinc170 | grsrcptsrelatd170 | totgftgrntrcvd509 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | NA | 0 |
0 | 0 | 0 | 0 |
0 | 0 | NA | 0 |
0 | 0 | NA | 0 |
0 | 0 | 0 | 0 |
grsrcptsadmiss509 | txrevnuelevied509 | srvcsval509 | subtotsuppinc509 |
---|---|---|---|
0 | 0 | 0 | 0 |
NA | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
NA | 0 | 0 | 0 |
NA | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
totsupp509 | ein | tax_pd | unrelbusinccd | initiationfees |
---|---|---|---|---|
0 | 10165097 | NA | NA | NA |
0 | 10165097 | NA | NA | NA |
0 | 10165097 | NA | NA | NA |
0 | 10165097 | NA | Y | 0 |
0 | 10165097 | NA | NA | NA |
0 | 10165097 | NA | NA | NA |
grsrcptspublicuse | grsincmembers | grsincother | totcntrbgfts | totprgmrevnue |
---|---|---|---|---|
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
0 | 0 | 0 | 72449 | 114743 |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
invstmntinc | txexmptbndsproceeds | royaltsinc | grsrntsreal | grsrntsprsnl |
---|---|---|---|---|
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
61 | 0 | 0 | 0 | 0 |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
rntlexpnsreal | rntlexpnsprsnl | rntlincreal | rntlincprsnl | netrntlinc |
---|---|---|---|---|
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
0 | 0 | 0 | 0 | 0 |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
grsalesecur | grsalesothr | cstbasisecur | cstbasisothr | gnlsecur | gnlsothr |
---|---|---|---|---|---|
NA | NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA | NA |
0 | 0 | 0 | 0 | 0 | 0 |
NA | NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA | NA |
netgnls | grsincfndrsng | lessdirfndrsng | lessdirgaming | netincgaming |
---|---|---|---|---|
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
0 | 13761 | 7218 | 0 | 0 |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
grsalesinvent | lesscstofgoods | netincsales | miscrevtot11e |
---|---|---|---|
NA | NA | NA | NA |
NA | NA | NA | NA |
NA | NA | NA | NA |
0 | 0 | 0 | 277 |
NA | NA | NA | NA |
NA | NA | NA | NA |
compnsatncurrofcr | othrsalwages | payrolltx | profndraising | txexmptbndsend |
---|---|---|---|---|
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
0 | 0 | 0 | 0 | 0 |
NA | NA | NA | NA | NA |
NA | NA | NA | NA | NA |
secrdmrtgsend | unsecurednotesend | retainedearnend | totnetassetend |
---|---|---|---|
NA | NA | NA | NA |
NA | NA | NA | NA |
NA | NA | NA | NA |
0 | 0 | 0 | 43310 |
NA | NA | NA | NA |
NA | NA | NA | NA |
gftgrntsrcvd170 | grsrcptsrelated170 | grsrcptsadmissn509 |
---|---|---|
NA | NA | NA |
NA | NA | NA |
NA | NA | NA |
0 | 0 | 0 |
NA | NA | NA |
NA | NA | NA |
tax_prd | tax_prd_yr | formtype | formtype_str |
---|---|---|---|
201812 | 2018 | 0 | |
201012 | 2010 | 0 | |
200912 | 2009 | 0 | |
200812 | 2008 | 0 | |
200712 | 2007 | 0 | |
200612 | 2006 | 0 |
ProPublica Nonprofit Explorer API: https://projects.propublica.org/nonprofits/api/IRS Exempt Organizations Business Master File Extract (EO BMF): https://www.irs.gov/charities-non-profits/exempt-organizations-business-master-file-extract-eo-bmfIRS Annual Extract of Tax-Exempt Organization Financial Data: https://www.irs.gov/uac/soi-tax-stats-annual-extract-of-tax-exempt-organization-financial-data
## [1] 2
Available PDFs will be listed in the filings_without_data table.
Preview PDFs: [ ON GITHUB ] [ Download ]
For the organizations with paper filings available you can download PDFs using the following loop:
# BATCH DOWNLOAD PDFs
dir.create( "IRS990_PDFs" )
setwd( "./IRS990_PDFs" )
pdfs <- fromJSON( r2 )$filings_without_data
if( nrow(pdfs) > 0 )
{
for( i in 1:nrow(pdfs) )
{
file.name <- paste0( "EIN_", ein , "_YEAR_", pdfs$tax_prd_yr[i], ".pdf" )
download.file( url=pdfs$pdf_url[i],
destfile=file.name,
mode="wb" )
}
}
dir()
## [1] "EIN_010165097_YEAR_2004.pdf" "EIN_010165097_YEAR_2005.pdf"
## [3] "EIN_010165097_YEAR_2006.pdf" "EIN_010165097_YEAR_2007.pdf"
## [5] "EIN_010165097_YEAR_2008.pdf" "EIN_010165097_YEAR_2009.pdf"
## [7] "EIN_010165097_YEAR_2010.pdf" "EIN_010165097_YEAR_2018.pdf"
download_pdfs <- function( ein )
{
URL <- paste0( "https://projects.propublica.org/nonprofits/api/v2/organizations/", ein, ".json" )
results.json <- getURL( URL, ssl.verifypeer = FALSE )
r2 <- gsub( "\n", "", results.json )
d <- fromJSON( r2 )
pdfs <- d$filings_without_data
if( nrow(pdfs) > 0 )
{
for( i in 1:nrow(pdfs) )
{
file.name <- paste0( "EIN_", ein , "_YEAR_", pdfs$tax_prd_yr[i], ".pdf" )
download.file( url=pdfs$pdf_url[i],
destfile=file.name,
mode="wb" )
}
}
return( dir() )
}
The full documentation of all API functionality can be found at Nonprofit Explorer API.