Let's take a look at the fields and elements you will receive in your JSON response. Here's an example:
{"searchTerms":"Art & Music",
"searchURL":"https://www.donorschoose.org/donors/search.html?subject1=-1&utm_source=api&utm_medium=feed&utm_content=searchlink&utm_campaign=DONORSCHOOSE",
"totalProposals":"1694?,
"index":"0?,
"max":"10?,
"proposals":[
{
"id":"259649?,
"proposalURL":"https://www.donorschoose.org/donors/proposal.html?id=259649&utm_source=api&utm_medium=feed&utm_content=bodylink&utm_campaign=DONORSCHOOSE",
"fundURL":"https://secure.donorschoose.org/donors/givingCart.html?proposalid=259649&donationAmount=45&utm_source=api&utm_medium=feed&utm_content=fundlink&utm_campaign=DONORSCHOOSE",
"imageURL":"",
"title":"Self Critique",
"shortDescription":"My students need a camcorder to evaluate their speeches and debates. Since the self is the most difficult critic, my skilled orators need the opportunity to view themselves in order to see what others see.",
"fulfillmentTrailer":"My students need a camcorder to evaluate their speeches and debates. ",
"percentFunded":"88?,
"costToComplete":"52.94?,
"matchingFund":{"matchingKey":"","name":"","logoURL":"","faqURL":"","amount":"0.0?},
"totalPrice":"453.0?,
"teacherId": "259649",
"teacherName":"Ms. H",
"gradeLevel":{"id":"Grades 9-12?,"name":"4?},
"povertyLevel":"High Poverty",
"schoolName":"West Charlotte High School",
"city":"Charlotte",
"state":"NC",
"zip":"28216?,
"subject":{"id":"1?,"name":"Performing Arts","groupId": "1"},
"resource":{"id":"2?,"name":"Technology"},
"expirationDate":"2009-07-29?
},
...
]}
All fields are returned as XML-escaped strings, except URLs, which are not XML-escaped. Please perform a cast to compare dates, dollar amounts, and percentages.
If you wish to wrap your JSON object in a callback function, include "callback" in your request query string (see API Specific Requests). You should make your callback static, as it will improve caching and in turn performance. (Many AJAX frameworks will make the callback a random string unless otherwise specified so you'll be overriding that default behavior.)
Also be sure to enable any caching options (eg. set the cache param to True in jQuery) or else some frameworks will append a timestamp to each JSON request to prevent caching.
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.)