NotGoingToUni APInotgoingtouni.co.uk ↗
Access apprenticeship and training opportunities from NotGoingToUni.co.uk via 6 endpoints. Search by sector, company, location, and type with full detail retrieval.
What is the NotGoingToUni API?
The NotGoingToUni API provides access to apprenticeship and training listings from notgoingtouni.co.uk across 6 endpoints. search_opportunities lets you query live postings by keyword, location, sector, company, and opportunity type, returning paginated results with title, company logo, sector, location, slug, and featured status. Companion endpoints expose sector lists, company directories, opportunity type taxonomies, and full per-listing detail including deadlines and descriptions.
curl -X GET 'https://api.parse.bot/scraper/4823c7f8-30d6-43d3-a733-01c2eee806fa/search_opportunities?page=1&sort=latest&type=alternative-coursesdegrees§or=creative-media-design&company=ngtu-learn&keyword=engineer&location=London&per_page=21' \ -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 notgoingtouni-co-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.
"""NotGoingToUni SDK — search apprenticeships, browse sectors, drill into details."""
from parse_apis.not_going_to_uni_api import NotGoingToUni, Sort, OpportunityNotFound
client = NotGoingToUni()
# List sectors and pick the first one to explore
sector = client.sectors.list(limit=3).first()
print(f"Top sector: {sector.name} ({sector.total_openings} openings)")
# Search opportunities within that sector, sorted by latest
for opp in sector.search(sort=Sort.LATEST, limit=3):
print(f" {opp.title} — {opp.location} (featured={opp.is_featured})")
# Drill into full details from a search result
result = client.opportunitysummaries.search(keyword="engineer", limit=1).first()
if result:
detail = result.details()
print(f"Detail: {detail.title} at {detail.company}")
print(f" Description preview: {detail.description[:80]}")
# Browse featured opportunities from the homepage
for feat in client.featuredopportunities.list(limit=3):
print(f"Featured: {feat.title} by {feat.company}, deadline={feat.deadline}")
# Typed error handling for a non-existent slug
try:
client.opportunities.get(slug="nonexistent-opportunity-99999")
except OpportunityNotFound as exc:
print(f"Expected error: {exc}")
print("Exercised: sectors.list / sector.search / opportunitysummaries.search / details / featuredopportunities.list / opportunities.get")
Search for apprenticeship and training opportunities with optional filters. Returns paginated results with job cards containing title, company logo, sector, location, and slug. Pagination via page number; each page returns up to per_page results. Supports filtering by keyword, location, sector slug, opportunity type slug, and company slug.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| type | string | Opportunity type slug to filter results. Use slugs from list_opportunity_types endpoint. |
| sector | string | Sector slug to filter results. Use slugs from list_sectors endpoint. |
| company | string | Company slug to filter results. Use slugs from list_companies endpoint. |
| keyword | string | Search keyword to filter by job title or description. |
| location | string | Location name to filter results (e.g. 'London', 'Manchester'). |
| per_page | integer | Number of results per page. |
{
"type": "object",
"fields": {
"jobs": "array of opportunity summary objects with title, company_logo, sector, location, slug, url, is_featured",
"page": "integer current page number",
"total": "integer total number of matching opportunities",
"has_more": "boolean indicating if more pages are available",
"per_page": "integer results per page",
"meta_title": "string summary title from the site",
"next_page_url": "string URL for next page or null"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://notgoingtouni.co.uk/opportunities-details/level-6-machine-learning-ai-engineering-apprenticeship-11938",
"slug": "level-6-machine-learning-ai-engineering-apprenticeship-11938",
"title": "Level 6 Machine Learning (AI) Engineering Apprenticeship",
"sector": "Engineering",
"location": "York, North Yorkshire",
"is_featured": true,
"company_logo": "https://notgoingtouni.co.uk/public/uploads/provider/network-rail-241024-092106-logo.webp"
}
],
"page": 1,
"total": 251,
"has_more": true,
"per_page": 21,
"meta_title": "251 job opportunities",
"next_page_url": "https://notgoingtouni.co.uk/opportunities?getOpportuny=true&perPage=21&page=2"
},
"status": "success"
}
}About the NotGoingToUni API
Search and Filter Opportunities
The search_opportunities endpoint accepts up to eight optional parameters — keyword, location, sector, company, type, page, per_page, and sort — and returns a paginated list of opportunity objects. Each result includes title, company_logo, sector, location, slug, url, and is_featured. The response also surfaces total, has_more, and next_page_url for straightforward cursor-based traversal. Sector and type slugs for filtering can be discovered from the list_sectors and list_opportunity_types endpoints respectively; company slugs come from list_companies.
Detail and Taxonomy Endpoints
get_opportunity_details accepts a slug from search results and returns the full listing: title, company, description, a structured details object containing fields like opportunity_type, published_on, and deadline, plus the canonical url. The three listing endpoints — list_sectors, list_opportunity_types, and list_companies — each return an array with id, name, slug, and total_openings, giving you a live picture of where active postings are concentrated. list_companies additionally exposes status, object_type, and company_type.
Featured Listings
get_featured_opportunities returns up to eight promoted listings from the site homepage. Each object includes title, company, sector, location, slug, url, live_from, deadline, and is_featured. This endpoint requires no inputs and is useful for surfacing editorially selected roles without running a full search.
The NotGoingToUni API is a managed, monitored endpoint for notgoingtouni.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when notgoingtouni.co.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 notgoingtouni.co.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?+
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 an apprenticeship aggregator filtered by sector slug from
list_sectorsand location string - Monitor deadline fields from
get_opportunity_detailsto alert users before applications close - Populate a company profile page using
list_companiesdata alongside their active opening count - Track which sectors have the most live postings using
total_openingsfromlist_sectors - Surface featured apprenticeships on a careers widget using
get_featured_opportunities - Cross-reference opportunity types via
list_opportunity_typesto distinguish degree apprenticeships from advanced ones - Index full listing descriptions from
get_opportunity_detailsfor keyword search or semantic embeddings
| 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 NotGoingToUni.co.uk offer an official developer API?+
What does `get_opportunity_details` return beyond what `search_opportunities` provides?+
search_opportunities returns summary fields — title, company_logo, sector, location, slug, url, and is_featured. get_opportunity_details adds the full description text and a structured details object containing opportunity_type, published_on, and deadline, which are not present in search results.Can I filter search results by both sector and location simultaneously?+
search_opportunities accepts sector, location, type, company, and keyword as independent optional parameters, and they can be combined in a single request. Use slugs from list_sectors for the sector parameter and plain location name strings such as 'London' for the location parameter.Does the API return salary or pay rate information for listings?+
How many featured opportunities does `get_featured_opportunities` return, and can I request more?+
search_opportunities with the sort parameter is the more flexible option. You can also fork this API on Parse and revise it to expose additional filtering on featured status.