VOOZH about

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

โ‡ฑ Hi Jobs (HIJOBS) Scraper (/w EMAILS) ยท Apify


๐Ÿ‘ Hi Jobs (HIJOBS) Scraper (/w EMAILS) avatar

Hi Jobs (HIJOBS) Scraper (/w EMAILS)

Pricing

from $2.90 / 1,000 results

Go to Apify Store

Hi Jobs (HIJOBS) Scraper (/w EMAILS)

Scrape hijobs.net โ€” Scotland's Highlands & Islands jobs board โ€” via the official HIJOBS mobile API. Title, employer, salary, location, hours, sector, closing date, apply email + full description. Search by URL or filters, recency filter, 37 fields per row. 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

3

Total users

1

Monthly active users

13 days ago

Last modified

Share

Hi Jobs (HIJOBS) Scraper

Scrape hijobs.net โ€” Scotland's Highlands & Islands jobs board โ€” through the official HIJOBS mobile JSON API. The website itself sits behind Cloudflare's interactive challenge, but the HIJOBS iOS app talks to a clean, public JSON API (api.hijobs.co.uk) that is not Cloudflare-gated and needs no login. This actor uses that API directly โ€” so you get structured JSON (not scraped HTML), fast, with richer fields than the website exposes. Newest-first by default, with an optional "posted within N hours" recency filter that early-stops pagination. JSON or CSV out.

How it works

๐Ÿ‘ How Hi Jobs Scraper works

โœจ Why use this scraper?

HIJOBS is the jobs board for the Scottish Highlands & Islands โ€” Inverness, Oban, Skye, the Outer Hebrides, Argyll, Moray. ~2,300 live vacancies across care, hospitality, retail, public sector, trades, engineering, and community/third-sector roles.

  • ๐Ÿš€ Official mobile API, not HTML scraping. We reverse-engineered the HIJOBS iOS app and found its public JSON API (api.hijobs.co.uk). It needs no auth and isn't behind Cloudflare โ€” so every field comes back clean and structured, no brittle HTML parsing, no browser, no proxy required.
  • ๐Ÿงฑ Two endpoints, full coverage. /search/results returns paginated job lists (id, title, ISO posted time, closing date, salary, location, hours, contract, sector, recruiter, logo, badges). /job/<id> adds the full HTML description, the real apply contact (name + email) for direct employers, the external application URL, and the employer record.
  • โฑ๏ธ Built-in recency filter. postedWithinHours: 24 returns only jobs added in the last day โ€” and because results are sorted newest-first, it early-stops pagination the moment it passes the cutoff. Cheap, fast daily monitoring.
  • ๐Ÿ’ฐ Proper salary ranges. ยฃ42,600 to ยฃ64,000 per annum, ยฃ13.45 to ยฃ14.45 per hour โ†’ structured {currency, min, max, unit, raw}.
  • ๐Ÿ“ง Real apply contacts. Direct-employer jobs expose a genuine applyEmail + contactName; agency/external jobs expose the externalApplyUrl.
  • ๐Ÿงญ Consistent field names. Emits the same canonical core columns (in the same order) as every other scraper in this collection โ€” drop the rows straight into your existing mapping.
  • ๐Ÿ“ค Clean exports. One row per vacancy. JSON + CSV exported automatically.

๐ŸŽฏ Use cases

TeamWhat they build
Highlands & Islands recruitersDaily new-vacancy feeds across Inverness / Argyll / the Isles
Care & hospitality aggregatorsLive regional vacancy boards for the sectors that dominate HIJOBS
Relocation / community sites"Jobs in the Highlands" listings auto-populated each morning
Workforce & economic researchersRural Scotland labour-market datasets with salary + sector
Third-sector / public bodiesTrack who's hiring across Highland charities and councils

๐Ÿ“ฅ Supported inputs

There are two ways to search, and Search-by-URL always wins when both are filled in:

1. Search by URL (startUrls) โ€” paste any hijobs.net address. The easiest way: go to hijobs.net, click the filter chips you want (sector, location, employer type, salary, last-N-daysโ€ฆ), then copy the address-bar URL straight in. Every chip is honoured.

URLBehaviour
https://hijobs.net/search/results?employers=charity-cic&where=Scotland&sort=relevance&since=3Full filtered search โ€” all chips honoured; since=3 โ†’ last-3-days recency
https://hijobs.net/jobsNewest-first listing
https://hijobs.net/jobs/<location>Location facet (e.g. /jobs/oban)
https://hijobs.net/job/<id>/<slug>Single job โ†’ GET /job/<id>
https://api.hijobs.co.uk/search/results?...Raw API search URL (params passed through)

2. Search by filters โ€” used only when startUrls is empty. Pick from dropdowns instead of building a URL:

