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 identifier (e.g. uri) as the inst parameter in the endpoints below. The identifiers are derived from the school's domain name, without the domain suffix. For example, the identifier for mit.edu is mit.

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.

GET/api/institutions

Schools that have course data loaded, with course counts.

Returns: { institutions: [{ identifier, name, courses }] }

Example
curl "https://coursequest.org/api/institutions"
Try it
GET/api/catalog/filters

Available subjects, careers, and terms for a school — useful for building queries or dropdowns.

ParamDescription
instschool identifier (the official .edu domain minus .edu; e.g. uri)

Returns: { subjects: string[], careers: string[], terms: [{ term, year }] }

Example
curl "https://coursequest.org/api/catalog/filters?inst=uri"
Try it
GET/api/catalog

Current (non-cancelled) sections for a school, with filtering and pagination. This is the main data endpoint.

ParamDescription
instschool identifier (default: uri)
termterm name (default: Fall)
yearterm year (default: 2026)
qfree text over subject / number / title / class# / instructor
subjectexact subject code, e.g. BIO
careercareer code, e.g. UGRD or GRAD
open1 (or true) to return only open sections
dayscomma list of weekdays, 0=Sun … 6=Sat; matches sections meeting on any of them
page1-based page number (default: 1)
pageSizeresults per page, max 100 (default: 25)
formatjson (default), text, or markdown; overrides the Accept header

Returns: { total, page, pageSize, pages, results[] } — each result includes a `url` linking to its course page

Example
curl "https://coursequest.org/api/catalog?inst=uri&q=biology"
Try it

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"