Bachelorsportal APIbachelorsportal.com ↗
Search and retrieve bachelor's degree programmes worldwide via the Bachelorsportal.com API. Get tuition fees, scholarships, university details, and more.
What is the Bachelorsportal API?
The Bachelorsportal.com API provides access to bachelor's degree programme listings across institutions worldwide through 2 endpoints. Use search_programmes to filter programmes by country, discipline, or free-text query and get back summaries covering fees, duration, and ratings. Use get_programme_details to retrieve full programme records including scholarships, start dates, and programme descriptions by numeric programme ID.
curl -X GET 'https://api.parse.bot/scraper/1e3cdbf7-300a-4baf-9281-85a82398d585/search_programmes?page=1&query=computer+science&country=30&page_size=10&discipline=281' \ -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 bachelorsportal-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.
"""Walkthrough: Bachelorsportal SDK — search programmes and drill into details."""
from parse_apis.bachelorsportal_com_api import Bachelorsportal, ProgrammeNotFound
client = Bachelorsportal()
# Search for computer science programmes, capped at 5 results.
for prog in client.programme_summaries.search(query="computer science", limit=5):
print(prog.title, "-", prog.university_name, f"({prog.tuition_fee_amount} {prog.tuition_fee_currency}/yr)")
# Drill down: take the first result and fetch full details via typed navigation.
hit = client.programme_summaries.search(query="engineering", limit=1).first()
if hit is not None:
detail = hit.details()
print(detail.name, "|", detail.location)
print("Start date:", detail.start_date)
print(f"Scholarships ({len(detail.scholarships)}):")
for s in detail.scholarships[:3]:
print(f" {s.name} — {s.amount} {s.currency} from {s.funder}")
# Point lookup by a known programme ID.
try:
programme = client.programmes.get(id="82663")
print(programme.name, "|", programme.university_name)
except ProgrammeNotFound:
print("Programme not found")
print("exercised: programme_summaries.search / details / programmes.get")
Search bachelor's degree programmes with optional text query, country, and discipline filters. Returns paginated results with programme summaries including university, location, fees, duration, and ratings. Pagination is controlled by page and page_size; omitting all filters returns all programmes sorted by default relevance.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| query | string | Free-text search query for programme name or field of study (e.g. 'computer science', 'engineering'). |
| country | string | Country ID to filter programmes by location (e.g. '30' for United Kingdom). IDs correspond to the country_iso and internal identifiers used by the site. |
| page_size | integer | Number of results per page (1-50). |
| discipline | string | Discipline ID to filter programmes by field of study (e.g. '281' for Computer Sciences). Discipline IDs are returned in the search API facets. |
{
"type": "object",
"fields": {
"page": "current page number",
"total": "total number of matching programmes across all pages",
"page_size": "number of results per page",
"programmes": "array of programme summary objects with id, title, degree, university, location, fees, and rating"
},
"sample": {
"data": {
"page": 1,
"total": 68745,
"page_size": 5,
"programmes": [
{
"id": 82663,
"url": "https://www.bachelorsportal.com/studies/82663/computer-science.html",
"level": "bachelor",
"title": "Computer Science (Hons)",
"degree": "B.Sc.",
"rating": 4.4,
"summary": "The Computer Science (Hons) degree at Loughborough University equips you with practical and theoretical computer science skills.",
"location": "Loughborough, England, United Kingdom",
"is_online": false,
"country_iso": "GB",
"is_full_time": true,
"is_on_campus": true,
"is_part_time": false,
"review_count": 62,
"university_id": 452,
"duration_months": 36,
"university_name": "Loughborough University",
"tuition_fee_unit": "year",
"tuition_fee_amount": 10050,
"tuition_fee_currency": "GBP"
}
]
},
"status": "success"
}
}About the Bachelorsportal API
Search and Filter Programmes
The search_programmes endpoint accepts up to five parameters: query for free-text searches (e.g. 'computer science'), country for a numeric country ID (e.g. '30' for the United Kingdom), and discipline for a numeric field-of-study ID (e.g. '281' for Computer Sciences). Pagination is handled via page (1-based) and page_size (1–50 results per page). The response includes a total count of matching programmes across all pages alongside a programmes array where each entry carries the programme id, title, degree, university, location, fees, and rating.
Programme Detail Records
Once you have a numeric programme ID from search results, get_programme_details returns the full record for that programme. Key response fields include name, degree, location (city, region, and country), start_date in ISO format, a description text block, and a scholarships array. Each scholarship entry in the array carries name, amount, currency, and funder. The endpoint also returns a url pointing to the canonical Bachelorsportal.com page and a university_url linking to the institution's profile.
Data Coverage and Limitations
Country and discipline filters rely on IDs rather than plain strings — country IDs correspond to ISO country codes and discipline IDs are drawn from Bachelorsportal.com's internal taxonomy. No endpoint currently exposes a lookup table for these IDs, so you will need to derive them from sample results or Bachelorsportal.com's own navigation. Scholarship data is returned at the programme level, not aggregated across institutions, and coverage depends on what each university submits to the portal.
The Bachelorsportal API is a managed, monitored endpoint for bachelorsportal.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bachelorsportal.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 bachelorsportal.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 programme comparison tool that surfaces tuition
feesandratingside-by-side for multiple disciplines in a target country. - Populate an international student portal with
start_date,location, andscholarshipspulled fromget_programme_details. - Generate discipline-specific programme rankings by aggregating
ratingvalues acrosssearch_programmesresults. - Create scholarship discovery features by iterating programme IDs and surfacing entries from the
scholarshipsarray with non-nullamountvalues. - Build a country-based programme finder that accepts a user's preferred destination and maps it to the
countryfilter ID. - Feed a recommendation engine with structured programme data —
degree,discipline,fees, andduration— for matching to student profiles.
| 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 Bachelorsportal.com have an official developer API?+
What does the `scholarships` field in `get_programme_details` include?+
scholarships field is an array of objects, each containing name, amount, currency, and funder. It reflects scholarships associated with that specific programme listing, not a global scholarship search. Coverage varies by institution.How do I find the correct `country` or `discipline` ID to use as a filter in `search_programmes`?+
'30' for the United Kingdom) and discipline IDs follow the site's field-of-study classification (e.g. '281' for Computer Sciences). You can infer IDs by inspecting results from broad searches. You can fork this API on Parse and revise it to add a dedicated ID-lookup endpoint.Does the API return postgraduate or short-course listings?+
Is there a limit on how many results `search_programmes` can return per request?+
page_size accepts values between 1 and 50. For result sets larger than 50, you need to paginate using the page parameter alongside the total field in the response to determine how many pages exist. There is no bulk-export endpoint that bypasses pagination.