Times Higher Education APItimeshighereducation.com ↗
Access THE university rankings, detailed university profiles, academic job listings, and site search via 4 structured JSON endpoints.
What is the Times Higher Education API?
The Times Higher Education API exposes 4 endpoints covering global university rankings across multiple subject disciplines, detailed university profiles, academic job listings, and site-wide content search. The get_rankings endpoint returns per-institution scores, rank positions, pillar weights, and student statistics, optionally filtered by year, country, and ranking type slug such as world_university_rankings or computer_science.
curl -X GET 'https://api.parse.bot/scraper/a250cfd9-0c7d-421b-87a3-80a0d7d392be/get_rankings?year=2024&country=United+Kingdom&ranking_type=world_university_rankings' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace timeshighereducation-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.times_higher_education_api import TimesHigherEducation, RankingType, UniversityRanking
the = TimesHigherEducation()
# List top UK universities in computer science rankings
for uni in the.universityrankings.list(ranking_type=RankingType.COMPUTER_SCIENCE, year="2025", country="United Kingdom"):
print(uni.name, uni.rank, uni.scores_overall, uni.location)
# Navigate from a ranking entry to its full profile
oxford = the.universityranking(url="/world-university-rankings/university-oxford")
profile = oxford.details()
print(profile.name, profile.id, profile.description)
# Search for academic jobs
for job in the.jobs.search(query="research", location="United Kingdom"):
print(job.title, job.ref_institution_name, job.salary, job.posted_date)
# Search for scholarship guides
for guide in the.guides.search(query="scholarships"):
print(guide.title, guide.section, guide.url)
Fetch university rankings for a specific type and year. Returns ranked university entries with overall and pillar scores, student statistics, and a URL slug for fetching each university's full profile. Supports filtering by country name. A single request returns all entries for the given ranking type and year.
| Param | Type | Description |
|---|---|---|
| year | string | Year of rankings (e.g. 2024, 2025). |
| country | string | Filter results by country name, matched case-insensitively against the location field (e.g. United Kingdom, United States, Germany). |
| ranking_type | string | Ranking type slug. |
{
"type": "object",
"fields": {
"data": "array of university ranking objects with rank, name, scores, location, url, and student stats",
"pillars": "object mapping pillar IDs to pillar metadata (label, weight, description)",
"subjects": "object mapping subject IDs to subject names",
"locations": "object mapping country codes to country name and sid"
},
"sample": {
"data": {
"data": [
{
"url": "/world-university-rankings/university-oxford",
"name": "University of Oxford",
"rank": "1",
"location": "United Kingdom",
"scores_overall": "98.5",
"stats_number_students": "22,095",
"stats_pc_intl_students": "43%",
"stats_female_male_ratio": "51 : 49",
"stats_student_staff_ratio": "10.8"
}
],
"pillars": {
"7": {
"id": "7",
"label": "Overall",
"machine": "overall"
}
},
"subjects": {
"3081": "Computer Science"
},
"locations": {
"GBR": {
"sid": "a4zw0000000GnxQAAS",
"name": "United Kingdom"
}
}
},
"status": "success"
}
}About the Times Higher Education API
Rankings and University Profiles
The get_rankings endpoint accepts three optional parameters — year, country, and ranking_type — and returns an array of university objects containing rank, name, location, and detailed scores. The response also includes a pillars map (pillar ID to label, weight, and description) and a locations map (country code to country name and sid), giving you the metadata needed to interpret score breakdowns without a separate lookup call. Supported ranking types include world_university_rankings, computer_science, arts_and_humanities, and engineering, among others.
The get_university_profile endpoint takes a URL slug (available from the url field returned by get_rankings) and returns a structured profile: an HTML-formatted description, key_stats metadata with sectionId and institutionId, rankings visualisation metadata, and a similar_universities object containing recommendedCountry and recommendedGlobal arrays for discovering related institutions.
Job Listings and Content Search
The search_jobs endpoint returns all current academic job postings from the Times Higher Education jobs board. Each job object includes title, description, salary, location, country_name, listing_url, posted_date, expiry_date, and recruiter. Optional query and location parameters perform case-insensitive substring filtering client-side. Because the live job pool changes continuously, filtering by niche terms may return zero results depending on current listings.
The get_scholarship_guides endpoint runs a site-wide search and returns results grouped by section (for example, Universities or Student Articles). Each result object carries title, url, summary, and section, making it useful for discovering editorial content, news articles, and university landing pages alongside ranking data.
The Times Higher Education API is a managed, monitored endpoint for timeshighereducation.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when timeshighereducation.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official timeshighereducation.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a university comparison tool that pulls scores and pillar weights from get_rankings for multiple institutions
- Populate a country-filtered league table by passing a country name to get_rankings and rendering the returned rank and score fields
- Generate university profile pages using the HTML description and similar_universities recommendations from get_university_profile
- Aggregate academic job postings by filtering search_jobs on location or keyword to surface relevant roles in a specific field or region
- Track ranking position changes year-over-year by calling get_rankings with different year values and diffing the returned rank fields
- Surface related editorial content alongside ranking data by querying get_scholarship_guides with a university or subject keyword
- Build an academic recruiter dashboard that monitors expiry_date fields from search_jobs to flag soon-to-close postings
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Times Higher Education offer an official developer API?+
What does get_rankings return beyond a simple list of universities?+
pillars map that associates each pillar ID with its label, weight, and description, and a locations map that resolves country codes to names. These metadata objects let you label and weight scores without extra lookups.Are individual university score breakdowns or indicator-level data available?+
get_rankings endpoint returns top-level scores and pillar-level metadata. Granular sub-indicator scores below the pillar level are not currently exposed. You can fork this API on Parse and revise it to add a dedicated sub-indicator endpoint if that depth is needed.How current are the job listings returned by search_jobs?+
posted_date and expiry_date fields to help you assess freshness.