snow.day APIsnow.day ↗
Access Snow.day's database of high school enrichment programs via API. Search, filter, and retrieve costs, deadlines, and curated lists across 7 endpoints.
curl -X GET 'https://api.parse.bot/scraper/7846f91d-0b33-49f3-aa92-53f8fc6240fb/search_opportunities?page=0&limit=5&query=STEM' \ -H 'X-API-Key: $PARSE_API_KEY'
Search and browse extracurricular opportunities with optional query, filtering, and sorting. Returns paginated results from the Snowday database.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed). |
| limit | integer | Number of results per page. |
| query | string | Search keyword or interest. |
| filter | object | JSON object containing filters. Supported keys: FILTER_SEASON (array of values: SUMMER, FALL, SPRING, YEAR_ROUND), FILTER_TYPE (array of values: PROGRAM, COMPETITION), FILTER_ONLINE_ONLY (boolean), FILTER_GRADE (array of integers representing grade levels), FILTER_FINANCIAL_ACCESSIBILITY (array of ratings: A_PLUS, A, A_MINUS, B_PLUS, B, B_MINUS, C_PLUS, C, C_MINUS), FILTER_EXPERTS_CHOICE (array of values: MOST_RECOMMENDED, HIGHLY_RECOMMENDED). All array filter values must be provided as arrays even for single values. |
| sort_field | string | Field to sort by: relevancy, expertsChoiceRating, isHighlySelective, deadline, financialAccessibilityGrade. |
| sort_order | string | Sort order: ASC or DESC. |
{
"type": "object",
"fields": {
"pageSize": "integer, number of results on this page",
"pageNumber": "integer, current page number",
"totalCount": "integer, total matching opportunities",
"learningOpportunities": "array of opportunity summary objects with id, name, type, seasons, financialAccessibilityGrade, provider, sessions, deadlines"
},
"sample": {
"data": {
"pageSize": 5,
"pageNumber": 0,
"totalCount": 148,
"learningOpportunities": [
{
"id": "627d74dc-b13e-49cd-854a-903e5eb0f851",
"name": "PoweringSTEM Hacks",
"type": "COMPETITION",
"seasons": [
"FALL"
],
"provider": {
"id": "e65adede-7317-40d7-ac65-91bd84486cac",
"name": "PoweringSTEM"
},
"interests": [
{
"id": "d520a621-9b1a-4110-ad15-7708123ea69a",
"name": "Coding"
}
],
"isHighlySelective": false,
"expertsChoiceRating": null,
"financialAccessibilityGrade": "A"
}
]
},
"status": "success"
}
}About the snow.day API
The Snow.day API gives programmatic access to a database of extracurricular and enrichment opportunities for high school students across 7 endpoints. Using search_opportunities, you can query by keyword, filter by season, and sort by financial accessibility grade or deadline. Each record surfaces fields including program name, type, cost info, provider, sessions, and deadlines — enough to build directory tools, recommendation engines, or student-facing apps.
Search and Browse Opportunities
The search_opportunities endpoint accepts a query string alongside a filter object that supports season values (SUMMER, FALL, SPRING, YEAR_ROUND) and other facets. Results can be sorted by relevancy, expertsChoiceRating, isHighlySelective, deadline, or financialAccessibilityGrade, with sort_order set to ASC or DESC. Pagination is 0-indexed via page and limit parameters. Each result in learningOpportunities includes the opportunity's id, name, type (PROGRAM or COMPETITION), seasons, financialAccessibilityGrade, provider, and arrays of sessions and deadlines. If you want to browse without a query, browse_all_opportunities provides the same paginated structure with no required parameters.
Detail and Cost Endpoints
get_opportunity_detail requires both a uuid (from search results) and a slug (the kebab-case program name). It returns the full record including a description string, the external url, costInfo, and structured sessions with dates and location data. For workflows that only need financial information, get_opportunity_cost returns a focused subset: tuition, costInfo, applicationFee, financialAccessibilityGrade, and a costInfoStatus field that indicates whether cost data is UP_TO_DATE or NOT_PROVIDED.
Curated Lists
get_lists returns paginated metadata for publicly curated program collections, including each list's id, name, and authorDisplayName. Passing a list's uuid and slug to get_list_detail returns the full list contents: an items array of opportunity objects with curator notes, a markdown description, and the author name. Lists are a useful starting point for surfacing editorially vetted program collections without constructing custom filters.
Discovery with Top Searches
get_top_searches requires no inputs and returns a categories array. Each category has a name and either a filter object or a query string, mirroring exactly the parameters accepted by search_opportunities. This makes it straightforward to replicate the homepage discovery experience or seed an autocomplete UI with commonly used search terms.
- Build a program recommendation tool filtered by season and financial accessibility grade
- Aggregate deadline data from multiple opportunities to power a student calendar feature
- Display curated program lists with curator notes sourced from get_list_detail
- Surface financial aid accessibility ratings to help students identify affordable programs
- Generate a searchable directory of high school competitions filtered by COMPETITION type
- Use get_top_searches categories to populate a homepage discovery widget
- Compare tuition and application fees across programs using get_opportunity_cost in bulk
| 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.