GetMyFirstJob APIgetmyfirstjob.co.uk ↗
Access UK apprenticeship and early careers listings, employer profiles, occupation categories, and location filters from GetMyFirstJob.co.uk via 5 structured endpoints.
What is the GetMyFirstJob API?
This API exposes 5 endpoints covering UK apprenticeship and early career opportunities from GetMyFirstJob.co.uk, including full vacancy details, occupation categories, employer listings, and location filters. The search_opportunities endpoint lets you query by keyword or category path and returns title, employer, wages, location, level, and a direct link for each result. The get_opportunity_details endpoint retrieves structured fields including application deadline, training provider, posted date, and full job description.
curl -X GET 'https://api.parse.bot/scraper/5ad1bc88-a5db-4792-858a-b25a7e335fc9/search_opportunities?query=apprentice&category_path=discover-opportunities%2Foccupation-categories%2Fdetails%2Fadministration%2F1' \ -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 getmyfirstjob-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.
from parse_apis.getmyfirstjob_api import GetMyFirstJob, Opportunity, OpportunityDetail, Category, Employer, Location, OpportunityNotFound
client = GetMyFirstJob()
# Browse available occupation categories
for category in client.categories.list():
print(category.name, category.path)
# Search for opportunities with a keyword filter
for opp in client.opportunities.search(query="digital"):
print(opp.title, opp.employer, opp.location, opp.level)
# Get full details for a specific opportunity
detail = opp.details()
print(detail.title, detail.employer, detail.wages, detail.apply_by, detail.provider)
# List featured employers
for employer in client.employers.list():
print(employer.name, employer.path)
# List locations
for loc in client.locations.list():
print(loc.name, loc.path)
Search for apprenticeship and early career opportunities. Returns listings from the main search page or a specific occupation category page. An optional keyword filter is applied client-side to the returned results. Without category_path, returns all listings from the main search page (up to 10 SSR-rendered results). With category_path, returns listings for that specific occupation category.
| Param | Type | Description |
|---|---|---|
| query | string | Keyword to filter results by title, description, employer, or category. Applied client-side to the pre-rendered listings. |
| category_path | string | Category path from get_occupation_categories results (e.g. 'discover-opportunities/occupation-categories/details/computing-technology-and-digital/5'). When provided, fetches listings for that category. |
{
"type": "object",
"fields": {
"total": "integer total count of returned opportunities",
"url_used": "string URL that was fetched",
"opportunities": "array of opportunity objects with title, employer, description, link, and optional category, wages, location, level, postcode, posted_date, closes fields"
},
"sample": {
"data": {
"total": 10,
"url_used": "https://www.getmyfirstjob.co.uk/search",
"opportunities": [
{
"link": "opportunity/8ca49360-c5d1-4342-890e-5855283efb5f/d3dea269-2497-4b1f-8e2e-63985b5b0fdd",
"level": "Advanced Level 3",
"title": "L3 Digital Marketing & AI Executive Apprentice",
"closes": "26 Jun",
"category": "Creative and media",
"employer": "MTL Global Ltd",
"location": "Aylesford",
"postcode": "ME20 7HP",
"description": "Green Edge 360 is looking for a proactive Digital Marketing & AI Executive...",
"posted_date": "10 Jun"
}
]
},
"status": "success"
}
}About the GetMyFirstJob API
Searching Opportunities
The search_opportunities endpoint returns an array of opportunity objects from GetMyFirstJob.co.uk's main listing or a specific occupation category page. Each object includes title, employer, description, link, and optional fields: category, wages, location, and level. You can pass a query string to filter results by title, description, employer, or category client-side, and a category_path (sourced from get_occupation_categories) to scope results to a specific industry or occupation type. The response also includes a total count and the url_used for reference.
Vacancy Details
get_opportunity_details accepts a url_path from search_opportunities results and returns the full record for a single vacancy: title, employer, location, level, wages, apply_by (application deadline), posted_date (ISO format), provider (training provider), description (full job description text), and a metadata object containing additional key-value fields extracted from the detail page. If a vacancy is no longer available, the endpoint returns a stale_input flag rather than an error.
Categories, Locations, and Employers
get_occupation_categories returns a list of objects with name and path fields representing industries and occupations available on the platform. The path values are directly usable as category_path in search_opportunities. get_location_filters similarly returns UK cities and areas with their name and path — note these are informational pages and do not return pre-rendered job listings directly. get_employers_list returns featured employers with name and path to their detail pages.
The GetMyFirstJob API is a managed, monitored endpoint for getmyfirstjob.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when getmyfirstjob.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 getmyfirstjob.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?+
- Aggregate UK apprenticeship listings by occupation category for a careers discovery platform
- Monitor application deadlines (
apply_by) across live vacancies to alert prospective applicants - Build an employer directory of companies offering apprenticeships, sourced from
get_employers_list - Filter entry-level roles by
levelandwagesto surface opportunities matching a candidate's criteria - Map apprenticeship availability across UK regions using location data from
get_location_filterscombined with search results - Track new postings by comparing
posted_datefields from recurringsearch_opportunitiescalls - Identify training providers associated with specific vacancies via the
providerfield inget_opportunity_details
| 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 GetMyFirstJob.co.uk have an official developer API?+
What does `search_opportunities` return when no `category_path` is provided?+
category_path, the endpoint returns listings from the main search page across all categories. Each result includes title, employer, description, and link, with category, wages, location, and level included where available. Passing a query string filters these results by matching against title, description, employer, or category.Can the API return employer profile details beyond the name and path?+
get_employers_list currently returns each employer's name and path only — it does not expose full employer profiles, company descriptions, or contact information. You can fork this API on Parse and revise it to add an employer detail endpoint that fetches the full profile page for a given path.Does the API support pagination for large search result sets?+
What happens when a vacancy has been removed from the site?+
url_path is no longer available, get_opportunity_details returns a stale_input flag in the response rather than throwing an error. This lets you detect and handle expired listings in your application logic without breaking a processing pipeline.