IrishJobs.ie [$1.45/1K💰] Ireland Jobs Scraper + Salary
Pricing
from $1.45 / 1,000 job postings
IrishJobs.ie [$1.45/1K💰] Ireland Jobs Scraper + Salary
Search IrishJobs.ie by keyword, county & salary — or any URL. Structured salary bands, skills, employer + geo. Only-new-jobs mode for scheduled runs, Telegram/Slack/Discord/WhatsApp alerts, AI-agent compact output, optional contact-email enrichment. JSON/CSV out.
Pricing
from $1.45 / 1,000 job postings
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
23
Total users
4
Monthly active users
4 days ago
Last modified
Share
IrishJobs.ie Ireland Jobs Scraper
Turn Ireland's leading job board into clean, structured hiring data. Type a keyword and county the way you would on the site — or paste any IrishJobs.ie URL — and get one flat row per job posting: title, employer with logo, structured EUR salary band, work type, skills, dates, full description in text/HTML/Markdown, and the apply URL. Schedule it with only-new-jobs mode and get pinged on Telegram, Slack, Discord, WhatsApp, or your webhook the moment new Irish roles appear. No browser, no flakiness, no per-request proxy bills.
How it works

✨ Why use this scraper?
- All-Ireland coverage — every sector and county on IrishJobs.ie, Dublin to Donegal, thousands of live postings.
- Search like a human — keyword(s), location or county select, radius, sort, posted-within, minimum salary, agency-vs-employer. The actor builds the site's own search URLs for you; batch several keywords in one run.
- Any search URL works too — the query string is honoured server-side, so every filter the IrishJobs web search supports (keyword, location, salary, posted date…) works here as well. No filter-mapping surprises.
- A real monitoring feed —
skipRepostsremembers every job you've already received (90-day window) and skips it before the page fetch: never charged twice, and scheduled runs dig until they find genuinely new postings. Pair with notifications and you have a new-jobs alert bot. - Notifications to your own channels — Telegram, Discord, Slack, WhatsApp, or any webhook (n8n / Make / Zapier), with job titles, salaries, and links. Silent when nothing new appeared.
- Filters the site can't do — include/exclude keywords across title/description/skills, date windows, minutes-level recency, fully-remote-only, and a custom rule DSL on any output field. All applied before you're charged.
- Built for AI agents — compact 15-field rows, description length caps, dot-notation field selection, empty-field pruning, and description in plain text, HTML, and Markdown.
- Efficient JSON-based pagination — listings are walked through the site's own structured feed (25 jobs per call), not scraped from HTML. Faster, cheaper, far more robust to redesigns.
- Three data sources merged per row — the listing feed, the JobPosting JSON-LD, and the job-ad app state. You get fields (structured salary, work type, employer jobs count, skills) that plain HTML scrapers miss.
- Structured EUR salary band —
min/max/currency/periodparsed when the employer disclosed one; the honest"€ Not Disclosed"raw text when they didn't. Never fabricated. - Built-in residential proxy at no extra cost — traffic is pre-routed; nothing to configure, no proxy add-ons to buy.
🎯 Use cases
| Who | What they do with it |
|---|---|
| Recruiters & staffing agencies | Monitor competitor postings, source niches by county, track when roles close (validThrough). |
| HR & compensation analysts | Benchmark Irish salaries by sector using the structured salary band + work type. |
| Job aggregators & boards | Ingest a clean JSON feed of Irish vacancies with stable numeric IDs for dedup. |
| Market & labour researchers | Track hiring volume by industry, employer, county over time (datePosted, industry, employer.jobsCount). |
| Lead-gen teams | Companies that are hiring are companies that are buying — enrich rows with contact emails (opt-in) and qualify by payment stack. |
📥 Supported inputs
Keyword search (no URL needed): set query (e.g. software engineer) plus optional location/county, radius, sort, postedWithin, minSalary, companyType. Batch extra keywords via queries — each runs as its own search into one dataset. URLs below work in addition.
| Input URL | Example | What happens |
|---|---|---|
| Keyword listing | https://www.irishjobs.ie/jobs/software-engineer | Paginates all matches, one row per job |
| Keyword + location | https://www.irishjobs.ie/jobs/accountant/in-cork | Server-side location filter honoured |
| Location / county | https://www.irishjobs.ie/jobs/dublin | All jobs for that area |
| Company jobs page | https://www.irishjobs.ie/jobs-at/{company-slug} | All live postings for one employer |
| Filtered search | any listing URL + query string (?salary=…, ?postedWithin=…, …) | Filters honoured verbatim, server-side |
| Job detail | https://www.irishjobs.ie/job/{slug}/{org}-job{id} | Scraped directly — exactly 1 row |
Not supported: URLs from other domains (including UK Stepstone sister sites — use the dedicated TotalJobs / Caterer / CWJobs scrapers for those), CV-search or recruiter-side pages, and pages behind a login.
🔄 How it works
- Classify every input URL — listing vs job detail.
- Walk listings through IrishJobs' structured resultlist feed, 25 jobs per call,
?page=Npagination, until yourmaxItemscap or the result set ends. - Fetch each job page in parallel (sliding-window concurrency) through the built-in residential proxy, racing three independent HTTP stacks for reliability.
- Parse & merge the JobPosting JSON-LD, the job-ad app state (salary text, work type, company card), and the listing item (structured salary, skills, dates) into one flat row.
- Push one row per job to the dataset — no padding rows, you pay per real result.
⚙️ Input parameters
Search
| Field | Type | Default | Description |
|---|---|---|---|
query | string | — | Job keyword, e.g. software engineer. Leave empty to browse all jobs. |
queries | array | — | Batch keywords — one search each, sharing location + filters. |
location | string | — | City / town / region, e.g. Dublin. |
county | string | — | One of the 26 Irish counties — matches the site's own county pages. Overrides location. |
radius | integer | — | Km around the location (5–200). |
sort | string | relevance | relevance / date / salary_high / salary_low / distance. |
postedWithin | integer | — | Last N days (site windows 1/3/7/14 — other values snap up). |
minSalary | integer | — | Minimum annual EUR salary (site's "at least" facet). |
companyType | string | — | employer (direct) or agency. |
startUrls | array | — | Listing and/or job-detail URLs — scraped in addition to the keyword search. |
Filters (applied after fetch, before you're charged)
| Field | Type | Description |
|---|---|---|
remoteOnly | boolean | Fully remote only (Remote / TELECOMMUTE tag). Hybrid does not pass. |
includeKeywords | object | {"keywords":["React","Node.js"],"matchTitle":true,"matchDescription":true,"matchSkills":true} — at least one must match. |
excludeKeywords | object | Same shape — drop jobs containing any. |
fromDate / toDate | string | Posted-date window, YYYY-MM-DD or ISO-8601. |
maxAgeMinutes | integer | Only jobs posted in the last N minutes — for hourly feeds. |
customFilters | array | Rules on any field: [{"field":"salary.min","op":"gte","value":50000}]. Ops: includes / notIncludes / equals / notEquals / gt / gte / lt / lte. |
Job monitoring & notifications
| Field | Type | Default | Description |
|---|---|---|---|
skipReposts | boolean | false | Only new jobs across runs (90-day memory, never charged twice, doesn't consume maxItems). |
dedupStoreName | string | irishjobs-seen-jobs | Named store for the seen-jobs memory — share it across tasks or keep searches separate. |
telegramToken + telegramChatId | string | — | Your bot from @BotFather + target chat. |
discordWebhookUrl / slackWebhookUrl | string | — | Incoming webhooks. |
whatsappPhoneNumberId + whatsappAccessToken + whatsappTo | string | — | Meta Cloud API trio. |
webhookUrl (+ webhookHeaders) | string | — | Any HTTPS endpoint — JSON POST with counts, dataset link, newest items. |
notificationLimit | integer | 10 | Jobs listed per message (max 25). |
notifyOnlyChanges | boolean | true | Stay silent when nothing (new) was found. |
Output & AI-agent controls
| Field | Type | Default | Description |
|---|---|---|---|
descriptionFormat | string | all | Which derived description fields to add: all / text / html / markdown. |
descriptionMaxLength | integer | 0 | Truncate description fields to N chars (0 = off). |
compact | boolean | false | Flat 15-field core rows for AI-agent / MCP pipelines. |
outputFields | array | — | Keep only these fields, dot-notation (salary.min, employer.name). |
excludeEmptyFields | boolean | false | Drop null / empty values from each row. |
Volume, enrichment & advanced
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 1000 | Max job rows per search / listing URL. Direct detail URLs always emit 1 row each. |
maxConcurrency | integer | 4 | Parallel detail-page fetches. 3–6 is the sweet spot. |
maxRequestRetries | integer | 6 | Per-URL retry budget; each retry rotates the proxy session. |
enrichEmails | boolean | false | Opt-in: discover a contact email for each hiring employer. Billed per email found, never for misses. |
qualifyByPayment | boolean | false | Opt-in, requires enrichEmails: flag employers whose websites take payments online (Stripe, Shopify, PayPal…). Free with enrichment. |
proxy | object | built-in | Optional override. Leave empty — the built-in residential proxy is already configured and free. |
📊 Output overview
Each dataset record is one job posting as a flat row. Identity fields (jobId, jobUrl, title) sit at the top level; the employer, location, and salary are small nested objects so CSV export stays readable (employer.name, salary.min, …). Every row records which search URL it was discovered on (sourceSearchUrl), so multi-URL runs stay traceable.
The description ships in every format your pipeline could want: the original description (as the site publishes it), plus derived descriptionText (clean plain text), descriptionHtml, and descriptionMarkdown — pick a subset with descriptionFormat, or flip compact for lean AI-agent rows.
📦 Output sample
Real row from a live run (description trimmed):
{"rowType": "job","jobId": "107578248","jobUrl": "https://www.irishjobs.ie/job/healthcare-assistant-home-care/hibernia-home-care-job107578248","sourceSite": "irishjobs.ie","title": "Dublin North Central - Healthcare Assistant / Home Care Support Worker (Full-Time)","description": "<div><strong>Job Title: Healthcare Assistant / Home Care Support Worker (Full-Time)</strong>…","descriptionText": "Job Title: Healthcare Assistant / Home Care Support Worker (Full-Time)…","descriptionHtml": "<div><strong>Job Title: Healthcare Assistant / Home Care Support Worker (Full-Time)</strong>…","descriptionMarkdown": "**Job Title: Healthcare Assistant / Home Care Support Worker (Full-Time)**…","datePosted": "2026-06-24T03:13:45.33Z","validThrough": "2026-07-24T22:00:00Z","industry": "Health, Health-Nursing","directApply": true,"workType": "Permanent","contractType": null,"workFromHome": null,"skills": [],"employer": {"name": "Hibernia Home Care","url": "https://www.irishjobs.ie/jobs/hibernia-home-care-group?cmpId=1348188&cmp=1","logoUrl": "https://www.irishjobs.ie/CompanyLogos/715b3506-a4ef-4baa-a31b-9bf506f2c173.png","id": 1348188,"jobsCount": 10},"location": {"text": "Dublin, County Dublin, Dublin, IE","locality": "Dublin, County Dublin","region": "Dublin","postalCode": null,"country": "IE","lat": 53.33306,"lng": -6.24889},"salary": {"rawText": "€32,691 per annum","min": 32691,"max": null,"currency": "EUR","period": "annum"},"applyUrl": "https://www.irishjobs.ie/job/healthcare-assistant-home-care/hibernia-home-care-job107578248","applyType": "internal","scrapedAt": "2026-07-13T13:13:47.372Z"}
🗂 Key output fields
| Field | Notes |
|---|---|
| Identity | |
jobId | Stable numeric ID from the URL suffix — use for dedup across runs. |
jobUrl | Canonical job page on IrishJobs.ie. |
sourceSearchUrl | The listing URL this row was discovered on (null for direct detail inputs). |
| Posting | |
title, description | Description is the full HTML body as published. |
descriptionText / descriptionHtml / descriptionMarkdown | Derived formats for pipelines, LLMs, and rendering — control with descriptionFormat, cap length with descriptionMaxLength. |
datePosted, validThrough | ISO 8601. validThrough = closing date. |
industry | IrishJobs category tag, e.g. "Health, Health-Nursing". |
workType | "Permanent" / "Contract" / "Temporary" / "Part Time" — from the job-ad metadata. |
workFromHome | "Hybrid" / "Remote" / null — from the listing feed. |
skills | Skill tags from the listing feed, when the employer added them. |
| Employer | |
employer.name, employer.id, employer.logoUrl | employer.url is the IrishJobs company-jobs page (not the company's own website). |
employer.jobsCount | Live postings count for this employer — a hiring-intensity signal. |
| Location | |
location.lat / location.lng | Populated when the posting carries geo data. |
| Salary | |
salary.rawText | Always present — "€ Not Disclosed" when the employer hid it (common in Ireland). |
salary.min/max/currency/period | Only set when a real band was disclosed. Never inferred or predicted. |
| Apply | |
applyType | "internal" (one-click on IrishJobs, applyUrl = job page) / "external" (recruiter ATS — resolve by opening jobUrl) / "unknown". |
| Enrichment (opt-in) | |
contactEmail, contactWebsite, emailEnrichment | Only when enrichEmails: true. |
❓ FAQ
Do I need to paste a URL? No. Type a keyword (and optionally pick a county, radius, salary floor, sort order…) and the actor builds the search itself. URLs still work for exotic filter combos — and both can run together.
How do I get only NEW jobs on a schedule?
Turn on skipReposts, schedule the actor (hourly/daily), and add a notification channel. The actor remembers every job it has emitted for 90 days, skips them before fetching (never charged twice), keeps digging until it finds maxItems genuinely new postings, and pings you only when something new landed (notifyOnlyChanges).
Which notification channels are supported? Telegram (your own bot), Discord and Slack incoming webhooks, WhatsApp via Meta's Cloud API, and a generic JSON webhook for n8n / Make / Zapier / your backend. Messages include job title, employer, location, salary, and link.
Can I filter for remote jobs?
Yes — remoteOnly: true keeps only fully remote roles (tagged Remote or TELECOMMUTE; hybrid is excluded). IrishJobs has no server-side remote facet, so this filter runs after fetch: the run scans up to maxItems jobs and emits the remote subset — filtered-out jobs are never charged.
Do search filters from the website work? Yes — your URL is passed to IrishJobs' own search backend verbatim, so anything the web UI can filter (keyword, county, salary, posted date, remote…) is honoured server-side. If the URL works in your browser, it works here.
Why is salary.min null on many rows?
Because the employer chose "€ Not Disclosed" — roughly half of Irish postings do. The row keeps the honest raw text, and min/max stay null. We deliberately do not copy the site's "predicted salary" widget: those are estimates, not the posting's own data.
Is applyUrl always the recruiter's site?
No. When applyType is "internal", the application happens on IrishJobs itself and applyUrl equals jobUrl. When it's "external", the recruiter URL is resolved by JavaScript at click-time, which a server-side scraper can't run — open jobUrl in a browser and click Apply.
How many rows will a listing produce?
Up to min(maxItems, total results) per listing URL. The first API call reports the exact total, and the run log shows it up front.
Do I need to configure a proxy?
No — every request already goes through the actor's built-in residential proxy at no extra cost. The proxy input exists only if you insist on your own pool.
How fresh is the data? Every run hits the live site — rows are as current as the moment the run executes. Schedule the actor for continuous monitoring.
💬 Support
- Found a bug or need a field added? Open an issue on the actor's Issues tab — I usually respond within a day.
- Custom requirements (other Stepstone-family boards, bespoke output shapes, delivery to your DB)? Message me through Apify.
🛠 Additional services
- Contact-email enrichment — flip
enrichEmailson to get a contact email per hiring employer, billed only per email found. - Payment qualification — flip
qualifyByPaymenton (free with enrichment) to flag employers that take payments online: processor stack, Stripe key exposure, confidence score.
🔎 Explore more scrapers
Scraping other Stepstone-family boards? Same engine, dedicated actors:
- StepStone Job Scraper — Germany, Austria, France, Denmark + contact emails
- TotalJobs UK Scraper — UK's biggest Stepstone board, GBP salary bands
- Caterer.com Scraper — UK hospitality vertical
- CWJobs Scraper — UK tech & IT
- Jobsite Scraper — UK all sectors
- s1jobs Scraper — Scotland
Plus CharityJob, Goodmoves, and 100+ other actors on the memo23 profile.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by IrishJobs.ie, The Stepstone Group, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available job-posting pages — no authenticated endpoints, recruiter-only features, or content behind an IrishJobs login. Users are responsible for ensuring their use complies with IrishJobs.ie's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.
SEO Keywords
irishjobs scraper, scrape irishjobs.ie, irishjobs api, Apify irishjobs, ireland jobs scraper, irish job board scraper, dublin jobs data, cork jobs scraper, ireland job postings api, jobs ireland dataset, irish salary benchmark data, recruitment data ireland, hiring trends ireland, job market analysis ireland, ireland vacancy data, stepstone ireland scraper, jobs.ie alternative scraper, indeed ireland alternative, job listings extraction ireland, EUR salary data, JobPosting JSON-LD scraper, jobs to CSV ireland, labour market data ireland