TotalJobs Scraper avatar

TotalJobs Scraper

Pricing

from $0.99 / 1,000 results

Go to Apify Store
TotalJobs Scraper

TotalJobs Scraper

Introducing the Total Jobs Scraper, a lightweight actor designed to efficiently extract job listings from Total Jobs. Fast and user-friendly. For optimal performance and to ensure reliable data collection, the use of residential proxies is strongly recommended. Start gathering job data today!

Pricing

from $0.99 / 1,000 results

Rating

5.0

(3)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

1

Bookmarked

86

Total users

10

Monthly active users

9 days ago

Last modified

Features

Limited permissions

Share

What does Totaljobs Scraper do?

Totaljobs Scraper collects live UK job listings from Totaljobs.com and saves them as structured records. Search by job title, skill, or UK location, or paste a Totaljobs search URL you already use. Each record includes the job title, company, location, salary text, parsed salary range, posting and expiry dates, direct job URL, company profile link, logo, listing description, result position, search totals, and listing metadata.

The Actor reads the search results pages only. It does not open individual job adverts, so a run returns listing-level data in seconds instead of spending one request per job.

Use it for recruiting research, salary benchmarking, hiring demand monitoring, lead generation, and job market analysis.

Why use Totaljobs Scraper?

  • Reads the search results pages and never opens a job advert, so 200 jobs take seconds rather than minutes.
  • Keeps salary text and parsed salary values, posting and expiry timestamps, company data, labels, skills, result position, and search totals.
  • Collects live UK vacancies across roles, sectors, and locations without manual copy-paste.
  • Starts from a keyword and location, or from an exact Totaljobs search URL with the filters you already selected.
  • Skips repeated listings by job identifier or job URL.
  • Saves each page as soon as it arrives, so a later page failure does not discard earlier results.
  • Retries temporary failures, switches network sessions when a request is refused, re-reads the page when the site changes its response format, and retries unavailable pages in a recovery pass before finishing.
  • Supports Apify schedules, proxy settings, dataset exports, webhooks, and no-code automations.

What data can you extract from Totaljobs?

FieldTypeDescription
job_idStringTotaljobs job identifier.
harmonised_idStringStable harmonised identifier used by Totaljobs.
titleStringJob title.
companyStringHiring company or recruitment agency.
company_idNumberTotaljobs company identifier when available.
locationStringJob location text, including postcode when shown.
postcodeStringPostcode shown in the listing when available.
salaryStringSalary or rate text as advertised.
salary_minNumberParsed lower salary value when the salary text contains one.
salary_maxNumberParsed upper salary value when the salary text contains one.
salary_currencyStringParsed currency such as GBP.
salary_periodStringParsed pay period: hour, day, week, month, or year.
date_postedStringHuman-readable posting age such as 3 days ago.
date_posted_isoStringISO posting timestamp.
expiry_date_isoStringISO expiry timestamp when available.
published_from_isoStringISO publish-from timestamp.
period_posted_isoStringISO period-posted timestamp.
job_urlStringDirect Totaljobs job listing URL.
company_urlStringTotaljobs company profile or company jobs URL.
company_logoStringCompany logo URL when available.
description_snippetStringShort description shown in the search result.
description_textStringClean description text from the search result.
source_search_urlStringSearch URL that produced the record.
source_pageNumberResult page number.
search_totalNumberTotal matching jobs reported by the search page.
search_page_countNumberTotal result pages reported by the search page.
search_contextStringSearch result context reported by Totaljobs.
position_on_pageNumberPosition of the listing on the result page.
position_absoluteNumberAbsolute listing position from the search data.
fingerprint_countNumberFingerprint count from the search data.
job_posting_sequenceNumberJob posting sequence from the search data.
is_featuredBooleanWhether the listing is marked featured.
is_premiumBooleanWhether the listing is marked premium.
is_newBooleanWhether the listing is marked new.
is_sponsoredBooleanWhether the listing is marked sponsored.
is_highlightedBooleanWhether the listing is highlighted.
is_top_jobBooleanWhether the listing is marked as a top job.
is_anonymousBooleanWhether the employer is anonymous.
is_traffic_from_partnerBooleanWhether the listing traffic comes from a partner site.
is_backfilledBooleanWhether the listing is backfilled.
is_cross_postedBooleanWhether the listing is cross-posted.
is_partnership_jobBooleanWhether the listing is a partnership job.
show_partnership_labelBooleanWhether a partnership label is shown.
partner_sourceStringPartner source name when available.
work_from_homeStringWork-from-home detail when the listing provides one.
skillsArraySkills attached to the listing when available.
labelsArrayListing labels from the search result.
top_labelsArrayTop labels from the search result.
unified_salaryObjectUnified salary data when Totaljobs provides it.
unified_travel_timeObjectUnified travel-time data when available.
travel_timeObjectTravel-time data when available.
cv_to_job_scoreNumberCandidate-to-job score when available.
sectionStringResult section assigned by Totaljobs.