FieldMaps toValues
keywordskeyword searchfree text (e.g. support worker)
wherelocationfree text (e.g. Inverness, Scotland)
employerTyperecruiter typeCharity / CIC, Direct Employer, Agency, Recruitment Consultant, Local Government
hoursworking hoursFull Time, Part Time
contractTypecontractPermanent, Contract, Interim, Graduate, Temporary, Casual, Student Placement, Volunteer
sortorderingNewest first, Date, Highest salary, Relevance
postedWithinHoursrecencye.g. 24 (last day), 72 (last 3 days)

Leave everything empty for the newest-first feed.

Not supported: authenticated/recruiter features, the applicant flow, employer dashboards.

๐Ÿ”„ How it works

  1. Resolve input โ€” turn startUrls (website or API), or keywords/where, into API queries (or direct job-IDs).
  2. Paginate GET /search/results?sort=added&size=25&pg=N (newest-first).
  3. Parse each Jobs[] item โ€” id, title, ISO Added (posted), Expires (closing), rate, location, hours, contract, sector, recruiter, logo, flags (Work-from-home / Immediate-start / Promoted), teaser.
  4. Recency gate โ€” with postedWithinHours set, skip older items and stop paginating once a whole page is past the cutoff.
  5. Enrich (optional) โ€” GET /job/<id> for the full HTML description, apply contact (name + email), application URL, employer record.
  6. Normalise + push โ€” every row goes through the shared canonical normaliser so the column layout matches the rest of the collection.

โš™๏ธ Input parameters

ParameterTypeDefaultDescription
startUrlsarray(empty)Search by URL โ€” takes priority. Any hijobs.net listing/search/facet/job URL. When set, the filter fields below are ignored.
keywordsstring(none)Keyword search (filter mode).
wherestring(none)Location / area (filter mode).
employerTypestringAnyRecruiter type โ†’ employers (e.g. charity-cic). Filter mode.
hoursstringAnyfull-time / part-time. Filter mode.
contractTypestringAnypermanent, contract, temporary, volunteer, โ€ฆ Filter mode.
sortstringaddedadded (newest), date, salary, relevance.
enrichDetailbooleantrueFetch each /job/<id> for the full description + apply contact. Disable for list-only (faster, fewer calls).
postedWithinHoursinteger(none)Only return jobs added in the last N hours (24 = last day, 72 = last 3 days). Empty/0 = all. Early-stops pagination โ€” ideal for daily monitoring.
maxItemsinteger1000Hard cap on rows pushed (~2,300 live jobs total).
maxPagesinteger120Safety cap on API pages walked (25 jobs/page). The recency filter usually stops far earlier.
maxConcurrencyinteger5Parallel /job/<id> detail fetches.
proxyobject(off)Optional. The API is open, so a proxy isn't needed โ€” left here for users who want one.

๐Ÿ“Š Output overview

Each scraped vacancy is one single dataset row of type: "job". List fields are always present; description (full HTML), applyEmail/contactName, and externalApplyUrl come from detail enrichment when enrichDetail is on.

๐Ÿ“ฆ Output sample

{
"type":"job",
"source":"hijobs.net",
"jobId":"410005",
"slug":"principal-overhead-line-ohl-engineer",
"jobUrl":"https://hijobs.net/job/410005/principal-overhead-line-ohl-engineer",
"title":"Principal Overhead Line (OHL) Engineer",
"companyName":"SSE",
"companyWebsite":null,
"companyDomain":null,
"location":"Glasgow, Perth, Aberdeen, Inverness",
"remote":false,
"salary":{"currency":"GBP","min":58100,"max":87100,"raw":"ยฃ58,100 to ยฃ87,100 per annum","unit":"year"},
"salaryRaw":"ยฃ58,100 to ยฃ87,100 per annum",
"categories":["Engineering and Technical","Engineering Management"],
"employmentTypes":["Permanent"],
"contractType":"Permanent",
"hours":"40 per week",
"postedDate":"2026-06-05T16:34:18Z",
"closingDate":"2026-06-18T00:00:00Z",
"modifiedDate":null,
"description":"<p><strong>Base Location:</strong> โ€ฆ</p>",
"descriptionText":"Base Location: โ€ฆ",
"applyType":"external",
"applyUrl":"https://hijobs.net/apply/410005/principal-overhead-line-ohl-engineer",
"applyEmail":null,
"externalApplyUrl":"https://hijobs.net/apply/external/410005",
"scrapedAt":"2026-06-05T18:13:00.000Z",
"sourceProvider":"hijobs",
"apiUrl":"https://api.hijobs.co.uk/job/410005",
"recruiterType":"direct-employer",
"recruiterSlug":"sse",
"companyLogo":"https://hjcdn.co.uk/images/employers/โ€ฆ",
"city":null,
"country":null,
"postedFriendly":"June, 05, 2026 4:34 PM",
"descriptionTeaser":"โ€ฆ",
"reference":"Job Number: 558523",
"requiresCv":false,
"numberVacancies":1,
"flags":["Promoted"],
"contactName":"Human Resources"
}

๐Ÿ—‚ Key output fields

