CourseGrid Public API
Read-only. No API key. No account.
Overview
Read-only. No API key, no account, no cost. Every response is a JSON object with a top-level data (or error) field plus a meta envelope carrying the API version, an import-freshness verdict, and this disclaimer:
CourseGrid is independent. It is not affiliated with, endorsed by, or sponsored by San Diego State University or the California State University system. Data may be outdated. Confirm on the official SDSU portal before registering. CourseGrid performs no enrollment actions.
Responses are cached and rate-limited; a 429 carries X-RateLimit-* and Retry-After headers. CORS is open for GET and OPTIONS from any origin.
Machine-readable spec: /api/v1/openapi.json (OpenAPI 3.1.0).
Endpoints
/api/v1/termsList terms
Every term with at least one section on file, newest first.
Example 200 response
{
"data": [
{
"code": "2267",
"label": "Fall 2026",
"startsAt": "2026-08-24T00:00:00.000Z",
"endsAt": "2026-12-12T00:00:00.000Z",
"sectionCount": 6002,
"isDefault": true
}
],
"meta": {
"version": "v1",
"freshness": {
"verdict": "fresh",
"lastImportAt": "2026-08-25T09:03:00.000Z"
},
"docs": "https://coursegrid.io/docs/api",
"source": "San Diego State University public class search",
"disclaimer": "CourseGrid is independent. It is not affiliated with, endorsed by, or sponsored by San Diego State University or the California State University system. Data may be outdated. Confirm on the official SDSU portal before registering. CourseGrid performs no enrollment actions."
}
}/api/v1/coursesSearch courses
Courses matching the given filters, paginated. Without subject, q searches across title/subject/number, or all courses in term if no other filters are given.
subjectquery · string · optionalSubject code, e.g. 'CS'. Case-insensitive.
termquery · string, default "2273" · optionalTerm code to filter section counts by. Defaults to the current default term.
qquery · string · optionalFree-text search across course title, subject, and number.
numberquery · string · optionalCourse number, or a number prefix (e.g. '4' matches 400-level courses).
pagequery · integer, default 1 · optional1-indexed page number. Default 1.
pageSizequery · integer, default 50, max 200 · optionalResults per page, 1-200. Default 50.
| Param | In | Type | Required | Description |
|---|---|---|---|---|
subject | query | string | no | Subject code, e.g. 'CS'. Case-insensitive. |
term | query | string, default "2273" | no | Term code to filter section counts by. Defaults to the current default term. |
q | query | string | no | Free-text search across course title, subject, and number. |
number | query | string | no | Course number, or a number prefix (e.g. '4' matches 400-level courses). |
page | query | integer, default 1 | no | 1-indexed page number. Default 1. |
pageSize | query | integer, default 50, max 200 | no | Results per page, 1-200. Default 50. |
Example 200 response
{
"data": [
{
"id": "CS-460",
"subject": "CS",
"number": "460",
"code": "CS 460",
"title": "Software Engineering",
"units": "3",
"description": "Algorithms for solving frequently occurring problems. Analysis techniques, divide and conquer algorithms with applications.",
"prerequisites": {
"text": "CS 310 with a grade of C or better",
"confidence": "high"
},
"catalog": {
"eligibility": "Not open to students with credit in CS 560.",
"corequisites": null,
"recommended": null,
"geAttributes": [],
"grading": "LTR: Letter Graded.",
"repeatable": null,
"maxUnits": null,
"typicallyOffered": "Fall/Spring",
"formerlyNumbered": "CS 560",
"crossListedWith": [],
"notes": "Not open to students with credit in CS 560."
},
"requirements": [],
"url": "https://coursegrid.io/course/CS-460",
"sectionCount": 3
}
],
"page": 1,
"pageSize": 50,
"total": 1,
"hasMore": false,
"meta": {
"version": "v1",
"freshness": {
"verdict": "fresh",
"lastImportAt": "2026-08-25T09:03:00.000Z"
},
"docs": "https://coursegrid.io/docs/api",
"source": "San Diego State University public class search",
"disclaimer": "CourseGrid is independent. It is not affiliated with, endorsed by, or sponsored by San Diego State University or the California State University system. Data may be outdated. Confirm on the official SDSU portal before registering. CourseGrid performs no enrollment actions."
}
}/api/v1/courses/{slug}Get one course
One course and its sections for the given term (defaults to the newest term with sections on file).
slugpath · string · requiredThe canonical course slug: subject and number joined with a dash, e.g. 'CS-460' or 'E-E-101'. A non-canonical spelling (e.g. 'cs460') 308-redirects to the canonical URL rather than 404ing.
termquery · string · optionalTerm code. Defaults to the newest term with sections on file.
| Param | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | yes | The canonical course slug: subject and number joined with a dash, e.g. 'CS-460' or 'E-E-101'. A non-canonical spelling (e.g. 'cs460') 308-redirects to the canonical URL rather than 404ing. |
term | query | string | no | Term code. Defaults to the newest term with sections on file. |
Example 200 response
{
"data": {
"id": "CS-460",
"subject": "CS",
"number": "460",
"code": "CS 460",
"title": "Software Engineering",
"units": "3",
"description": "Algorithms for solving frequently occurring problems. Analysis techniques, divide and conquer algorithms with applications.",
"prerequisites": {
"text": "CS 310 with a grade of C or better",
"confidence": "high"
},
"catalog": {
"eligibility": "Not open to students with credit in CS 560.",
"corequisites": null,
"recommended": null,
"geAttributes": [],
"grading": "LTR: Letter Graded.",
"repeatable": null,
"maxUnits": null,
"typicallyOffered": "Fall/Spring",
"formerlyNumbered": "CS 560",
"crossListedWith": [],
"notes": "Not open to students with credit in CS 560."
},
"requirements": [],
"url": "https://coursegrid.io/course/CS-460",
"sectionCount": 3,
"sections": [
{
"id": "sec-1",
"classNumber": "12345",
"sectionCode": "01",
"status": "OPEN",
"statusLabel": "Open",
"modality": "IN_PERSON",
"modalityLabel": "In person",
"room": "PG 242",
"capacity": 35,
"enrolled": 28,
"waitlist": 0,
"openSeats": 7,
"meetings": [
{
"days": "MW",
"daysLabel": "Mon, Wed",
"startMin": 540,
"endMin": 590,
"startTime": "9:00 AM",
"endTime": "9:50 AM",
"building": "PSFA",
"room": "310",
"location": "PSFA 310"
}
],
"instructors": [
"A. Nguyen"
]
}
]
},
"meta": {
"version": "v1",
"freshness": {
"verdict": "fresh",
"lastImportAt": "2026-08-25T09:03:00.000Z"
},
"docs": "https://coursegrid.io/docs/api",
"source": "San Diego State University public class search",
"disclaimer": "CourseGrid is independent. It is not affiliated with, endorsed by, or sponsored by San Diego State University or the California State University system. Data may be outdated. Confirm on the official SDSU portal before registering. CourseGrid performs no enrollment actions."
}
}/api/v1/openapi.jsonThis document
The OpenAPI 3.1 document describing every endpoint under /api/v1.
No SDSU or CSU affiliation
CourseGrid is independent. It is not affiliated with, endorsed by, or sponsored by San Diego State University or the California State University system. Data may be outdated. Confirm on the official SDSU portal before registering. CourseGrid performs no enrollment actions.