topuniversities.com API: List QS university rankings
Lists 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.
Unofficial. Not affiliated with or endorsed by topuniversities.com.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Year optional
year Edition year, such as 2026. Omit for the latest edition of the chosen ranking.
2026
Whole number from 2000 to 2100.
- Country optional
country Country or territory name, such as United States; omit for all countries.
United Kingdom
Default
.- Subject optional
subject Subject name in plain words, such as Computer Science; omit for the world ranking.
Default
.- Max Results optional
max_results Maximum number of ranked universities to return, such as 50.
7
Whole number from 1 to 200. Default
50.
Input as JSON
{ "year": 2026, "country": "United Kingdom", "subject": "", "max_results": 7}Output
{ "rows": [ { "city": "London", "rank": "2", "country": "United Kingdom", "university": "Imperial College London", "overall_score": 99.4, "university_url": "https://www.topuniversities.com/universities/imperial-college-london" , "academic_reputation": 99.6, "employer_reputation": 100, "employment_outcomes": 95.9, "sustainability_score": 98.3, "citations_per_faculty": 95, "faculty_student_ratio": 99.3, "international_faculty_ratio": 100, "international_student_ratio": 100, "international_research_network": 97.5, "international_student_diversity": 100 }, { "city": "Oxford", "rank": "4", "country": "United Kingdom", "university": "University of Oxford", "overall_score": 97.9, "university_url": "https://www.topuniversities.com/universities/university-oxford" , "academic_reputation": 100, "employer_reputation": 100, "employment_outcomes": 100, "sustainability_score": 77.9, "citations_per_faculty": 91, "faculty_student_ratio": 100, "international_faculty_ratio": 98.8, "international_student_ratio": 98.6, "international_research_network": 100, "international_student_diversity": 98.7 }, { "city": "Cambridge", "rank": "6", "country": "United Kingdom", "university": "University of Cambridge", "overall_score": 97.2, "university_url": "https://www.topuniversities.com/universities/university-cambridge" , "academic_reputation": 100, "employer_reputation": 100, "employment_outcomes": 100, "sustainability_score": 78.4, "citations_per_faculty": 88.6, "faculty_student_ratio": 100, "international_faculty_ratio": 100, "international_student_ratio": 93.1, "international_research_network": 99.2, "international_student_diversity": 93.6 } ], "year": 2026, "ranking_name": "QS World University Rankings"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"topuniversities.com/list_university_rankings","input":{"year":2026,"country":"United Kingdom","subject":"","max_results":7}}' # 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": "topuniversities.com/list_university_rankings" , "input": { "year": 2026, "country": "United Kingdom", "subject": "", "max_results": 7 }})# 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": "topuniversities.com/list_university_rankings" , "input": { "year": 2026, "country": "United Kingdom", "subject": "", "max_results": 7 } }), 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 topuniversities.com/list_university_rankings# with {"year":2026,"country":"United Kingdom","subject":"","max_results":7}"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", "properties": { "year": { "type": "integer", "maximum": 2100, "minimum": 2000, "description": "Edition year, such as 2026. Omit for the latest edition of the chosen ranking." }, "country": { "type": "string", "default": "", "description": "Country or territory name, such as United States; omit for all countries." }, "subject": { "type": "string", "default": "", "description": "Subject name in plain words, such as Computer Science; omit for the world ranking." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Maximum number of ranked universities to return, such as 50." } }}Output schema
{ "type": "object", "required": [ "ranking_name", "year", "rows" ], "properties": { "rows": { "type": "array", "items": { "type": "object", "required": [ "rank", "university", "city", "country", "overall_score", "university_url" ], "properties": { "city": { "type": [ "string", "null" ] }, "rank": { "type": "string" }, "country": { "type": [ "string", "null" ] }, "university": { "type": "string" }, "overall_score": { "type": [ "number", "null" ] }, "university_url": { "type": "string" } }, "additionalProperties": { "type": [ "number", "null" ] } }, "description": "Universities in QS rank order; additional numeric fields are the indicator scores published for this table." }, "year": { "type": "integer", "description": "Edition year." }, "ranking_name": { "type": "string", "description": "Name of the chosen QS ranking." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
topuniversities.com/list_university_rankings- Returns
- ranking name, edition year, rows of rank, university, city, country, overall score, profile link and indicator scores
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 topuniversities.com/list_university_rankings with the inputs above.
Ask your agent
- Show me the top 20 universities in the latest QS World University Rankings with their overall scores
- Which German universities made the QS 2025 world rankings? List up to 40 with rank, city and indicator scores
- Pull the QS subject ranking for Computer Science, 2024 edition, top 100 worldwide
- On topuniversities.com, get the Mechanical Engineering subject table for Canada — I want each school's rank and overall score
- I need the top 10 Australian institutions from topuniversities.com's 2026 global table, including academic reputation and employer reputation scores
See more
All topuniversities.com methodsFinds 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 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_rankingsLooks up a university on Times Higher Education and returns its latest displayed world ranking, overall and pillar scores, student statistics and subject rankings.
timeshighereducation.com/get_universityRanks countries by a World Economic Outlook indicator for a chosen year, excluding regional and group totals and countries without a value.
imf.org/list_country_rankingsLists Similarweb's most visited websites for a category and country, with rankings and engagement figures for the reported month. Anonymous view limits may restrict results, especially for country rankings.
similarweb.com/list_top_websitesRanks countries by a World Development Indicators statistic for a given year, or for the latest year with broad country coverage. Regional aggregates and countries without data for that year are left out.
worldbank.org/compare_countriesLists companies in the Forbes Global 2000 in rank order, optionally for a given year, country of headquarters and industry. Financial figures are in billions of US dollars; up to 500 results.
forbes.com/list_global_2000Compares the latest reported value of an economic indicator across countries in a region, highest first. World includes all listed countries; Australia uses the Oceania region.
tradingeconomics.com/list_countries_by_indicator