idealist.org APIidealist.org ↗
Search and retrieve nonprofit jobs, internships, volunteer opportunities, and organizations from Idealist.org. 9 endpoints with filters for location, job type, and cause area.
curl -X GET 'https://api.parse.bot/scraper/a6b511c9-8fb7-4db9-98f1-0e4aca5926e4/search_volunteer_opportunities?q=tutoring' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for volunteer opportunities with various filters. Returns paginated results from the Idealist volunteer opportunity index.
| Param | Type | Description |
|---|---|---|
| q | string | Search query keyword |
| page | integer | Page number (0-indexed) |
| radius | integer | Search radius in meters from location |
| location | string | Latitude,longitude for geo search (e.g. '40.7128,-74.0060') |
| cause_areas | string | Comma-separated cause areas to filter by (e.g. 'EDUCATION,HEALTH_MEDICINE') |
| location_type | string | Location type filter: ONSITE, REMOTE, HYBRID |
{
"type": "object",
"fields": {
"hits": "array of volunteer opportunity objects with name, orgName, city, locationType, objectID, etc.",
"page": "integer, current page number",
"nbHits": "integer, total number of matching results",
"nbPages": "integer, total number of pages available"
},
"sample": {
"data": {
"hits": [
{
"city": "Pittsburgh",
"name": "Tutoring Volunteers Needed",
"type": "VOLOP",
"orgName": "Homeless Children's Education Fund",
"objectID": "6528bee9e53b469cadb776a49a28b24c",
"locationType": "ONSITE"
}
],
"page": 0,
"nbHits": 3206,
"nbPages": 50,
"hitsPerPage": 20
},
"status": "success"
}
}About the idealist.org API
The Idealist.org API covers 9 endpoints for searching and retrieving nonprofit jobs, volunteer opportunities, internships, and organizations from Idealist.org. search_jobs returns paginated job listings with fields like salaryMinimum, salaryMaximum, jobType, and locationType, while get_organization_listings pulls all active listings — jobs, internships, events, and volunteer opportunities — for a single organization in one call.
Search Endpoints
Four search endpoints — search_jobs, search_volunteer_opportunities, search_internships, and search_organizations — share a consistent pagination model. Each returns hits, page, nbHits, and nbPages. All support a keyword query via q and geographic filtering via location (a latitude,longitude string) combined with a radius in meters. search_jobs adds a job_type filter accepting FULL_TIME, PART_TIME, TEMPORARY, or CONTRACT. search_volunteer_opportunities accepts a cause_areas parameter for filtering by comma-separated values like EDUCATION or HEALTH_MEDICINE. search_organizations accepts an org_type filter covering NONPROFIT, SOCIAL_ENTERPRISE, and B_CORP.
Detail Endpoints
get_job_detail, get_volunteer_opportunity_detail, get_internship_detail, and get_organization_detail each accept an id (the objectID from the corresponding search results) and return a full data object. Job details include listingName, type, org, description, salary fields, and application info. Internship details include payment and benefits fields alongside standard description and application data. Note that get_job_detail may return listings that are no longer published if the ID was previously valid — callers should check listing status in the response before surfacing results.
Organization Listings
get_organization_listings is the only endpoint that aggregates across listing types. Pass an org_id and receive separate arrays for jobs, internships, volunteer_opportunities, and events, alongside organization_id and organization_name. This is useful for building an organization profile page without making four separate search queries filtered by org. get_organization_detail separately returns areasOfFocus, mission, address, and listing counts under jobs, volops, and interns.
Pagination and Identifiers
All search endpoints use 0-indexed pagination via the page parameter. Object IDs returned in objectID from any search result are the same IDs accepted by the corresponding detail endpoint. IDs are not interchangeable across types — a volunteer opportunity objectID cannot be passed to get_job_detail.
- Aggregate nonprofit job boards filtered by location and job type using
search_jobswithlocation,radius, andjob_typeparameters - Build cause-specific volunteer opportunity finders using
cause_areasfilters likeEDUCATIONorHEALTH_MEDICINE - Pull all active listings for a given nonprofit in one call with
get_organization_listingsto populate organization profile pages - Surface remote internship listings for social impact platforms using
search_internshipswithlocation_type=REMOTE - Enrich nonprofit directory data by combining
search_organizationsresults withget_organization_detailfor mission statements and areas of focus - Build salary transparency tools for the nonprofit sector using
salaryMinimumandsalaryMaximumfields fromsearch_jobsresults - Filter volunteer opportunities by proximity for local community apps using
locationandradiusgeo parameters
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Idealist.org have an official public developer API?+
What does `get_organization_listings` return compared to `get_organization_detail`?+
get_organization_listings returns arrays of active listings — jobs, internships, volunteer_opportunities, and events — associated with a given org_id. get_organization_detail returns the organization's profile fields: name, description, mission, address, areasOfFocus, and aggregate listing counts (jobs, volops, interns). The two endpoints complement each other; neither is a superset of the other.Can `get_job_detail` return listings that are no longer active?+
Does the API cover Idealist event listings as standalone searchable entities?+
events array returned by get_organization_listings — there is no dedicated search_events endpoint or get_event_detail endpoint. You can fork this API on Parse and revise it to add those endpoints.Can search results be filtered by cause area for jobs and internships, not just volunteer opportunities?+
search_volunteer_opportunities exposes a cause_areas filter. search_jobs and search_internships support keyword, location, and type filters but not cause area filtering. You can fork this API on Parse and revise it to add cause area parameters to the job and internship search endpoints if that filtering is available from the source.