UCAS APIucas.com ↗
Access UCAS course listings, apprenticeships, provider profiles, scholarships, and editorial content via 8 structured API endpoints. Filter by year, keyword, and more.
What is the UCAS API?
The UCAS API exposes 8 endpoints covering UK university courses, apprenticeships, providers, scholarships, and editorial content from ucas.com. Use search_courses to run keyword queries across course listings filtered by academic year (2025 or 2026), then drill into entry requirements, fees, and historic grade data with get_course_details. Each endpoint returns paginated, structured JSON ready for integration.
curl -X GET 'https://api.parse.bot/scraper/26ad71cd-9914-4a1e-8d6e-ca0122a45400/search_courses?page=0&year=2026&limit=5&query=engineering' \ -H 'X-API-Key: $PARSE_API_KEY'
Full-text search over UCAS course listings filtered by academic year. Returns paginated results with course title, provider, location, study options, and subject metadata. Each hit includes a courseId suitable for drilling into full details via get_course_details.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed). |
| year | string | Academic year to filter by. Only years with published course data return results (currently '2025' and '2026'). |
| limit | integer | Number of results per page. |
| query | string | Search keyword for courses (e.g. 'engineering', 'medicine'). |
{
"type": "object",
"fields": {
"hits": "array of course objects containing courseId, courseTitle, university, providerId, options, subjects, and more",
"page": "integer current page number",
"nbHits": "integer total number of matching courses",
"nbPages": "integer total number of pages"
},
"sample": {
"data": {
"hits": [
{
"scheme": "Undergraduate",
"options": [
{
"duration": "4 Years",
"startDate": "September 2026",
"studyMode": "Full-time",
"Qualification": "BEng (Hon)",
"courseOptionId": "e94a467c-e5fc-4a54-a4d2-163318eda956"
}
],
"courseId": "f9631483-60d5-dbea-4593-4fb95ead77d5",
"providerId": "3a023828-8d77-ecfa-dc21-2708f721b788",
"university": "University of Aberdeen",
"courseTitle": "Engineering",
"optionCount": 1,
"academicYear": 2026,
"providerLocation": "Aberdeen"
}
],
"page": 0,
"nbHits": 7007,
"nbPages": 200
},
"status": "success"
}
}About the UCAS API
Course and Provider Data
search_courses accepts a query string, an academic year ('2025' or '2026'), and pagination params (page, limit). Each hit in the hits array includes courseId, courseTitle, university, providerId, options, and subjects. Pass courseId to get_course_details to retrieve the full course object — provider info, study options, fee structures, contact details — alongside a historicGrades object that contains past entry grade data where available, or null if the course has no recorded history.
search_providers searches university and college names and addresses, returning providerId, name, region, address, qualifications, and studyModes per hit. Passing that providerId to get_provider_details returns a results array with course counts, provider codes, and profiles, plus an openDays array of scheduled open day events (may be empty).
Apprenticeships and Scholarships
search_apprenticeships queries UCAS apprenticeship listings and returns Title, EmployerName, Location, Salary, Duration, and industry details per hit — useful for building apprenticeship finders alongside traditional course searches. search_scholarships queries scholarship listings with fields including uid, name, awarding_body, value, deadline, nationality, and study_level. Passing a uid to get_scholarship_details returns both a raw scholarship string and a scholarship_parsed object with structured fields: name, value, deadline, nationality, study_level, and details.
Editorial Content
search_content queries UCAS articles and guide pages. The type parameter accepts 'article' or 'structure_content' to narrow results; omitting it returns all content types. Each hit includes title, url, summary, type, and author, making it straightforward to surface relevant UCAS guidance alongside course or scholarship data in a single interface.
The UCAS API is a managed, monitored endpoint for ucas.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ucas.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 ucas.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 UK course search tool that filters by subject keyword and academic year using
search_courses - Display entry requirements and historic grade thresholds for a specific course via
get_course_details - List upcoming open days for a university by calling
get_provider_detailsand reading theopenDaysarray - Aggregate apprenticeship opportunities by employer, salary, and location with
search_apprenticeships - Surface scholarship opportunities filtered by study level and nationality using
search_scholarships - Attach parsed scholarship value and deadline data to a student dashboard via
get_scholarship_details - Pull UCAS editorial articles related to student finance or applications using
search_contentwith a keyword query
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.
Does UCAS provide an official public developer API?+
Which academic years are available in `search_courses`?+
year parameter currently returns results for '2025' and '2026'. Querying other year values will return no results because only those years have published course data on UCAS at this time.Does `get_course_details` always return historic grade data?+
historicGrades field is returned as null when UCAS has no recorded entry grade history for that course. The field is populated as an object when historic data exists, so callers should handle both cases.Can I filter courses by subject category, entry grade, or study mode rather than just a keyword?+
search_courses filters by query keyword and year only. Subject, entry grade, and study mode data appear in the response fields (subjects, options) but cannot be used as query-time filters through the current endpoint. You can fork this API on Parse and revise it to add those filter parameters.