Discover/Ac API
live

Ac APIprofiles.ucl.ac.uk

Search and retrieve UCL researcher profiles by keyword, department, or field of research. Returns names, positions, ORCID IDs, emails, and publications.

Endpoints
2
Updated
2mo ago

What is the Ac API?

The UCL Profiles API provides two endpoints for accessing researcher data from University College London's academic directory. Use search_researchers to query across thousands of profiles by name, department, or field of research, and get_researcher to pull a full profile including up to 100 recent publications, ORCID ID, email address, and departmental affiliation for a specific academic.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination (1-indexed).
Search keyword matching against researcher name, position, bio, research interests, teaching activities, and publications. When omitted or empty, returns all researchers.
Number of results per page (1-100).
Filter by department name exactly as it appears on UCL Profiles (e.g. 'Dept of Computer Science', 'Dept of Statistical Science'). Omitting returns results from all departments.
Filter by field of research tag (e.g. 'Artificial intelligence', 'Machine learning', 'Neurosciences'). Omitting returns results from all fields.
api.parse.bot/scraper/84a0ea47-1b1f-48e9-ac93-c0d49efba9e8/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X POST 'https://api.parse.bot/scraper/84a0ea47-1b1f-48e9-ac93-c0d49efba9e8/search_researchers' \
  -H 'X-API-Key: $PARSE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "query": "machine learning",
  "department": "Dept of Computer Science",
  "field_of_research": "Artificial intelligence",
  "page": "1",
  "per_page": "25"
}'
Python SDK · recommended

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 profiles-ucl-ac-uk-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.

"""Walkthrough: UCL Profiles API — search researchers and drill into full profiles."""
from parse_apis.profiles_ucl_ac_uk_api import UclProfiles, ResearcherNotFound

client = UclProfiles()

# Search for machine learning researchers, capped at 5 results.
for researcher in client.researchers.search(query="machine learning", limit=5):
    print(researcher.full_name, "-", researcher.position)
    print("  Fields:", ", ".join(researcher.research_fields))

# Take the first match and fetch full profile details (publications, email, etc.)
result = client.researchers.search(
    query="imaging",
    department="Dept of Computer Science",
    limit=1,
).first()

if result is not None:
    detail = result.details()
    print(f"\n{detail.title} {detail.full_name}")
    print(f"  Email: {detail.email}")
    print(f"  ORCID: {detail.orcid_id}")
    if detail.publications:
        pub = detail.publications[0]
        print(f"  Latest pub: {pub.title} ({pub.journal})")

# Browse researchers in a specific field of research.
try:
    for researcher in client.researchers.search(
        field_of_research="Artificial intelligence",
        per_page=10,
        limit=10,
    ):
        print(researcher.last_name, researcher.first_name)
except ResearcherNotFound as e:
    # Raised when a derived url_id no longer resolves.
    print(f"Not found: {e.message}")

print("\nexercised: researchers.search / details / publications")
All endpoints · 2 totalmissing one? ·

Search UCL researcher profiles by name or keyword, optionally filtered by department or field of research. Returns paginated results sorted by relevance when a query is provided, or alphabetically by last name when no query is given. Each result includes the researcher's name, title, position, department, and research fields. Pagination is controlled by page and per_page parameters.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-indexed).
querystringSearch keyword matching against researcher name, position, bio, research interests, teaching activities, and publications. When omitted or empty, returns all researchers.
per_pageintegerNumber of results per page (1-100).
departmentstringFilter by department name exactly as it appears on UCL Profiles (e.g. 'Dept of Computer Science', 'Dept of Statistical Science'). Omitting returns results from all departments.
field_of_researchstringFilter by field of research tag (e.g. 'Artificial intelligence', 'Machine learning', 'Neurosciences'). Omitting returns results from all fields.
Response
{
  "type": "object",
  "fields": {
    "results": "array of researcher profile objects",
    "pagination": "object with page, per_page, total, and total_pages"
  },
  "sample": {
    "data": {
      "results": [
        {
          "id": "857",
          "title": "Prof",
          "url_id": "857-massi-pontil",
          "position": "Professor of Computational Statistics & Machine Learning",
          "full_name": "Massi Pontil",
          "last_name": "Pontil",
          "department": "Dept of Computer Science",
          "first_name": "Massi",
          "has_thumbnail": true,
          "research_fields": [
            "Information systems",
            "Artificial intelligence",
            "Machine learning"
          ],
          "has_collaboration_data": true
        }
      ],
      "pagination": {
        "page": 1,
        "total": 1832,
        "per_page": 25,
        "total_pages": 74
      }
    },
    "status": "success"
  }
}

About the Ac API

Search and Filter UCL Researchers

