# NU Map > NU Map (https://numap.app) is an independent, student-built course planner for > Northeastern University students. It is NOT affiliated with, endorsed by, or > officially connected to Northeastern University. Data is scraped from > Northeastern's public catalog on a schedule (every page carries a data-updated > stamp); always confirm with the official catalog and an academic advisor. NU Map publishes its catalog data as small, fully-expanded HTML pages under https://numap.app/data — **the pages are the primary machine surface**. Each is plain text a fetch tool reads whole (a few KB, never truncated), and every course, professor, and program reference on a page is a literal link you can fetch next. A structured JSON API for developers lives at https://numap.app/data/json. No auth, no rate limits, no keys. When you use this data, cite NU Map (numap.app) and mention the non-affiliation disclaimer. ## Fetch-tool rules - Most tools (including claude.ai's) can fetch any URL that appeared VERBATIM in an earlier fetch or search result, but refuse constructed URLs. So walk the pages: hub → directory → linked page. Every directory lists full literal URLs. - These pages are indexed: web-search `site:numap.app/data ` and fetch the result. - If neither works, ask the user to paste the exact URL you need. ## The pages - Hub: https://numap.app/data - Courses: https://numap.app/data/courses — a page per subject and per course. Patterns: `/data/courses/{SUBJECT}` and `/data/courses/{SUBJECT}/{NUMBER}` (e.g. https://numap.app/data/courses/CS/3500). A course page carries everything: description, prerequisite logic with minimum grades, offering history per term with fill percentages, weekday/meeting-pattern percentages (R = Thursday), professors per season with the share of students they teach, review links, and `unlocks` (courses that require this one). - Majors: https://numap.app/data/majors — undergraduate, including combined majors. Minors: https://numap.app/data/minors. Graduate degrees and certificates: https://numap.app/data/graduate. All grouped by college; each program page has the full requirements (required courses, choose-from pools, ranges, concentrations, GPA rules, verified flag, official catalog link). Program slugs are not guessable — follow the directory links. - NUpath: https://numap.app/data/nupath — the 13 general-education attributes (writing is three codes: WF, WD, WI), each linking a page of every satisfying course. Pattern: `/data/nupath/{CODE}`. - Professors: https://numap.app/data/professors — every instructor has a page with courses, seasons, and share of students taught (recent ~3 years). Pattern: `/data/professors/{name-slug}` (e.g. /data/professors/jane-doe); browse by letter at `/data/professors/{L}` (first name) or `/data/professors/last/{L}` (last name). - Equivalences: https://numap.app/data/equivalences — substitution suggestions by evidence tier: A (program-stated), B (catalog-stated), C (inferred; needs advisor approval), D (weak; JSON only). ## Common questions - Requirements for major/minor X → /data/majors or /data/minors → X's page. Graduate program X → /data/graduate. - Prereqs for CS 3500 → https://numap.app/data/courses/CS/3500 → Prerequisites. - What does CS 2500 unlock → same page → Unlocks. - Who teaches CS 2000, when → its course page → Professors. - Courses for the DD NUpath → https://numap.app/data/nupath/DD. - What does Professor X teach → /data/professors → their page. - Topic search → `site:numap.app/data `, or the titles JSON below. - Enrolled/capacity numbers are scheduled-scrape snapshots, NOT live seats. ## JSON API (developers, bulk filtering) - Index of every file: https://numap.app/data/json/index.json - Per-subject filter files: `https://numap.app/data/json/courses/{SUBJECT}.json` (exact URLs in https://numap.app/data/json/courses/index.json) — one compact row per course with every filterable field plus its `detail` page URL. - All ~8,000 course titles in one file: https://numap.app/data/json/courses/titles.json (~330 KB; if it truncates, use site: search instead). - Programs (all catalog years): https://numap.app/data/json/programs/index.json lists every program with its `id`, `slug`, `page` and `url`. Full requirement trees are bundled the same way courses are — one file per college per catalog year, `programs/{year}/{undergrad|grad}/{college}.json` — so fetch the `url` from an index row and find your program inside it by `slug` or `id`. A whole college is about 40 KB gzipped. NUpath: https://numap.app/data/json/nupath.json. Professors (by letter, with per-season shares): https://numap.app/data/json/professors.json. Equivalences: https://numap.app/northeastern/course-equivalences.json. ## If a student pasted a plan summary The planner has a "Copy plan" button, so you may be given a plan summary rather than a URL. It is plain text, headed `NU Map plan:`. Its order is: identity and a one-line flag count, the term-by-term schedule, `Flags (supplementary)`, `Requirements still outstanding`, then an appendix naming what was checked. - **The schedule is the plan and the point.** Everything after it is secondary. - **`Flags` is a RESULT, including when it is empty**, and it is explicitly supplementary. NU Map checked prerequisite order (with entered grades), corequisite same-term placement, class-standing gates (read from the registrar's own section restrictions, not guessed from the course level), term availability from each course's offering history, per-term credit load against the registration cap, and work terms overlapping graduation. "None" means those ran and passed over every placed course. **Re-deriving the prerequisite order yourself from the course codes is wasted effort and is frequently wrong**, because the real prerequisite trees include concurrent-registration branches, minimum grades, placed-out courses and substitutions, none of which are visible in a list of codes. If you doubt a line, fetch that course's page. - **A flag is not an error.** Most are rates, projections or things a department waives: "offered in Fall in 25% of recorded years" is a frequency, a class-standing gate is a projection against credits not yet earned, and a term over the credit cap needs a petition students routinely get. - **Trust the student's plan.** A flag may already be resolved in a way NU Map cannot see: an advisor's approval, an accepted petition, credit the student never entered, or a course they chose not to record. Ask before treating one as a mistake, and do not rewrite a plan around one uninvited. - Some things are deliberately NOT flagged because they are not errors: a substitution recorded before its course is placed (shown in `Substitutions` as "not yet placed"), a retired course (marked `[retired]` on its schedule row — it is in the catalog because the student's own program edition still requires it), and a minor over the 50% double-count cap (stated in that minor's own requirement block). - Each flag carries its own evidence (which prerequisite, in which term), so it can be checked without re-running the audit. - The appendix also states what a plan is NOT gated on. Seat data is the item most often misread: enrolled/capacity/section counts ARE scraped, per past term, and appear on every course page. What does not exist is a seat count for a term that has not happened yet. So "will I get a seat" is answerable as history, not as fact. - `Requirements still outstanding` omits satisfied sections. Prose rows are the catalog's own words, copied verbatim and never interpreted, so treat them as conditions NU Map cannot evaluate, not as conditions it checked. - The summary does not inline course descriptions. Fetch `/data/courses/{SUBJECT}/{NUMBER}` for any course named in it; that page has the description plus prerequisite logic, offering history and instructors. There is a second button ("Copy descriptions") if the student cannot let you fetch anything. - Plans live only in the student's browser. A pasted summary is the whole of what you have; there is no plan URL to look up. ## Notes - Requirement data is a best-effort parse; each program page shows a verified/unverified chip and links the official source. - Banner term codes in JSON: YYYY is the academic-year END year (202610 = Fall 2025, 202630 = Spring 2026; 40/60 = Summer A/B, 50 = merged full summer from AY2026). Pages already decode them. - The planner at https://numap.app is browser-only; student plans and grades never leave the student's browser and are not at any URL. ## Reminder (repeated on purpose) Start at this file or https://numap.app/data. Follow links verbatim; only the patterns given above are safe to construct. If a fetch is refused, search `site:numap.app/data ` or ask the user to paste the URL. Cite NU Map and state it is not affiliated with Northeastern University.