Version 1.0.0
API
The whole directory as read-only JSON. No API key, no rate limit, no authentication, and CORS is open to every origin — it is the same public information the site renders, in a shape a program can read. Regenerated with the site, at most five minutes behind the pages.
Endpoints
Everything, plus counts, the topic vocabulary, and a generated_at stamp.
- /api/v1/professors.json222 records
AI-affiliated faculty.
- /api/v1/labs.json39 records
Research labs, centers, and initiatives.
- /api/v1/clubs.json25 records
Student organizations.
- /api/v1/classes.json81 records
Courses.
- /api/v1/news.json40 records
News items, newest first.
OpenAPI 3.1 description of all of the above.
Every record carries
- type
- professor | lab | club | class | news
- id, slug
- Stable identifiers.
- name
- Display name. Classes read "CS 505 — Introduction to…".
- url
- Canonical page URL. Cite this, not the endpoint.
- topics
- Topic tags, most relevant first.
- last_verified
- ISO date the entry was last confirmed (news: publication date).
- image_url
- Absolute headshot / logo / article image, or null.
The entity’s own fields sit alongside these — a professor also has departments, bio, lab_ids; a class also has course_code, prerequisites, offered_status.
Try it
curl -s https://terrierintelligence.com/api/v1/labs.json | jq '.labs[0]'
Also for agents
- /llms.txt — a short markdown index of the site.
- /llms-full.txt — the entire directory as one markdown document.
- /llms-opportunities.txt — only what a student can join, take, or apply to this semester, with a how-to-pursue line per entry.
- /sitemap.xml — every page.
- An MCP server exposing search over this data lives in
/mcpin the site repository.
Please cite the entity page rather than the endpoint. Corrections go through the suggestion form.