GroupFields
Identifierstype, source, sourceProvider (hijobs), jobId, slug, jobUrl, apiUrl, scrapedAt
Contenttitle, description (HTML, with enrichDetail), descriptionText, descriptionTeaser
DatespostedDate (ISO, from Added), postedFriendly, closingDate (from Expires), modifiedDate
EmployercompanyName, recruiterType (direct-employer / agency), recruiterSlug, companyLogo, contactName
Locationlocation, city, country, remote
Compensationsalary.{currency, min, max, unit, raw}, salaryRaw
Classificationcategories[] (sector + specialism), employmentTypes[], contractType, hours
Apply flowapplyType (external / email / internal), applyUrl, applyEmail, externalApplyUrl
HIJOBS-specificflags[] (Work-from-home / Immediate-start / Promoted / Popular), reference, requiresCv, numberVacancies

โ“ FAQ

How does this get past Cloudflare? It doesn't have to. The HIJOBS website is Cloudflare-gated, but the HIJOBS iOS app talks to a separate, public JSON API on api.hijobs.co.uk that isn't behind Cloudflare and needs no login. We call that API directly โ€” cleaner and faster than scraping the site. (A Cloudflare-bypass fallback exists for resilience but is rarely needed.)

Why is applyEmail sometimes null? Direct-employer jobs publish a real contact email (you'll get applyEmail + contactName). Agency / "apply on the employer's site" jobs instead publish an externalApplyUrl, and applyType is external. Jobs with neither default to the on-site HIJOBS apply page in applyUrl.

Does postedWithinHours really save money? Yes. Results are newest-first, so the actor stops paginating as soon as it hits a full page older than your cutoff. A postedWithinHours: 24 run typically touches 1โ€“3 pages instead of all ~95.

Why is closingDate / full description sometimes null? The full description + closing date come from the /job/<id> detail call. With enrichDetail: false those calls are skipped โ€” the list still gives title, employer, posted time, salary, location, hours, sector, and the closing date (Expires).

Can I scrape a specific town or sector? Set where (e.g. Inverness) and/or keywords, or paste a https://hijobs.net/jobs/<location> URL. The same row shape applies.

Can I scrape private pages or applicant data? No. Only the same public job listings + detail the HIJOBS app itself loads โ€” no authenticated endpoints.

๐Ÿ’ฌ Support

๐Ÿ›  Additional services

  • Custom output shape, additional fields, or one-off datasets: muhamed.didovic@gmail.com
  • Mobile-API reverse-engineering for other Cloudflare-gated sites in your portfolio (same approach as here): drop an email.
  • For API access (no Apify fee, just usage): muhamed.didovic@gmail.com

๐Ÿ”Ž Explore more scrapers

See other scrapers 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 HIJOBS, HIJOBS Limited, hijobs.net, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only the public job-search and job-detail endpoints of the HIJOBS mobile API โ€” the same data the HIJOBS app loads for any user โ€” with no authenticated endpoints, recruiter-only features, applicant data, or content behind a login. Users are responsible for ensuring their use complies with HIJOBS's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.


SEO Keywords

hijobs scraper, scrape hijobs.net, hijobs api, hijobs mobile api scraper, api.hijobs.co.uk, highlands and islands jobs scraper, scottish highlands jobs api, inverness jobs scraper, oban jobs scraper, skye jobs scraper, argyll jobs api, moray jobs scraper, outer hebrides jobs scraper, rural scotland jobs data, highland care jobs scraper, highland hospitality jobs api, scotland jobs board scraper, mobile app api scraper, reverse engineered job board api, highland third sector jobs api, asva alternative scraper, s1jobs alternative scraper, highlandjobs alternative scraper, scottish job board api

You might also like

Hi Jobs (HIJOBS) Scraper: Scotland Highlands & Islands Jobs

getascraper/hijobs-scraper

Scrape hijobs.net Highlands and Islands jobs via the official mobile API. Extract salaries, locations, apply emails, and full descriptions without Cloudflare blocking. Supports direct search URL or filters, recency filter, and JSON or CSV output. Perfect for ATS syncing. $2 per 1,000 results.

s1jobs.com Scraper (/w EMAILS)

memo23/s1jobs-scraper

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.

๐Ÿ‘ User avatar

Muhamed Didovic

22

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

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.

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

Community First Yorkshire Jobs Scraper

memo23/cfy-scraper

Scrape jobs and other portfolio content from communityfirstyorkshire.org.uk via WP-JSON portfolio CPT. Filter by taxonomy (default jobs โ‰ˆ 6 vacancies). Title, full HTML, location, apply email/URL, best-effort closing date + salary regex. JSON or CSV out.

๐Ÿ‘ User avatar

Muhamed Didovic

2

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

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

16

Barnsley CVS Jobs Scraper

memo23/barnsleycvs-scraper

Scrape the barnsleycvs.org.uk Webflow job board for Barnsley voluntary-sector vacancies. Title, employer, parsed salary, closing date from the listing; full HTML description per job via optional detail enrichment. ~5-10 live vacancies. JSON or CSV out.

๐Ÿ‘ User avatar

Muhamed Didovic

2