For developers
Developer docs
CourseQuest is a project created by researchers: a free, fast university course catalog and weekly-schedule planner. It aggregates public course search data into a searchable catalog of courses and sections, including meeting days/times, rooms, instructors, seat availability, credits, and open/closed status. The web interface includes calendar export for various formats (e..g., iCal / Google / Outlook).
Use of the API is subject to our API Terms.
Not a human? See the machine-readable guide at /llms.txt.
Data model
Institution (school) → Subject → Course → Section. Each section exposes its current snapshot (status, schedule, room, seats, instructor, units) and is refreshed by periodic scrapes; prior snapshots are retained as history. Sections that disappear from a complete scrape are marked cancelled rather than deleted.
Supported schools
The set of schools grows over time. Rather than listing them here, fetch the live list:
Use a school's identifer (e.g. uri) as the inst parameter in the endpoints below.
API reference
All endpoints are GET, need no authentication, send the CORS header Access-Control-Allow-Origin: *, and return JSON by default. Catalog search also supports format=text for plaintext and format=markdown (or the Accept: text/markdown request header) for Markdown.
/api/institutionsSchools that have course data loaded, with course counts.
Returns: { institutions: [{ identifier, name, courses }] }
/api/catalog/filtersAvailable subjects, careers, and terms for a school — useful for building queries or dropdowns.
| Param | Description |
|---|---|
| inst | school identifier (the official .edu domain minus .edu; e.g. uri) |
Returns: { subjects: string[], careers: string[], terms: [{ term, year }] }
/api/catalogCurrent (non-cancelled) sections for a school, with filtering and pagination. This is the main data endpoint.
| Param | Description |
|---|---|
| inst | school identifier (default: uri) |
| term | term name (default: Fall) |
| year | term year (default: 2026) |
| q | free text over subject / number / title / class# / instructor |
| subject | exact subject code, e.g. BIO |
| career | career code, e.g. UGRD or GRAD |
| open | 1 (or true) to return only open sections |
| days | comma list of weekdays, 0=Sun … 6=Sat; matches sections meeting on any of them |
| page | 1-based page number (default: 1) |
| pageSize | results per page, max 100 (default: 25) |
| format | json (default), text, or markdown; overrides the Accept header |
Returns: { total, page, pageSize, pages, results[] } — each result includes a `url` linking to its course page
More examples
curl -H "Accept: text/markdown" "https://coursequest.org/api/catalog?inst=uri&subject=BIO"
curl "https://coursequest.org/api/catalog?inst=uri&subject=BIO&open=1&format=markdown"
curl "https://coursequest.org/api/catalog?inst=uri&q=calculus&days=1,3,5"
curl "https://coursequest.org/api/institutions?format=text"