Totaljobs Jobs Scraper avatar

Totaljobs Jobs Scraper

Pricing

from $1.80 / 1,000 jobs

Go to Apify Store
Totaljobs Jobs Scraper

Totaljobs Jobs Scraper

Search and export UK job vacancies from Totaljobs with salary, employer and location. Duplicate agency repostings are removed and pay is annualised for comparison.

Pricing

from $1.80 / 1,000 jobs

Rating

0.0

(0)

Developer

丂卩ㄖㄖҜㄚ

丂卩ㄖㄖҜㄚ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Export UK job vacancies from Totaljobs, with salary, employer, location and an annualised pay figure on every result.

🔍 What does Totaljobs Jobs Scraper do?

It runs a job search on Totaljobs and returns every vacancy it finds as a clean row of data, ready for a spreadsheet, a database or your own product.

Totaljobs serves four pages to a signed out visitor and then stops, so one search returns about 100 jobs however high you set maxResults. See how many jobs one search returns below for how to cover a market properly.

📊 What data can I extract from Totaljobs?

One item per job:

FieldDescription
jobId, title, urlTotaljobs id, title and direct link
employerHiring organisation or agency
locationTown, area and postcode district where given
salaryFrom, salaryToPublished figures, in the period below
salaryPeriodHourly, Daily, Weekly, Monthly or Annual
salaryAnnualisedFrom, salaryAnnualisedToEstimated annual equivalent for comparison
salaryRawThe salary text exactly as published
hasSalaryFalse when pay is hidden or stated as competitive
labelAny badge on the listing, such as Early applicant
postedText, postedApproxRelative age as shown, plus an absolute UTC estimate
searchKeywords, searchLocationThe search that produced the row
retrievedAtRetrieval timestamp

Annualised figures assume a 37.5 hour week and 52 weeks. They are for comparison, not contractual accuracy. postedApprox is derived from relative text like "3 days ago", so it is accurate to the day, not the minute.

💡 Why scrape Totaljobs?

Salary benchmarking. Build pay ranges by role and region using the annualised column.

Recruitment intelligence. Track which agencies and employers are hiring, and at what rates.

Job aggregation. Feed deduplicated listings into your own board or alerting product.

Market research. Measure hiring volume and pay movement over time by running on a schedule.

🚀 How do I use Totaljobs Jobs Scraper?

  1. Click Try for free.
  2. Enter what you are searching for and where, for example warehouse operative in Manchester.
  3. Narrow it with radiusMiles, salaryFrom or postedWithinDays.
  4. Cap the run with maxResults, then click Start.
  5. Download the results as JSON, CSV or Excel, or pull them from the API.

⬇️ Input

{
"keywords": "warehouse operative",
"location": "Manchester",
"radiusMiles": 10,
"postedWithinDays": 7,
"maxResults": 100
}

Set at least one of keywords or location.

FieldTypeDefaultWhat it does
keywordsstringnurseJob title or keywords
locationstringmanchesterTown, city or county
radiusMilesinteger10How far from that location to search
salaryFromintegerAnnual salary floor in GBP
postedWithinDaysintegerOnly jobs posted in the last N days
dedupeSimilarbooleantrueCollapse duplicate repostings of the same role
maxResultsinteger100Hard cap on billable results
proxyConfigurationobjectResidential GBResidential UK proxy, required in practice

⬆️ Output

Table view

Results arrive as a table you can sort and filter in the Console. There is a second view, Salary detail, that lines up the period and the annualised figures for comparing listings against each other.

JSON

A typical row:

{
"title": "Registered Nurse",
"employer": "Example Care Ltd",
"location": "Manchester",
"salaryRaw": "£30,000 to £35,000 per annum",
"postedText": "3 days ago",
"url": "https://www.totaljobs.com/job/123456",
"salaryAnnualisedFrom": 30000,
"salaryAnnualisedTo": 35000
}

Download it from the run as JSON, CSV or Excel, or read it straight from the API.

What is different about this one

