Integrate our data with your app
Our API serves up project titles, descriptions, classroom photos, geo-tags, full teacher-written essays, and more. It can also be used to issue gift cards to your customers so they can support a classroom projects of their choosing, or to make donations. The API has been used by Chevron, SONIC Drive-In, NBC Universal, Bing, PayPal, Starbucks and others to build customized cause marketing and community engagement experiences.
Getting Started
Right now, API integrations are only available to DonorsChoose partners with commitments of over $100K.
The API isn't the only way to access DonorsChoose data for research purposes. We also make anonymized data available to help generate insights and to make public education smarter.
If you're interested in discussing a partnership or a research project, you can reach out to our team here.
If you have any questions, see our FAQ.
What is JSON?
JSON (JavaScript Object Notation) is a simple, lightweight data format that represents arrays and key/value pairs, and is often used in place of XML.
While JSON was originally formulated to take advantage of Javascript's eval function, libraries are now available for PHP, Java, Actionscript, C#, Ruby, Python, Objective C, and many others.
Learn more about JSON and access popular packages/parsers at http://www.json.org/.
How can I make an HTTP request?
Our API is simple: you make an HTTP request-assembled very similarly to a regular DonorsChoose front-end project search-and receive classroom project listings in a JSON response.
The easiest way to build your first request is to start by searching for projects on our site. For example, if you'd like to see a list of Arts & Music projects, the search results page address looks like this:
To view the same list in JSON format, simply change the URL like so:
Notice that in addition to changing the sub-domain from www. to api. and the URI from /donors/search.html to /common/json_feed.html, you will need to include an API Key on the query string.
Heads up that the first 70 lines of the response are blank so if you're viewing the response in your browser, you'll likely have to scroll a bit to get to the good stuff. (We know this is a bit annoying and hope to fix it soon.)