ICAI APIboslive.icai.org ↗
Access ICAI Board of Studies announcements, LVC/LVRC schedules, and study material PDFs via 9 structured endpoints. CA Foundation, Intermediate, and Final data.
What is the ICAI API?
This API provides structured access to the ICAI Board of Studies Knowledge Portal through 9 endpoints covering announcements, examination updates, class schedules, and study materials. Use get_bos_announcements to retrieve the full list of BOS announcements with titles, dates, and IDs, or call get_lvc_schedule with a course code to pull upcoming Live Virtual Class sessions including faculty names, topics, and session times.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/a203862a-1b8c-437e-a538-efcb4c4fb249/get_bos_announcements' \ -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 boslive-icai-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: ICAI BoS Knowledge Portal SDK — bounded, re-runnable."""
from parse_apis.icai_bos_knowledge_portal_api import (
ICAIPortal, Course, Language, AnnouncementNotFound,
)
client = ICAIPortal()
# List the latest Board of Studies announcements (capped at 5).
for ann in client.announcements.list_bos(limit=5):
print(ann.title, ann.date)
# Drill into the most recent announcement for its PDF.
ann = client.announcements.list_bos(limit=1).first()
if ann:
detail = ann.refresh()
print(detail.title, detail.pdf_url)
# List PDFs embedded on that announcement page.
for pdf in ann.pdfs.list(limit=3):
print(pdf.title, pdf.url)
# Browse LVC schedule for the Foundation course using the Course enum.
for entry in client.schedules.list_lvc(course=Course.FOUNDATION, limit=3):
print(entry.date, entry.paper, entry.faculty, entry.session)
# Study materials: navigate courses → languages → papers.
course = client.studymaterialcourses.list(limit=1).first()
if course:
for lang in course.languages(limit=5):
print(lang.title, lang.language)
for paper in course.papers(language=Language.ENGLISH, limit=3):
print(paper.title, paper.year)
# Typed error handling for a non-existent announcement.
try:
bad_ann = client.announcements.list_examination(limit=1).first()
if bad_ann:
bad_ann.refresh()
except AnnouncementNotFound as exc:
print(f"Not found: {exc.ann_id}")
print("exercised: announcements.list_bos / list_examination / refresh / pdfs.list / schedules.list_lvc / studymaterialcourses.list / languages / papers")
Retrieves all Board of Studies announcements from the ICAI knowledge portal. Each announcement includes a title, publication date, direct URL, and an ID usable for fetching details. Results are ordered newest-first. No pagination — the portal returns the full list in one response.
No input parameters required.
{
"type": "object",
"fields": {
"announcements": "array of announcement objects each containing id, title, date, and url"
},
"sample": {
"data": {
"announcements": [
{
"id": "589",
"url": "https://boslive.icai.org/announcement_details.php?id=589",
"date": "10 June, 2026, Wednesday",
"title": "Commencement of Live Virtual Classes for the students of CA. Final Course appearing in May 2027 and November 2027 Examinations. - (09-06-2026)"
}
]
},
"status": "success"
}
}About the ICAI API
Announcements and Examination Updates
The get_bos_announcements and get_examination_announcements endpoints each return a full, unpaginated list of announcements ordered newest-first. Every item in the array carries an id, title, date, and url. Pass any id to get_announcement_details to retrieve the announcement's embedded PDF URL — the pdf_url field returns null when no PDF is attached, and the date field may be empty if the detail page omits it.
LVC and LVRC Schedules
get_lvc_schedule and get_lvrc_schedule both accept an optional course parameter (the course level code) and return a schedule array. Each entry includes the session number (#), Date, Name of the Paper, Name of the Topic, Name of the Faculty, Session, and links. Schedule data is only present when ICAI has published sessions for the requested course; the array will be empty otherwise.
Study Materials
Study material retrieval follows a three-step chain. First, call get_study_material_courses to get the list of available course categories — Foundation, Intermediate, Final, and Self-Paced Online Modules — each with a course_code. Pass that code to get_study_material_languages to see available mediums (typically English and Hindi). Finally, pass both course_code and language to get_study_material_papers to get papers grouped by exam applicability year, each with a title, course, language, year, and url.
PDF Extraction
get_all_pdfs accepts any relative portal page path as page_url and returns all PDF links found on that page as an array of objects with title and url. This makes it useful beyond announcement detail pages — any portal page with downloadable documents can be queried directly.
The ICAI API is a managed, monitored endpoint for boslive.icai.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when boslive.icai.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 boslive.icai.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?+
- Monitor new ICAI Board of Studies announcements and trigger alerts when novel entries appear in get_bos_announcements
- Build a CA exam preparation dashboard surfacing upcoming LVC sessions by course from get_lvc_schedule
- Aggregate study material PDFs by course, language, and year for offline distribution using the study material chain endpoints
- Track examination-specific announcements separately from general BOS notices via get_examination_announcements
- Extract all downloadable PDFs from any portal page using get_all_pdfs for archival or indexing purposes
- Display LVRC revisionary class timetables filtered by course level for students approaching exam dates
- Cross-reference announcement detail PDFs with announcement metadata to build a searchable document index
| 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 | 100 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 ICAI provide an official public developer API for the BOS Knowledge Portal?+
What does get_announcement_details return when an announcement has no PDF?+
id, title, and date fields as normal. The pdf_url field is set to null. The date field may also be empty if the detail page does not display it.Are LVC and LVRC schedules always populated?+
get_lvc_schedule and get_lvrc_schedule return an empty schedule array when ICAI has not yet published sessions for the requested course level. Schedule availability depends on whether classes have been announced at the time of the request.Does the API cover ICAI's ICITSS or MCS course materials or other regional study centre content?+
Can I retrieve the full text of an announcement, not just its PDF?+
get_announcement_details endpoint returns the title, date, and an embedded pdf_url where present. Full body text of announcements is not currently extracted as a separate field. You can fork the API on Parse and revise it to add body text extraction if the detail page includes readable content.