Salaries you can actually compare. Job boards mix hourly, daily and annual pay in the same list. In a typical nursing search on Totaljobs, almost every result is quoted hourly. Put those next to a salaried role and any analysis is nonsense. This Actor returns the published figure, the period it refers to, and an annualised equivalent, so one column sorts correctly across the whole result set.

It survives their deploys. Totaljobs styles with emotion, so every CSS class is a build hash like res-mnyp7m that changes when they ship. Anything selecting on those breaks without warning. This anchors on their stable data-at automation attributes instead.

You are not billed for the same job twice. Agencies repost identical roles under several job ids. Rows with the same title, employer, location and salary are collapsed by default.

How many jobs one search returns

Totaljobs serves four pages to a signed out visitor and then stops, so a single search returns at most about 100 jobs no matter how high maxResults goes. The pagination on the site still advertises the full count, which is why a search that claims 18 pages will hand over four.

To cover a market properly, run several narrower searches rather than one broad one. Splitting by location is usually the cleanest, for example Manchester, Salford and Stockport separately instead of Manchester at a 20 mile radius. Splitting by keyword works too where the roles are distinct.

Proxy is required

Totaljobs blocks datacentre traffic. A residential UK proxy is set by default and is strongly recommended. Without one the run fails with a clear message rather than returning an empty dataset.

💰 How much does it cost?

You pay per job returned. Duplicate repostings are collapsed before charging, so an agency role listed under three job ids is charged once. Set maxResults to cap what a run can cost.

Runs that return nothing cost nothing. Paid Apify plans get a lower rate per job.

🔌 Integrations

Send results straight to Google Sheets, Slack, Airtable, Zapier, Make or your own webhook using Apify integrations. You can also trigger a run whenever something happens in another tool.

🔗 Using Totaljobs Jobs Scraper with the Apify API

curl -X POST "https://api.apify.com/v2/acts/spookyweb~uk-jobs-totaljobs/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": "warehouse operative", "location": "Manchester", "radiusMiles": 10, "postedWithinDays": 7, "maxResults": 100}'

Or with the Apify client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('spookyweb/uk-jobs-totaljobs').call({
keywords: 'warehouse operative',
location: 'Manchester',
radiusMiles: 10,
postedWithinDays: 7,
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Full detail is in the Apify API reference, and every run is also callable from the Python and JavaScript clients.

❓ FAQ

About 100. Totaljobs serves four pages to a signed out visitor and then stops, whatever its pagination claims, so a search advertising 18 pages hands over four. Raising maxResults does not change that. Run several narrower searches instead, splitting by town or by job title.

Why are duplicates removed before charging?

Agencies repost the same role under several job ids, and you should not pay three times for one vacancy. Rows with the same title, employer, location and salary are collapsed by dedupeSimilar, which is on by default, and the charge happens after that.

What does the annualised salary mean?

It is the published figure converted to a yearly equivalent so hourly, daily and annual roles sort in one column. The conversion assumes a 37.5 hour week and 52 weeks. It is for comparison rather than contractual accuracy, and salaryRaw always carries the original text.

Do I need a proxy?

A residential UK proxy is set by default and you should leave it on. Totaljobs blocks datacentre traffic, so without one the run fails with a clear message rather than quietly returning an empty dataset.

Do I need a Totaljobs account?

No. This reads the public search results, the pages any visitor sees without signing in, so there are no credentials to supply and none are ever stored.

This reads Totaljobs' public search results, the pages any visitor sees without an account. Job adverts are business information published by employers, not personal data about individuals.

Scraping publicly available data is legal in the UK, the EU and the US. Nothing here logs in or touches anything behind an account. If you go on to combine this data with personal data, that is on you to handle under GDPR. Apify's ethical scraping guide covers the wider picture.

👍 Your feedback

Found a bug, or want a field that is not here yet? Open an issue on the Actor's Issues tab. Requests that make the data more useful get built, and problems get fixed quickly.

🔎 You might also like

ActorWhat it does
Indeed Jobs ScraperIndeed listings with parsed salary figures, past the 15 job sign in wall
LinkedIn Jobs ScraperLinkedIn jobs with company enrichment and CV keyword matching, no login needed
Reed Jobs ScraperUK jobs from Reed with applicant counts and annualised salaries