How to use Totaljobs Scraper

  1. Open the Actor in Apify Console.
  2. Enter a keyword such as admin, software engineer, or data analyst.
  3. Optionally add a UK location such as London, Manchester, or Leeds.
  4. Set the maximum number of jobs and an optional posting-age filter.
  5. Run the Actor and download the dataset, or connect it to your workflow.

If you already have a filtered Totaljobs search URL, paste it into startUrl and leave the keyword and location fields empty. The URL replaces the keyword and location search.

Input Parameters

ParameterTypeRequiredDefaultDescription
keywordStringNoadminJob title, skill, or search phrase.
locationStringNo-UK location to narrow the search. Leave empty for broad UK results.
startUrlStringNo-Totaljobs search URL to use instead of keyword and location.
urlStringNo-Alias for startUrl for workflows that already provide a search URL.
postedWithinStringNo-Keep jobs posted in the last 1, 3, 7, 14, or 30 days.
results_wantedIntegerNo20Maximum number of jobs to save.
max_pagesIntegerNo5Maximum search result pages to process. Each page holds 25 jobs.
proxyConfigurationObjectNoApify residential proxyProxy settings for reliable access. Totaljobs refuses many datacenter addresses.

A supplied Totaljobs URL wins over keyword and location. Both are kept as separate search modes, so a URL run does not inherit a keyword or location value.

Usage Examples

Collect 20 admin jobs from across the UK:

{
"keyword": "admin",
"results_wanted": 20
}

Collect software engineer jobs in London:

{
"keyword": "software engineer",
"location": "London",
"results_wanted": 50,
"max_pages": 3
}

Custom Totaljobs search URL

Use a search URL with the filters already applied:

{
"startUrl": "https://www.totaljobs.com/jobs/data-analyst/in-manchester",
"results_wanted": 40,
"max_pages": 2
}

Recent jobs only

Keep only jobs posted in the last seven days:

{
"keyword": "warehouse operative",
"location": "Birmingham",
"postedWithin": "7",
"results_wanted": 30,
"max_pages": 4
}

Larger batch

Collect 200 jobs with a higher page cap:

{
"keyword": "admin",
"results_wanted": 200,
"max_pages": 10
}

Sample Output

{
"job_id": "108074354",
"harmonised_id": "6a9f2467-ada0-46ae-9f7e-3cfd368ae1f6",
"title": "Admin",
"company": "Job&Talent",
"company_id": 236510,
"location": "Chesterfield (S43), S43 3FG",
"salary": "Up to £13.80 per hour",
"salary_max": 13.8,
"salary_currency": "GBP",
"salary_period": "hour",
"date_posted": "27 days ago",
"date_posted_iso": "2026-10-02T13:12:49.617Z",
"expiry_date_iso": "2026-10-30T14:12:49.617Z",
"published_from_iso": "2026-10-02T13:12:49.617Z",
"period_posted_iso": "2026-10-02T13:12:49.617Z",
"job_url": "https://www.totaljobs.com/job/admin/job-talent-job108074354",
"company_url": "https://www.totaljobs.com/jobs/job%26talent?cmpId=236510&cmp=1",
"company_logo": "https://tjgliveassets.s3.eu-west-1.amazonaws.com/company-logos/68d5d7065d9743f687c6e38ba0d15a87.png",
"description_snippet": "Job&Talent is recruiting for a leading transport and logistics company in Chesterfield. They're hiring an admin staff member to coordinate daily transport activities, maintain records and communicate with drivers and customers.",
"description_text": "Job&Talent is recruiting for a leading transport and logistics company in Chesterfield. They're hiring an admin staff member to coordinate daily transport activities, maintain records and communicate with drivers and customers.",
"source_search_url": "https://www.totaljobs.com/jobs/admin",
"source_page": 1,
"search_total": 2541,
"search_page_count": 102,
"search_context": "seoRL",
"position_on_page": 1,
"position_absolute": 1,
"fingerprint_count": 0,
"job_posting_sequence": 0,
"is_featured": false,
"is_premium": false,
"is_new": false,
"is_sponsored": false,
"is_highlighted": false,
"is_top_job": false,
"is_anonymous": false,
"is_traffic_from_partner": false,
"is_backfilled": false,
"is_cross_posted": false,
"is_partnership_job": false,
"show_partnership_label": false,
"section": "main"
}

