VOOZH about

URL: https://apify.com/memo23/s1jobs-scraper

โ‡ฑ s1jobs.com Scraper (/w EMAILS) ยท Apify


Pricing

from $2.90 / 1,000 results

Go to Apify Store

s1jobs.com Scraper (/w EMAILS)

Scrape Scottish job postings (all sectors) from s1jobs.com โ€” title, salary, employer, location, real lat/lng coordinates, posted/closing dates, full description, structured skills, and the actual recruiter apply URL or apply email. Works with any listing or vacancy URL. JSON or CSV out.

Pricing

from $2.90 / 1,000 results

Rating

0.0

(0)

Developer

๐Ÿ‘ Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

20

Monthly active users

13 days ago

Last modified

Share

s1jobs.com Scraper

Turn s1jobs.com into structured Scottish vacancy data โ€” across every sector. Scrape every job from any s1jobs listing URL โ€” title, salary band, employer (with logo, accreditations, URN), location with real lat/long coordinates, posted/closing dates, full description, structured skills, contract type, and the actual recruiter apply URL or apply email โ€” pulled straight from s1jobs' public JSON API. JSON or CSV out, no compute charge per run, just per result.

How it works

๐Ÿ‘ How s1jobs Scraper works

โœจ Why use this scraper?

Tracking the Scottish job market across every sector โ€” engineering, healthcare, hospitality, public sector? Building salary benchmarks across regions? Need a clean dataset of Scottish vacancies without scrolling s1jobs manually?

  • ๐ŸŽฏ Two starting points. Paste an s1jobs listing URL (/jobs/{location}/, /jobs/{sector}/{location}/) or a direct vacancy URL โ€” both classified automatically.
  • โšก Public JSON API as the data source. Each vacancy comes from /api/job/{id} โ€” far richer than HTML scraping (structured skills, accreditations, sponsorship flags, apply method, employer URN, premier vs standard advert type).
  • ๐Ÿ“ Real coordinates, not just postcodes. Optional one-fetch-per-vacancy pull of lat/lng from the page's JSON-LD geo block.
  • ๐Ÿ“ง Apply URL or email captured. No JS evaluation, no click-through resolver โ€” /api/job/{id} returns the recruiter destination directly (Aplitrak, PeopleHR, Workday, JobTrain, employer's own ATS, etc.) or the recruiter's email.
  • ๐Ÿ‡ฌ๐Ÿ‡ง All sectors, all regions of Scotland. s1jobs is the largest Scottish-only job board โ€” engineering, healthcare, charity, hospitality, public sector, retail.
  • ๐Ÿ“ค Clean exports. One row per vacancy with company enrichment merged in. JSON + CSV exported automatically.

๐ŸŽฏ Use cases

TeamWhat they build
Recruitment / agenciesDaily new-vacancy feeds across Scotland, sliced by sector or region
Compensation & benefitsSalary benchmarks by sector, region, and contract type for Scotland
Talent acquisitionCompetitive intelligence on what other Scottish employers are paying
Researchers / journalistsScottish labour-market datasets across all sectors
Workforce strategySkills-demand mapping using the structured skills[] and coreSkills[] arrays
ATS aggregatorsReal recruiter apply URLs (Aplitrak, Workday, PeopleHR, etc.) for redirect-and-track use cases

๐Ÿ“ฅ Supported inputs

You can pass two kinds of URL in startUrls. Each URL is classified automatically.

URL patternBehaviour
https://www.s1jobs.com/jobs/{location}/Listing by location (e.g. /jobs/glasgow/)
https://www.s1jobs.com/jobs/{sector}/{location}/Listing by sector + location (e.g. /jobs/accountancy/glasgow/)
https://www.s1jobs.com/jobs/{location}/{contract}/Listing by location + contract type (e.g. /jobs/glasgow/permanent/)
https://www.s1jobs.com/job/{slug}-{numeric-id}Vacancy detail โ€” fetched via /api/job/{id} JSON

Easiest workflow: apply your filters on s1jobs.com in the browser, copy the URL out of the address bar, paste into startUrls.

Not supported:

  • Company profile URLs as a starting point (they're fetched automatically as enrichment when org enrichment is on)
  • Hosts outside s1jobs.com / www.s1jobs.com

โš ๏ธ Proxy requirement

s1jobs.com IP-blocks many cloud / datacenter / generic proxies. You'll want a UK residential proxy. The actor defaults to Apify Residential pinned to country: GB; if you see consistent connection timeouts, you may need to bring your own pool (Evomi, BrightData, Smartproxy, etc. โ€” any UK residential exit node works).

๐Ÿ”„ How it works

  1. Classify each startUrl as a listing URL or a single vacancy URL.
  2. Walk listing pagination (?page=2, ?page=3, โ€ฆ) until <a rel="next"> disappears or maxItems is reached.
  3. Fetch each vacancy via /api/job/{id} JSON โ€” all the structured data in one call.
  4. Optionally fetch the vacancy's HTML page once to extract lat/lng coordinates (only field not in the API).
  5. Optionally fetch each unique company profile page once for the company website + a fuller description.
  6. Push one merged row per vacancy to the dataset and export data.csv + data.json at the end.

โš™๏ธ Input parameters

ParameterTypeDefaultDescription
startUrlsarray["https://www.s1jobs.com/jobs/glasgow/"]s1jobs listing URLs and/or vacancy URLs. Mix both freely.
enrichOrganisationbooleantrueFetch each unique company profile once for companyWebsite, companyDomain, and a fuller companyDescription. The vacancy JSON API already includes the company name, logo, accreditations and a short description โ€” disable this if those are enough.
includeCoordinatesbooleantrueFetch each vacancy's HTML page once to extract lat/lng. Disable to save one HTTP call per vacancy when coordinates aren't needed.
postedWithinHoursinteger(none)Only return rows posted in the last N hours (24 = last day, 72 = last 3 days). Empty/0 = all. Ideal for daily monitoring runs that only want fresh postings.
maxItemsinteger1000Hard cap on jobs collected. s1jobs has thousands of jobs across Scotland; this cap limits billing.
maxConcurrency / minConcurrencyinteger10 / 1Parallel HTTP request limits.
maxRequestRetriesinteger5Retries before a request is given up.
proxyobjectApify residential, GBUK residential proxy strongly recommended (s1jobs IP-blocks many other proxies).

๐Ÿ“Š Output overview

Each scraped vacancy is one single dataset row of type: "job". When enrichOrganisation is true, the company's website, domain and a fuller description are merged into the same row โ€” no separate organisation rows, so the dataset row count equals the job count exactly.

๐Ÿ“ฆ Output sample

One merged row per vacancy (trimmed to the most useful fields):

{
"type":"job",
"jobId":"126751069",
"vacancyUuid":"2b47dff6-3bc0-4752-9a9d-b3a6ee20a109",
"jobReference":"038",
"jobUrl":"https://www.s1jobs.com/job/scheduling-lead-126751069",
"title":"Scheduling Lead",
"companyName":"Redress Scotland",
"companyId":3037932,
"companyUrn":"RED54621GS",
"companyType":"Employer",
"companyConfidential":false,
"companyProfileUrl":"https://www.s1jobs.com/companies/redress-scotland-3037932",
"logoUrl":"https://www.s1jobs.com//ui/img/shared/company_logos/3dd3725857bbc09e422bc941282b2906.png",
"companyImages":["https://www.s1jobs.com/ui/img/shared/company_profiles/..."],
"companyAccreditations":[],
"companyDescription":"Redress Scotland is the body responsible for ...",
"location":"Bearsden, East Dunbartonshire",
"addressLocality":"Bearsden",
"postcode":"G611AA",
"coordinates":{"latitude":55.9195,"longitude":-4.33371},
"salary":{
"currency":"GBP",
"min":49401,
"max":59152,
"rate":null,
"raw":"ยฃ49401 - ยฃ59152 per annum"
},
"contractType":"Permanent",
"hours":"Full",
"workingHourPattern":null,
"coreSkills":["Admin / Secretarial / PA"],
"primaryCoreSkill":"Admin / Secretarial / PA",
"specialisms":[],
"skills":[
"Scheduling and calendar management",
"Project coordination",
"Remote work proficiency",
"Time management",
"Information security and confidentiality"
],
"jobSkills":{"skills":[...],"computer_skills":[],"soft_skills":[],"language_skills":[],"other_skills":[...]},
"accreditations":[],
"publicSectorType":null,
"postedDate":"Mon, 27 Apr 2026 07:08:07 GMT",
"closingDate":null,
"description":"<div><p>Redress Scotland have been operational now for a few years...</p></div>",
"applyType":"external",
"applyMethod":"url",
"applyUrl":"https://www.s1jobs.com/job/scheduling-lead-126751069",
"applyEmail":null,
"externalApplyUrl":"https://www.aplitrak.com/?adid=bWljaGVsbGUubmFpcm4uMjAxMzUuNDU0QHJlZHJlc3NzY290bGFuZC5hcGxpdHJhay5jb20",
"requiresCv":false,
"apprenticeship":null,
"graduateSuitable":false,
"immediateStart":null,
"isSponsored":true,
"isFeatured":false,
"advertType":"Premier",
"jobBoost":"S1 Social Boost",
"talentPoolId":null,
"companyWebsite":null,
"companyDomain":null,
"scrapedAt":"2026-05-09T00:14:52.114Z"
}

๐Ÿ—‚ Key output fields

GroupFields
Identifierstype, jobId (numeric), vacancyUuid (s1's internal UUID), jobReference (employer's own ref), jobUrl, scrapedAt
Roletitle, description (HTML), coreSkills[], primaryCoreSkill, specialisms[], skills[], jobSkills (full structured object), accreditations[], publicSectorType
DatespostedDate, closingDate
EmployercompanyName, companyId (numeric), companyUrn (S1's internal employer reference), companyType, companyConfidential, companyProfileUrl, logoUrl, companyImages[], companyAccreditations[]
Locationlocation (display string), addressLocality, postcode, coordinates.{latitude,longitude} (when includeCoordinates: true)
Compensationsalary.{currency,min,max,rate,raw}, contractType, hours, workingHourPattern
Apply flowapplyType (email / external / unknown), applyMethod (s1's raw value: "url" / "email"), applyUrl (the s1jobs page), applyEmail, externalApplyUrl (real recruiter destination โ€” Aplitrak, PeopleHR, employer ATS, etc.)
Advert flagsrequiresCv, apprenticeship, graduateSuitable, immediateStart, isSponsored, isFeatured, advertType (Premier / Standard), jobBoost, talentPoolId
Company enrichment (merged into the same row when enrichOrganisation: true)companyDescription, companyWebsite, companyDomain

โ“ FAQ

Why does the actor need a UK residential proxy? s1jobs.com IP-blocks a wide range of cloud, datacenter, and generic proxy networks. Direct connections from cloud-hosted runners frequently time out. A UK residential proxy (Apify RESIDENTIAL group with country: GB, or your own pool) is the most reliable path. The actor's default proxy config already pins this.

Where does the apply URL come from? From s1jobs' public JSON API: /api/job/{id} returns application_url.application_url directly when application_method is "url", and application_email_address when it's "email". No JS evaluation, no click-through resolver needed.

Why is vacancyUuid different from jobId? jobId is the numeric ID in the URL (e.g. 126751069); vacancyUuid is s1jobs' internal UUID for the same row (e.g. 2b47dff6-3bc0-4752-9a9d-b3a6ee20a109). Both come from the API; use jobId as the stable join key.

Can I scrape private pages or applicant data? No. The scraper accesses only publicly available pages and the public /api/job/ endpoint โ€” no logged-in content, no recruiter-only views, no candidate data.

How do I limit results? Set maxItems. The actor stops walking pagination as soon as the cap is reached, so a maxItems: 100 run typically only fetches 3โ€“4 listing pages.

๐Ÿ’ฌ Support

๐Ÿ›  Additional services

  • Custom output shape, additional fields, or one-off datasets: muhamed.didovic@gmail.com
  • Need a similar scraper for other UK or regional job boards (CharityJob, Goodmoves, TotalJobs, etc.)? Drop an email.
  • For API access (no Apify fee, just a usage fee for the API): muhamed.didovic@gmail.com

๐Ÿ”Ž Explore more scrapers

If this s1jobs Scraper was useful, see other scrapers and actors at memo23's Apify profile โ€” covering job boards, real estate, social media, and more.


โš ๏ธ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by s1jobs, Newsquest Media Group, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available vacancy pages, the public /api/job/{id} JSON endpoint, and public company-profile pages on s1jobs.com โ€” no authenticated endpoints, recruiter-only features, or content behind a s1jobs login. Users are responsible for ensuring their use complies with s1jobs.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.


SEO Keywords

s1jobs scraper, scrape s1jobs, s1jobs api, s1jobs.com scraper, Apify s1jobs, scottish jobs scraper, scotland jobs api, scotland recruitment data, scottish vacancies scraper, glasgow jobs scraper, edinburgh jobs scraper, aberdeen jobs scraper, scottish salary benchmark, scotland labour market data, scottish hiring trends, scotland job board scraper, newsquest jobs scraper, charityjob alternative scraper, goodmoves alternative scraper, totaljobs alternative scraper, scottish job listings api

You might also like

Goodmoves.org Jobs Scraper

memo23/goodmoves-scraper

Scrape Scottish charity-sector job postings from Goodmoves.org โ€” title, salary, workplace type, employer, posted/closing dates with time, full description, real lat/lng coordinates, OSCR charity number and apply email or apply URL. Works with any listing or vacancy URL. JSON or CSV out.

๐Ÿ‘ User avatar

Muhamed Didovic

20

Highland Jobs (.scot) Scraper (/w EMAILS)

memo23/highlandjobs-scraper

crape every Scottish Highlands & Islands vacancy from highlandjobs.scot via the public WP-JSON API. Title, employer, location, salary (parsed), categories, posted date, full description HTML, apply email/URL. 204 jobs in ~3 requests. JSON or CSV out.

๐Ÿ‘ User avatar

Muhamed Didovic

4

CharityJob.co.uk [Only$1.5๐Ÿ’ฐ] Scraper (/w EMAILS)

memo23/charityjob-scraper

[Only$1.5๐Ÿ’ฐ] Scrape UK charity-sector job postings from CharityJob.co.uk โ€” title, salary band, workplace type, employer, posted/closing dates, full description. Works with any search URL, filter combo or single job URL. Optional company enrichment adds website domain and About copy. JSON or CSV out.

๐Ÿ‘ User avatar

Muhamed Didovic

14

s1jobs Scraper โ€“ Scotland & UK Jobs, Salaries & Details

abotapi/s1jobs-com-scraper

Scrape jobs from s1jobs.com across Scotland and the UK. Search by keyword, location, or URLs. Returns title, parsed salary band, company, logo, GPS location, skills, contract type, and 90+ fields per job, with optional full description, postcode, and apply links.

Google Jobs Scraper - Listings, Salary, Employer & Apply Links

santhej/google-jobs-scraper

Scrape Google Jobs at scale: job title, employer, location, salary, contract type, posting date & source/apply links. Any role or city, 190+ countries. Clean JSON/CSV for job boards, recruiters & market research. No API keys.

๐Ÿ‘ User avatar

Santhej Kallada

1

s1jobs.com Jobs Scraper

epicscrapers/s1jobs-scraper

Scrape job listings from s1jobs.com โ€“ Scotland's largest job board. Collect titles, salaries, locations, company info, and contract types at scale. Input search URLs and export structured data in JSON, CSV, and more.

2

Google Jobs Scraper โ€” Salary, Apply Links & MCP-Ready

khadinakbar/google-jobs-scraper

Extract job listings from Google Jobs. Returns title, company, location, salary (parsed min/max), full description, apply link, employment type & more.

170

Naukri Jobs Scraper

khadinakbar/naukri-jobs-scraper

Scrape Naukri.com job listings from India with title, company, location, salary, experience, skills, description, and apply URL. MCP-ready.

Ashby Jobs [$0.9๐Ÿ’ฐ] API Scraper | Any Company (/w EMAILS)

memo23/ashby-scraper

[Only $0.9๐Ÿ’ฐ] Scrape every open job from any company on Ashby (jobs.ashbyhq.com). Paste a board URL or org slug and get the full board in one API call โ€” company, title, full description, compensation, location, department, and apply URL. Filter by title, location or remote. No proxy. JSON or CSV.

๐Ÿ‘ User avatar

Muhamed Didovic

17