jobs.ac.uk Scraper — UK Academic & Research Jobs
Pricing
Pay per usage
jobs.ac.uk Scraper — UK Academic & Research Jobs
Extract live academic vacancies from jobs.ac.uk, the UK's main academic job board: lectureships, postdocs, fellowships, research and professional-services roles. Each record carries title, university, location, salary, closing date and apply URL.
Scrape current academic and research vacancies from jobs.ac.uk — the UK and Europe's leading academic job board.
What jobs.ac.uk data does this scraper extract?
Each result is one flat JSON record per job posting:
| Field | Meaning |
|---|---|
jobId | Stable source-side job identifier, parsed from the posting URL (e.g. DSC994) |
id | Alias of jobId — same value, kept for field-name consistency across our Actors |
title | Job title as posted |
company | Hiring institution / organisation, or null if the listing omits it |
location | Location / duty station; defaults to "United Kingdom" when the listing shows no city |
salary | Salary text as displayed on the listing, or "" when no salary is shown |
postedAt | ISO 8601 date (YYYY-MM-DD) the listing was placed, or null if it can't be parsed |
deadline | ISO 8601 date (YYYY-MM-DD) parsed from the listing's "Closes"/"Expires" chip, the raw text when it can't be parsed, or null when the listing shows no closing date |
url | Direct link to the posting |
How to scrape jobs.ac.uk with this Actor
- Click Try for free / Run — no login to the target site, no cookies, no proxies to configure.
- Adjust the input (keyword, filters,
maxItems) or keep the defaults. - Run it and export the dataset as JSON, CSV or Excel, or read it over the API.
Run it from your own code:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/jobs-ac-uk-scraper").call(run_input={"maxItems": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], "—", item["company"], item["url"])
Or a single HTTP call that runs the Actor and returns items in one response:
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~jobs-ac-uk-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"maxItems": 50}'
Input
| Field | Type | Default | Notes |
|---|---|---|---|
keywords | array | (built-in defaults) | List of keyword queries to fan across. Each keyword is searched separately and results are merged (deduped by URL). Leave empty to use the built-in research-oriented defaults: social science, politics, psychology, humanities, international development, research. |
maxItems | integer | 25 | Maximum number of job postings to return across all keyword queries (max 1000). Each job returned is billed as one result event — see Pricing. Set to 0 for no limit. |
pageSize | integer | 25 | How many results to request per keyword search (portal maximum is 25). Increase if you are running with a large maxItems and few keywords. |
postedSince | integer | 0 | Only keep postings placed within this many days (max 365). Applied locally after fetching — jobs.ac.uk has no server-side date filter. Listings whose date can't be read are always kept. Set 0 to disable. |
cacheTtlSeconds | integer | 1800 | (Advanced) How long to reuse a previous fetch instead of contacting jobs.ac.uk again, in seconds. Set to 0 to always fetch fresh data. |
Output example
{"jobId": "DSC994","id": "DSC994","title": "Admissions & Student Recruitment Coordinator","company": "University of Strathclyde","location": "Glasgow","salary": "£28,031 to £30,378 per annum","postedAt": "2026-07-02","deadline": "2026-07-08","url": "https://www.jobs.ac.uk/job/DSC994/admissions-and-student-recruitment-coordinator-828134"}
Integrations
Export the dataset as JSON, CSV or Excel from the Console, pull it over the Apify API (including run-sync-get-dataset-items for a single blocking call), wire it into Make/Zapier/n8n, or drive it from an AI agent via the Apify MCP server.
Pricing
Pay per event: $0.05 per Actor start and $0.004 per job returned. 100 jobs ≈ $0.45. No subscription, no rental — you pay only for what you fetch.
Use cases
- Academic job boards and PhD/postdoc alert bots
- University HR benchmarking
- Research-funding and hiring-trend analysis
- Career services for early-career researchers
FAQ
Is it legal to scrape jobs.ac.uk? This Actor reads only publicly available job postings — data any visitor can see without logging in. No personal data behind authentication is touched. Review the target site's terms and your local regulations for your specific use case.
Do I need an account on the target site? No. Postings are fetched from public pages/APIs — no login, cookies or session tokens.
How fresh is the data?
Every run fetches live listings. Results are cached for cacheTtlSeconds (default 30 min, set 0 to always hit the source live).
How many jobs can I get?
maxItems caps the run (set 0 where supported for no cap). Most sources paginate from newest to oldest.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and reliability fixes ship fast.