The search_researchers endpoint accepts a query string matched against researcher names, positions, bios, research interests, and teaching activities. Results are paginated (1–100 per page via per_page) and sorted by relevance when a query is supplied, or alphabetically by last name when no query is given. Two optional filters narrow results further: department accepts values like 'Dept of Computer Science' exactly as they appear on UCL Profiles, and field_of_research accepts tags such as 'Artificial intelligence' or 'Neurosciences'. The pagination object in the response exposes page, per_page, total, and total_pages for reliable cursor-style iteration.

Detailed Researcher Profiles

Once you have a url_id from search results (e.g. '857-massi-pontil'), pass it to get_researcher to retrieve the full profile. Returned fields include full_name, first_name, last_name, title, position, department, email (or null if not publicly listed), orcid_id (or null if not listed), and a publications array of up to 100 recent works sorted by date. The id field carries the numeric researcher identifier used internally by UCL Profiles.

Coverage and Scope

The API covers researcher profiles listed on profiles.ucl.ac.uk. Data reflects what each researcher has made publicly available on their profile, meaning some fields — particularly email and orcid_id — may be absent for a given individual. Department and field-of-research filter values must match exactly as they appear on UCL Profiles; partial or approximate strings are not supported for those parameters.

Reliability & maintenance

The Ac API is a managed, monitored endpoint for profiles.ucl.ac.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when profiles.ucl.ac.uk 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 profiles.ucl.ac.uk 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?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Find UCL academics working in a specific research area such as 'Machine learning' using field_of_research filter
  • Build a contact directory of UCL department staff with publicly listed email addresses
  • Retrieve ORCID IDs for UCL researchers to cross-reference publication records in external databases
  • Enumerate all researchers in a specific department like 'Dept of Statistics' for institutional reporting
  • Identify potential collaborators by querying bios and research interests with a keyword search
  • Pull recent publication lists for UCL academics to monitor output in a subject area
  • Map researcher distribution across departments using paginated search with no query and per-department filtering
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does UCL provide an official developer API for researcher profiles?+
UCL does not publish a documented public developer API for profiles.ucl.ac.uk. The Parse API is an independent way to access that profile data programmatically.
What does `get_researcher` return for email and ORCID, and when are those fields missing?+
Both email and orcid_id return null when the researcher has not publicly listed them on their UCL profile. There is no fallback or alternative value — the field will be present in the response object but set to null.
How strictly must department and field_of_research values match?+
Both filters require an exact string match against the values used on UCL Profiles (for example, 'Dept of Computer Science' rather than 'Computer Science'). Submitting a partial or differently-capitalised string will return no results for that filter. Running a broad search_researchers call first and inspecting the department field in results is the most reliable way to confirm the exact string to use.
Does the API return a researcher's full publication list?+
get_researcher returns up to 100 most recent publications per researcher. Publications beyond that limit are not currently returned. You can fork this API on Parse and revise it to add pagination or extended publication retrieval if your use case requires a complete list.
Can I retrieve information about UCL research groups, grants, or projects?+
Not currently. The API covers researcher profiles, including positions, departments, fields of research, and recent publications. Group pages, grant records, and project listings are not exposed. You can fork this API on Parse and revise it to add endpoints covering those resource types.
Page content last updated . Spec covers 2 endpoints from profiles.ucl.ac.uk.
Related APIs in EducationSee all →
phdportal.com API
Search and discover PhD programmes across 19,000+ opportunities worldwide from PhDportal.com, filtering by your research interests and preferred locations. Access detailed programme information including specifics about each doctoral offering to help you find the perfect fit for your academic goals.
phdscanner.com API
Search and browse PhD opportunities and professor postings from PhDScanner.com to find programs that match your academic interests and career goals. Filter through detailed opportunity listings to compare research areas, institutions, and supervisors all in one place.
ucas.com API
Search and explore UK university courses, apprenticeships, and scholarships all in one place, while discovering detailed information about education providers and their offerings. Find the perfect educational path by filtering courses and apprenticeships by your preferences and accessing comprehensive provider details to inform your decisions.
pewresearch.org API
Search and retrieve Pew Research Center publications, reports, and expert profiles across a wide range of topics, including technology, politics, science, religion, and social trends. Access detailed report content, key findings, charts, and methodology information, and filter results by topic, format, or region to stay informed on the latest research and data.
scholarshipportal.com API
Search and discover scholarships, degree programmes, and universities across StudyPortals' global education database, with the ability to filter by countries, disciplines, and other criteria. Get detailed information about specific scholarships and programmes to compare educational opportunities that match your academic interests.
ratemyprofessors.com API
Search for professors by name and retrieve their ratings, reviews, and detailed profiles — including aggregate scores, difficulty ratings, student tags, and course-level feedback.
timeshighereducation.com API
Access Times Higher Education data including global university rankings across dozens of subject areas, detailed university profiles with scoring breakdowns, academic job listings, and site-wide search for articles and university pages.
usreps.org API
Access data from usreps.org.