Tips for Best Results

  • Use role names that appear in real job adverts, such as data analyst, finance manager, or warehouse operative.
  • Add a location when you need a regional dataset. Leave it empty for broad UK coverage.
  • Start with 20 results before raising the limit. A larger run uses more pages and more proxy traffic.
  • Use postedWithin when you need fresh listings. The Actor asks Totaljobs for that age range and also checks the posting date before saving. When the reader fallback is used, the age filter is applied from the listing dates.
  • Raise max_pages when a narrow postedWithin range leaves fewer jobs than requested. The page cap can stop a run before it reaches results_wanted.
  • Raise max_pages for broad searches or narrow date filters. Each page holds 25 jobs, so 200 results need 8 pages.
  • Keep the default residential proxy setting. Datacenter addresses are often refused, while residential addresses return results.
  • Some listings do not publish salary, company logo, skills, labels, or an expiry date. Those fields are omitted instead of being saved as empty strings.

Integrations

  • Google Sheets: review, filter, and share job datasets in spreadsheets.
  • Airtable: build a searchable job or employer database.
  • Webhooks: send new results to your own systems after each run.
  • Make: build automated job monitoring workflows.
  • Zapier: trigger notifications, CRM updates, or recruiting pipelines.
  • Apify API: access datasets from your own applications and AI agents.

Export formats

  • JSON for applications, data pipelines, and AI workflows.
  • CSV for spreadsheet analysis.
  • Excel for business reporting.
  • XML for system integrations.

Frequently Asked Questions

Does the Actor visit each job advert?

No. It reads the data provided by each Totaljobs search results page. Runs stay listing-only, which keeps them fast and reduces load on the site.

Can I collect full job descriptions?

No. The Actor saves the listing description text shown in the search results, not the complete advert body. The description_snippet and description_text fields contain the available listing text.

Can I scrape a specific Totaljobs search URL?

Yes. Add the search page to startUrl. The Actor uses that URL instead of building a search from keyword and location. Filters that are part of the URL are kept.

How many jobs can I collect?

Set results_wanted to the number of records you need and raise max_pages when needed. The Actor stops when it reaches that target, reaches the last result page, or reaches the page cap.

Does the Actor remove duplicates?

Yes. Listings are deduplicated by job identifier or job URL before they are saved.

Why are some salary fields missing?

Some Totaljobs listings do not advertise a salary, or use text that cannot be parsed into a numeric range. The original salary text is still saved when it exists.

Why do I need a residential proxy?

Totaljobs refuses many datacenter addresses. A residential address gives the run a real network identity and returns results far more often. The Actor rotates network sessions when an address is refused, and falls back to a page reader when direct access is blocked.

What happens when a page fails?

The Actor retries temporary failures, moves to a fresh network session when an address is refused, and tries the JSON result list, the rendered page, and the reader fallback for every page. If a page still fails, it is queued and retried in a recovery pass with a fresh session. Records from earlier pages are already saved. Six failed pages in a row stop new pages, then the recovery pass retries them. The run finishes with partial results instead of discarding everything when some pages remain unavailable.

Why did the run finish with zero jobs?

If Totaljobs returns a valid empty search, the run completes with NO_RESULTS instead of failing. If every page was blocked or unreachable, the run still fails and reports the routes and status codes that were tried. A postedWithin filter can also produce NO_RESULTS_AFTER_FILTER when listings exist but none fall inside the requested age window.

Can I schedule repeat runs?

Yes. Use Apify schedules to run the Actor hourly, daily, weekly, or at another interval. Each run creates a new dataset.

Can I use the data in my own application?

Yes. Use the Apify API, webhooks, or dataset exports to connect the results to your own systems.

Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

Resources

This Actor is designed for legitimate collection of publicly available job data. Users are responsible for complying with Totaljobs.com terms of service, applicable data protection laws, and any other rules that apply to their use of the data. Use collected data responsibly.