Hcdsb APIelem.hcdsb.org ↗
Stay informed about St. Michael Catholic Elementary School updates by searching for news posts and announcements by keyword, then viewing full details including content, links, media, and publication dates. Get quick access to weekly updates and school news all in one place.
curl -X GET 'https://api.parse.bot/scraper/c9977ce0-6f04-473c-b46a-a40c04b3e512/search_news?page=1&query=kindergarten&per_page=10' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace elem-hcdsb-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: St. Michael School News SDK — bounded, re-runnable; every call capped."""
from parse_apis.elem_hcdsb_org_api import StMichael, PostNotFound
client = StMichael()
# Search for kindergarten updates, capped at 3 results
for post in client.post_summaries.search(query="kindergarten", limit=3):
print(post.title, post.date, post.link)
# Drill down into the first result for full content
summary = client.post_summaries.search(query="kindergarten", limit=1).first()
if summary:
try:
full = summary.details()
print(full.title, full.date, full.modified)
print(full.content[:200])
for link in full.links[:3]:
print(link.text, link.url)
for img in full.media[:2]:
print(img.type, img.url)
except PostNotFound as e:
print(f"Post gone: {e.post_id}")
print("exercised: post_summaries.search, PostSummary.details")
Full-text search over school news posts. Results are ordered by relevance and include title, date, excerpt, embedded links, and media references. Use get_post with a returned id for the complete content.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. |
| query | string | Search keyword to filter posts by content relevance. |
| per_page | integer | Number of posts per page (1-100). |
{
"type": "object",
"fields": {
"page": "current page number",
"posts": "array of post summaries with id, title, date, link, excerpt, links, and media",
"total": "total number of matching posts across all pages",
"total_pages": "total number of pages available"
},
"sample": {
"data": {
"page": 1,
"posts": [
{
"id": 15481,
"date": "2026-06-21T08:22:52",
"link": "https://elem.hcdsb.org/stmichael/2026/06/weekly-update-week-of-june-22-26/",
"links": [
{
"url": "https://example.com",
"text": "HERE"
}
],
"media": [
{
"alt": "",
"url": "https://elem.hcdsb.org/stmichael/wp-content/uploads/sites/28/2026/06/Screenshot.png",
"type": "image"
}
],
"title": "WEEKLY UPDATE: Week of June 22-26",
"excerpt": "As we near the end of this school year, we give thanks..."
}
],
"total": 142,
"total_pages": 48
},
"status": "success"
}
}About the Hcdsb API
The Hcdsb API on Parse exposes 2 endpoints for the publicly available data on elem.hcdsb.org. Calls return JSON over HTTPS and are billed per successful response.
Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.