Jobsite UK Scraper at a glance
Jobsite UK Scraper is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes job id, title, employer, location and salary, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Jobs, Automation, Lead Generation
- Region
- Europe
- Pricing
- $1.80 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 30 options
Scrape Jobsite.co.uk job listings at scale by keyword, location, filters or URL. Extract 35+ structured fields per job, including titles, salaries and company details. Optional enrichment adds full descriptions, GPS coordinates, employment types and company profiles.
What Jobsite UK Scraper can do
- 35+ listing fields per job, straight from the search page: parsed salary (min, max, currency, period), employer, skills, cross-post count, and sponsorship flags, with no extra cost.
- Optional full-detail enrichment. Turn on fetchDetails to add the complete job description, GPS coordinates, employment type, valid-through date, apply type, and a company profile (benefits, industries, jobs count).
- Two ways to find jobs. Build a search from keyword, location, and filters, or paste one or more Jobsite.co.uk search-result URLs (the run paginates them) or single job-page URLs (the run scrapes them).
- Server-side filters that match the site's own facets. Keyword, location, job type, advertiser type, minimum salary with its own period, posted-within window, and sort order.
- One cap that matters. maxListings is the sole limit on job count (default 20, 0 for unlimited); maxPages is an optional extra safety ceiling, off by default.
- Resumable and checkpointed. Point resumeFromRunId at a previous run to collect only the delta, and a long unlimited run checkpoints its own progress so a platform restart continues instead of starting over.
Choose what to collect
These inputs let you configure Jobsite UK Scraper - Jobs, Salaries & Company Details. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | How to find jobs: build a search from filters, or paginate URLs you paste. |
locationsarray | Towns, cities, counties, or regions (Search mode). Examples: 'London', 'Manchester', 'Greater London', 'EC1'. One search runs per location. Leave empty for all of the UK. |
keywordsstring | Job title, skill, or company to search for. Example: 'nurse', 'java developer', 'project manager'. Leave empty to list all jobs in the location. |
jobTypestring | Contract / working arrangement filter. |
companyTypestring | Restrict to direct employers or recruitment agencies. |
advertiserTypestring | Alias of Advertiser type; when set it wins over it. |
minSalaryinteger | Lowest salary to include. Combined with the salary period below. Leave empty for no minimum. |
Show 23 more inputs
| Input | What it controls |
|---|---|
salaryTypestring | Unit for the minimum salary filter. |
salaryPeriodstring | Alias of Salary period; when set it wins over it. |
postedWithinstring | Only jobs posted within this many days. Leave as Any time for no date filter. |
postedWithinDaysstring | Alias of Posted within; when set it wins over it. 'any' means no date filter. |
sortBystring | Result ordering. |
radiusMilesinteger | Widen a location search to jobs within this many miles (0-100). Leave empty for the site default radius. Search mode only. |
urlsarray | Jobsite.co.uk URLs to scrape (URL mode): result lists (search, keyword, job type, filters?page=N, radius, company jobs pages) and single job pages. Filter fields above are ignored. Pagination starts at the page in the URL and walks forward. The pre-filled list holds one example of every supported shape. |
startUrlsarray | Alias of Search URLs: Jobsite.co.uk result-list or single job page URLs. When set, the run switches to URL mode and these URLs are used. |
detailModestring | fullDetails = fetch every job page (same as Fetch job details on; uses the residential route); fastListings = result-list data only. When set it wins over Fetch job details. |
includeContactHintsboolean | Harvest phone numbers and emails from job pages (with evidence) when details are fetched. Turn off to leave contacts empty. |
maxPagesinteger | Optional safety limit on pages walked per location/URL (25 jobs per page). Leave at 0 to walk the whole catalogue: the run stops at Max jobs, the site's own last page, or a repeat-page guard, not an artificial page cap. |
maxPagesPerSearchinteger | Alias of Max pages; when set it wins over it. |
maxListingsinteger | Total jobs to collect across all searches. This is the main limit. Set 0 for unlimited (bounded by Max pages). |
maxItemsinteger | Alias of Max listings; when set it wins over it. |
resumeFromRunIdstring | Optional. ID of a previous run of this actor (or a dataset ID). Jobs already in that dataset are skipped, so this run returns only NEW jobs (a delta). Combine both runs' datasets for the full set. Max jobs then counts only the new jobs. For a search you run repeatedly on a schedule, prefer Incremental mode below instead, it remembers state between runs automatically, no id to paste. |
incrementalModeboolean | Turn ON for a search you run repeatedly (e.g. on a daily schedule) to get only NEW and CHANGED jobs each run, instead of the whole list again. The actor remembers what it saw last time, keyed by State key below, or automatically by your search filters if left blank, and skips jobs that are unchanged. Different from Resume above: Resume finishes ONE interrupted/previous run by id; Incremental mode tracks the SAME recurring search automatically, run after run, with no id needed. |
stateKeystring | Optional label for Incremental mode's remembered state. Leave empty to derive it automatically from your search filters (mode/locations/keywords/jobType/companyType/minSalary/salaryType/postedWithin/sortBy/urls/fetchDetails), every run with the exact same filters then shares one baseline. Set a label when you want two schedules over the same filters to track independently, or to keep the baseline stable across a filter tweak. Ignored unless Incremental mode is on. |
emitUnchangedboolean | Incremental mode only. Include jobs that have not changed since the last run (changeType: UNCHANGED) in the output. Off by default, a recurring run normally returns only NEW/UPDATED jobs, which is both cheaper and easier to consume. |
emitExpiredboolean | Incremental mode only. When this run reaches a natural, uncapped end for every search (no Max jobs/Max pages truncation, and not a Resume run), emit one row per job seen in a previous run but not found in this one (changeType: EXPIRED, e.g. no longer listed). Skipped automatically on a capped or resumed run, since those cannot prove a job is really gone rather than just not reached yet. Off by default. |
ignoreFieldsForChangesarray | Incremental mode only. Field names (for example salary or company; use a dotted name such as location.region for a nested value) that must not count as a change. A job whose only difference is in these fields stays UNCHANGED instead of UPDATED, and they are left out of changedFields. The fields still appear in the output. Rolling-time and search-relative fields are already ignored automatically. Changing this list never re-bills the stored baseline. Ignored unless Incremental mode is on. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
jobIdJob ID (text)titleTitle (text)employerEmployer (object)locationLocation (object)salarySalary (object)datePostedPosted (text)sourceSiteSource (text)jobUrlURL (link)changeTypeChange (Incremental mode) (text)employmentTypeEmployment (array)industryIndustry (text)jobLocationTypeWork type (text)Show 10 more fields
validThroughValid through (text)applyTypeApply (text)contactPhonesContact phones (array)contactEmailsContact emails (array)descriptionTextDescription (text)companyCompany (object)changedFieldsChanged fields (array)firstSeenAtFirst seen (text)lastSeenAtLast seen (text)contactsContacts and evidence (object)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"rowType": "job",
"sourceSearchUrl": "https://www.jobsite.co.uk/jobs/in-bristol",
"jobId": 500000001,
"harmonisedId": "00000000-0000-0000-0000-000000000000",
"jobUrl": "https://www.jobsite.co.uk/job/assistant-warehouse-operative/sample-company-job500000001",
"sourceSite": "Totaljobs.com",
"title": "Assistant Warehouse Operative",
"datePosted": "2026-08-14T09:00:00.000Z",
"publishFromDate": "2026-08-14T09:00:00.000Z",
"publishToDate": "2026-09-11T09:00:00.000Z",
"employer": {
"id": 1000001,
"name": "Sample Company",
"url": "https://www.jobsite.co.uk/jobs/sample-company?cmpId=1000001&cmp=1",
"logoUrl": "https://www.jobsite.co.uk/CompanyLogos/00000000000000000000000000000000.png",
"isAnonymous": false
},
"location": {
"text": "Sample Town, Sample County (BA0), BA0 0AA",
"postalCode": "BA0 0AA",
"locality": null,
"region": null,
"country": null,
"latitude": null,
"longitude": null,
"streetAddress": null
},
"salary": {
"rawText": "£26,000 - £29,500 per annum",
"min": 26000,
"max": 29500,
"currency": "GBP",
"period": "year"
},
"workFromHome": null,
"skills": [
"Sample Skill A",
"Sample Skill B"
],
"textSnippet": "Short preview text pulled from the listing appears here.",
"crossPostedCount": 1,
"isSponsored": false,
"isHighlighted": false,
"isTopJob": false,
"isTrafficFromPartner": false,
"partnership": {
"isBackfilled": true,
"isCrossPosted": false,
"isPartnershipJob": true,
"sourceSiteFriendlyName": "Totaljobs.com"
},
"travelTime": null,
"description": null,
"descriptionText": null,
"validThrough": null,
"employmentType": null,
"industry": null,
"directApply": null,
"applyType": null,
"jobLocationType": null,
"applicantLocationRequirements": null,
"externalId": "00000000-0000-0000-0000-000000000000",
"contractType": null,
"workType": null,
"company": null,
"contactPhones": [],
"contactEmails": [],
"detailFetched": false
}Ways to use this data
- Job board aggregators: mirror Jobsite.co.uk listings into your own site or app alongside other sources.
- Salary and market researchers: build a dataset of parsed salary ranges by role, location, and job type.
- Recruitment agencies and sales teams: track which companies are hiring, and for what, to prioritize outreach.
- Compliance and brand teams: monitor a company's own postings for accuracy and recruitment marketing.
- Job alert products: schedule the actor with Incremental mode on and pipe only new matching roles into your app.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Jobsite UK Scraper return?
The documented output for Jobsite UK Scraper includes job id, title, employer, location, salary, posted, source and url. Availability of each field depends on the source page and the selected mode.
How much does Jobsite UK Scraper cost?
It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get only new or changed jobs on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated jobs, and unchanged ones are not returned or billed unless you turn on emitUnchanged.
Why did my fetchDetails run only return listing fields?
fetchDetails also needs Residential GB, which the actor sets up for itself. If your account has no residential access, the run logs a warning, turns detail enrichment off for that run, and returns the listing fields only instead of failing.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear, or Airtable.
