{"id":32570586,"url":"https://github.com/ctcuff/ucf-course-api","last_synced_at":"2026-02-25T06:44:02.684Z","repository":{"id":114393782,"uuid":"365046133","full_name":"ctcuff/ucf-course-api","owner":"ctcuff","description":"🎓 An unofficial API to access information on what courses are offered by UCF.","archived":false,"fork":false,"pushed_at":"2021-05-13T04:01:06.000Z","size":305,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-10-29T08:29:39.236Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://api.ucfcourses.com/catalog","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctcuff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-05-06T21:54:07.000Z","updated_at":"2021-11-02T18:38:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"e4026ffe-8a9d-4d0e-8e9f-e1d90edfb840","html_url":"https://github.com/ctcuff/ucf-course-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ctcuff/ucf-course-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctcuff%2Fucf-course-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctcuff%2Fucf-course-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctcuff%2Fucf-course-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctcuff%2Fucf-course-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctcuff","download_url":"https://codeload.github.com/ctcuff/ucf-course-api/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctcuff%2Fucf-course-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29812622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-29T08:16:39.433Z","updated_at":"2026-02-25T06:44:02.679Z","avatar_url":"https://github.com/ctcuff.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UCF Course API\n\nAn unofficial API to access a list of courses offered by UCF, along with a list of sections in that course. Due to the limitations of how UCF's course data can be accessed, this API is currently only able to return data for the current term plus two terms in the future. For example, if the current term is summer 2021, then this API will **ONLY** be able to return data from summer 2021, fall 2021, and spring 2022. It's currently **NOT** possible for the API to return data from past semesters. As for another limitation, the data returned by this API may not be an exact representation of what classes you could find by searching myUCF.\n\n## How To Run This Project\n\n1. `yarn` - To install dependencies\n2. `yarn dev` - To run the server\n\n## Running Tests\n\nTo make sure tests work properly, `generate-html.py` should be run once before running `yarn test`. This ensures that each HTML file is up to date. All tests that make `GET` requests read from these HTML files to avoid having to request content from UCF's course site numerous times.\n\n## How Do Terms Work?\n\nUCF numbers terms with 4 digits going up by 10.\n\n```\nSpring 2021 =\u003e 1710\nSummer 2021 =\u003e 1720\nFall 2021 =\u003e 17230\n--- lots of terms later ---\nSpring 2048 =\u003e 2520\n```\n\n`/catalog` and `/detail` each take a `?term=[code]` parameter. That term corresponds to the term code used by UCF to search for courses. This code can either be a 4 digit string, or the semester followed by the year. For example: `/catalog/COP?term=1710` and `/catalog/COP?term=spring2021` mean the same thing. Note that only `spring`, `summer`, and `fall` are valid. If a route is called but `?term` isn't provided, the API will default to the current term.\n\n## Available Routes\n\n| Route      | Method | Description                                  |\n| ---------- | ------ | -------------------------------------------- |\n| `/catalog` | `GET`  | Returns a list of all courses offered by UCF |\n\n#### Example response from `/catalog`:\n\n```js\n[\n   {\n      \"prefix\": \"ACG\",\n      \"title\": \"Accounting General\"\n   },\n   {\n      \"prefix\": \"ADE\",\n      \"title\": \"Adult Education\"\n   },\n   {\n      \"prefix\": \"ADV\",\n      \"title\": \"Advertising\"\n   },\n   {\n      \"prefix\": \"AFA\",\n      \"title\": \"African American Studies\"\n   },\n   { ... }\n]\n```\n\n| Route            | Method | Description                                             |\n| ---------------- | ------ | ------------------------------------------------------- |\n| `/catalog/:area` | `GET`  | Returns a list of all courses under the specified area. |\n\n#### Example response from `/catalog/ENC`:\n\n```js\n[\n   {\n      \"prefix\": \"ENC 1101\",\n      \"title\": \"Composition I\",\n      \"description\": \"ENC 1101 CAH-WRITE \u0026 RHET 3(3,0) Composition I: Expository writing with emphasis on effective communication and critical thinking. Emphasizing the writing process writing topics are based on selected readings and on student experiences. The NC grading policy applies to this course. Fall, Spring.\"\n   },\n   {\n      \"prefix\": \"ENC 1102\",\n      \"title\": \"Composition II\",\n      \"description\": \"ENC 1102 CAH-WRITE RHET 3(3,0) Composition II: PR: ENC 1101 with a grade of C- or better. Focus on extensive research in analytical and argumentative writing based on a variety of readings from the humanities. Emphasis on developing critical thinking and diversity of perspective. The NC grading policy applies to this course. Fall, Spring.\"\n   },\n   { ... }\n]\n```\n\n| Route             | Method | Description                                                                                   |\n| ----------------- | ------ | --------------------------------------------------------------------------------------------- |\n| `/detail/:course` | `GET`  | Returns information about the specified course along with a list of sections for that course. |\n\n#### Example response from `/detail/ENC1101`:\n\n```js\n{\n   \"course\": \"ENC 1101\",\n   \"courseName\": \"Composition I\",\n   \"description\": \"ENC 1101 CAH-WRITE \u0026 RHET 3(3,0) Composition I: Expository writing with emphasis on effective communication and critical thinking. Emphasizing the writing process writing topics are based on selected readings and on student experiences. The NC grading policy applies to this course. Fall, Spring.\",\n   \"sections\": [\n      {\n         \"id\": \"A601\",\n         \"begin\": \"2021-05-17\",\n         \"end\": \"2021-06-26\",\n         \"schedule\": \"MTWTh 12:00PM-01:50PM\",\n         \"building\": \"NICHOLSON SCHOOL COMMUNICATION\",\n         \"room\": \"NSC O111\",\n         \"instructor\": \"Heather Vazquez\"\n      },\n      { ... }\n   ]\n}\n```\n\n| Route                                 | Method | Description                                                        |\n| ------------------------------------- | ------ | ------------------------------------------------------------------ |\n| `/detail/:course/sections/:sectionId` | `GET`  | Returns the section with id `:sectionId` from the specified course |\n\n#### Example response from `/detail/ENC1101/sections/A601`:\n\n```js\n{\n   \"id\": \"A601\",\n   \"begin\": \"2021-05-17\",\n   \"end\": \"2021-06-26\",\n   \"schedule\": \"MTWTh 12:00PM-01:50PM\",\n   \"building\": \"NICHOLSON SCHOOL COMMUNICATION\",\n   \"room\": \"NSC O111\",\n   \"instructor\": \"Heather Vazquez\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctcuff%2Fucf-course-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctcuff%2Fucf-course-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctcuff%2Fucf-course-api/lists"}