AllForGood APIallforgood.org ↗
Search and retrieve volunteer opportunities from the Points of Light network. Filter by location, issue area, skills, and commitment type across thousands of listings.
What is the AllForGood API?
The AllForGood.org API provides 4 endpoints for searching and retrieving volunteer opportunities from the Points of Light global network. The search_opportunities endpoint supports full-text search across opportunity titles and descriptions, geographic proximity filtering via lat_lng and radius, and returns paginated results alongside facet counts for dimensions like presence type, issue area, and skills. Individual listing details, organization-level listings, and direct signup links are each available through dedicated endpoints.
curl -X GET 'https://api.parse.bot/scraper/495cbd4b-b6fe-472c-b766-2d09624cf903/search_opportunities?page=0&query=education&hits_per_page=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Full-text search over volunteer opportunities with faceted filtering. Supports geographic proximity via lat_lng + radius, and categorical filters (presence, issue areas, skills, commitment types). Returns one page of opportunity summaries plus facet counts for all filter dimensions; paging is controlled by page (0-based) and hits_per_page. total_hits is the full match count, while total_pages reflects the search index's result window of about 1,000 records per query, so pages beyond that window return an empty opportunities array. A query with no matches is a valid empty result. Each result is a summary; use get_opportunity_detail for the full description and signup URL.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-based). |
| query | string | Search keyword to match against opportunity titles and descriptions. |
| radius | integer | Search radius in meters (used with lat_lng). |
| skills | string | Filter by skills/interests (comma-separated): Administrative, Advocacy, Teaching, Marketing, Business Skills, Media, Web Development, Social Media, Leadership, Nonprofit Management, Research, Data Science, Health Professional, Design, Skilled Labor, Photography, Human Resources, Event Support, Arts, Physical Labor, Technology, Legal, Writing, Caregiving, Finance, Public Speaking, Driving, Mentoring, Fundraising, Spanish Speakers, Food Service, Community Outreach, Accounting, Coaching, Facilitation, Board Service. |
| lat_lng | string | Geographic coordinates as latitude,longitude for location-based search (e.g. 40.0379,-76.3025). |
| presence | string | Filter by presence type (comma-separated): Remote, In-Person. |
| issue_areas | string | Filter by issue areas (comma-separated): Education, Health & Wellness, Community Strengthening, Arts & Culture, Children & Youth, Animals, Seniors, Hunger, Disaster Response & Recovery, Environment, STEM, Veterans & Military Families, Disabilities, Technology, Civil Rights, Family Services, Women's Issues, Literacy, Poverty, Sports & Recreation, Immigrant & Refugee Services, Public Safety, Job Training & Employment, Homelessness, COVID-19, Mentoring, Adult Education. |
| hits_per_page | integer | Number of results per page (e.g. 5, 10, 20). |
| commitment_types | string | Filter by commitment types (comma-separated): Ongoing, Event, AmeriCorps. |
{
"type": "object",
"fields": {
"page": "integer current page number",
"facets": "object with counts per filter category (presence, duration_kind, concentrated_skills, concentrated_features, concentrated_cause_areas)",
"total_hits": "integer total matching opportunities",
"total_pages": "integer pages available within the search index's result window",
"opportunities": "array of opportunity summaries with id, title, organization, location, presence, dates, url"
},
"sample": {
"data": {
"page": 0,
"facets": {
"presence": {
"Remote": 8435,
"In-Person": 21614,
"Indeterminate": 5
},
"duration_kind": {
"Event": 1130,
"Ongoing": 28195,
"AmeriCorps": 643,
"Indeterminate": 86
},
"concentrated_skills": {
"Advocacy": 2992,
"Teaching": 757
},
"concentrated_features": {
"All Ages": 1431,
"Good for Seniors": 672
},
"concentrated_cause_areas": {
"Education": 8137,
"Health & Wellness": 2786
}
},
"total_hits": 30054,
"total_pages": 200,
"opportunities": [
{
"id": "1-da0ef079-0a27-7a48-3461-25d116b2823b",
"url": "https://engage.pointsoflight.org/opportunities/1-da0ef079-0a27-7a48-3461-25d116b2823b",
"dates": "Recruiting now",
"title": "Tutors for ESL and Adult Education GED 26' 27' School year",
"location": "Allentown, PA",
"presence": "In-Person",
"organization": "Center For Career Pathways And Literacy"
},
{
"id": "1-61fc608f-eb7d-93a9-46f3-96dacdb9f527",
"url": "https://engage.pointsoflight.org/opportunities/1-61fc608f-eb7d-93a9-46f3-96dacdb9f527",
"dates": "Recruiting through Nov 7th",
"title": "Education is for Everyone! - Tutor a Student Experiencing Homelessness",
"location": "Los Angeles, CA",
"presence": "Remote",
"organization": "School on Wheels"
}
]
},
"status": "success"
}
}About the AllForGood API
Searching Volunteer Opportunities
The search_opportunities endpoint is the main entry point. It accepts a query string for keyword matching and supports layered filtering using issue_areas (e.g. Education, Health & Wellness, Arts & Culture), skills (e.g. Teaching, Advocacy, Marketing), and presence (Remote or In-Person). Geographic searches use the lat_lng parameter as a latitude,longitude string paired with a radius in meters. Results are paginated via page and hits_per_page. The response includes total_hits, total_pages, an opportunities array with fields like id, title, organization, location, presence, and url, plus a facets object with counts across all filter dimensions.
Opportunity and Organization Detail
get_opportunity_detail retrieves the full record for a single listing by its id from search results. The response adds fields not available in search summaries: description (full text), signup_url (the external application link), coordinates (an object with lat and lng floats), and date_time. The organization object contains both the organization name and its id slug. That slug feeds directly into get_organization_opportunities, which returns all opportunities posted by the same organization — useful for browsing a nonprofit's full listing set.
Signup Links
get_signup_link is a focused endpoint that returns only the signup_url for a given opportunity id. Some opportunities do not have an external signup link, in which case the field returns an empty string. This endpoint is useful when you already hold an opportunity ID and only need to surface the registration link without fetching the full detail record.
The AllForGood API is a managed, monitored endpoint for allforgood.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when allforgood.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official allforgood.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a volunteer matching app that filters opportunities by
lat_lng,radius, andissue_areasto surface local causes - Aggregate remote-only volunteer listings using the
presence=Remotefilter acrosssearch_opportunities - Display a nonprofit's full opportunity catalog using
get_organization_opportunitieswith theorg_idfrom a detail record - Embed a direct 'Sign Up' button in a civic app by fetching
signup_urlviaget_signup_link - Populate faceted search UI using the
facetscounts returned bysearch_opportunitiesfor presence, skills, and cause area - Build a skills-based volunteer finder filtering by specific values like Teaching or Business Skills via the
skillsparameter - Track opportunity coverage across issue areas by paginating
search_opportunitiesand aggregatingconcentrated_cause_arfacet data
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does AllForGood.org have an official developer API?+
What does `search_opportunities` return beyond the listing list?+
opportunities array, the response includes a facets object with counts for each filter dimension — including presence, duration_kind, concentrated_skills, concentrated_features, and concentrated_cause_ar. These counts let you build accurate filter UIs without issuing separate queries per facet. total_hits and total_pages support pagination.Are organization profile pages or nonprofit metadata exposed?+
name and id slug within opportunity records, and get_organization_opportunities lists all opportunities for a given org. Full nonprofit profiles, contact details, and organizational metadata are not covered. You can fork it on Parse and revise to add an organization detail endpoint if that data is available at the source.What happens when an opportunity has no geographic coordinates?+
coordinates field in get_opportunity_detail returns an empty object when location coordinates are unavailable. The location field still returns a text string in those cases. For geographic search, the lat_lng and radius parameters in search_opportunities apply proximity filtering, but individual records may omit precise coordinates.