Times Higher Education API: Get university profile
Looks up a university on Times Higher Education and returns its latest displayed world ranking, overall and pillar scores, student statistics and subject rankings.
Unofficial. Not affiliated with or endorsed by Times Higher Education.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- University, required
university Name of the university, for example University of Tokyo.
University of Oxford
Input as JSON
{ "university": "University of Oxford"}Output
{ "country": "United Kingdom", "world_rank": "1", "profile_link": "https://www.timeshighereducation.com/world-university-rankings/university-oxford" , "ranking_year": 2027, "overall_score": "97.9", "pillar_scores": { "industry": 99.9, "teaching": 97.1, "research_quality": 96.8, "research_environment": 100, "international_outlook": 95.8 }, "university_name": "University of Oxford", "subject_rankings": [], "number_of_students": 22480, "students_per_staff": 10.5, "female_to_male_ratio": "52 F : 48 M", "international_students_percent": 44}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"timeshighereducation.com/get_university","input":{"university":"University of Oxford"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "timeshighereducation.com/get_university" , "input": { "university": "University of Oxford" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "timeshighereducation.com/get_university" , "input": { "university": "University of Oxford" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run timeshighereducation.com/get_university# with {"university":"University of Oxford"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "university" ], "properties": { "university": { "type": "string", "description": "Name of the university, for example University of Tokyo." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "university_name", "country", "world_rank", "ranking_year", "overall_score", "pillar_scores", "number_of_students", "students_per_staff", "international_students_percent", "female_to_male_ratio", "subject_rankings", "profile_link" ], "properties": { "country": { "type": [ "string", "null" ] }, "world_rank": { "type": [ "string", "null" ] }, "profile_link": { "type": "string" }, "ranking_year": { "type": [ "integer", "null" ] }, "overall_score": { "type": [ "string", "null" ] }, "pillar_scores": { "type": "object", "required": [ "teaching", "research_environment", "research_quality", "industry", "international_outlook" ], "properties": { "industry": { "type": [ "number", "null" ] }, "teaching": { "type": [ "number", "null" ] }, "research_quality": { "type": [ "number", "null" ] }, "research_environment": { "type": [ "number", "null" ] }, "international_outlook": { "type": [ "number", "null" ] } }, "additionalProperties": false }, "university_name": { "type": "string" }, "subject_rankings": { "type": "array", "items": { "type": "object", "required": [ "subject", "rank" ], "properties": { "rank": { "type": "string" }, "subject": { "type": "string" } }, "additionalProperties": false } }, "number_of_students": { "type": [ "integer", "null" ] }, "students_per_staff": { "type": [ "number", "null" ] }, "female_to_male_ratio": { "type": [ "string", "null" ] }, "international_students_percent": { "type": [ "number", "null" ] } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
timeshighereducation.com/get_university- Returns
- university name, country, world rank, ranking year, scores, student statistics, subject rankings, profile link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method timeshighereducation.com/get_university with the inputs above.
Ask your agent
- What is the latest world ranking and overall score for University of Tokyo?
- Show me the student-to-staff ratio and international student share for ETH Zurich.
- Which subject rankings does the University of Melbourne have on the Times Higher Education site?
- Can you pull up the pillar scores for Imperial College London in the most recent ranking year?
- Find the country, world rank and profile link for McGill University on timeshighereducation.com.
Lists THE World University Rankings for a year, optionally filtered by country, with displayed ranks, scores, student figures and university links. Subject rankings are supported by name.
timeshighereducation.com/list_university_rankingsFinds a university's QS profile by name and returns its latest QS World University Ranking and overall score, location, student figures, faculty ratio, public tuition ranges and up to five listed subject ranks.
topuniversities.com/get_universityLists the QS World University Rankings, or a QS subject ranking, for an edition and optionally one country, with each university's displayed rank, location, overall score and the indicator scores published for that table.
topuniversities.com/list_university_rankingsCompares 2 to 5 US colleges from College Scorecard by enrollment, admissions, cost after aid, graduation, 10-year earnings and graduation debt. Missing figures are null; names not found are listed separately.
collegescorecard.ed.gov/compare_collegesSummarise an institution's research output from its name, including annual output, leading topics and authors. Annual citations count citations received by works published that year; leading authors are coauthors of institution-linked works, not necessarily employees.
openalex.org/get_institution_researchSearches Udemy courses on a topic and returns US visitor prices in USD, ratings, lecture counts and course details.
udemy.com/search_coursesLooks up a Coursera course, specialization or professional certificate by name or link and returns its providers, instructors, rating, enrollment, modules, skills, languages and publicly shown price.
coursera.org/get_courseFinds a school on GreatSchools by name, city and state. Returns its ratings and key facts; anything the profile does not publish is null.
greatschools.org/get_school