IrishJobs.ie Scraper - Jobs, Salaries, Employers & Locations avatar

IrishJobs.ie Scraper - Jobs, Salaries, Employers & Locations

Pricing

from $1.20 / 1,000 job scrapeds

Go to Apify Store
IrishJobs.ie Scraper - Jobs, Salaries, Employers & Locations

IrishJobs.ie Scraper - Jobs, Salaries, Employers & Locations

Scrape job listings from IrishJobs.ie by keyword, location, job type, salary, recency, or search URL. Extract titles, employers, GPS locations, parsed EUR salary ranges, employment type, full descriptions, and posting dates.

Pricing

from $1.20 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

IrishJobs.ie Scraper: Job Listings, Salaries and Employer Details

IrishJobs.ie Scraper turns IrishJobs.ie into structured data. Search by keyword and location or paste your own search-result links, and get one flat row per job with title, employer, EUR salary bands, skills, employment type and posting date. Turn on detail-page enrichment for the full job description, GPS coordinates and any contact details listed on the posting. Run it once for a sample, or schedule it to monitor a search and receive only the jobs that are new, changed, or gone. Export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Two ways in. Build a search from keyword, location, job type, salary and recency filters, or paste any IrishJobs.ie search-result link and let the run paginate it.
  • Rich listing data by default. Title, employer with logo, location, parsed EUR salary bands, skills and posting date come back on every job, no extra toggle needed.
  • Optional detail enrichment. Switch on the full job description, GPS coordinates, Eircode, employment type and any listed contact details, and pay the enrichment charge only for the jobs actually read.
  • Built for recurring searches. Incremental mode returns only new, updated or expired jobs on repeat runs of the same search, so a daily or weekly schedule does not re-bill jobs you already have.
  • Resume without re-paying. Point Resume at a previous run or dataset and the crawl skips everything already collected there instead of starting over.
  • Clear pass or fail. A run that cannot read the site at all stops with an error instead of quietly returning zero jobs, so an empty result you can trust is never confused with a blocked one.

Use Cases

  • Job seekers and career sites: pull fresh listings for a role and location into your own search page or alert bot.
  • Recruitment agencies and sourcing teams: track new postings from competing agencies and employers across Ireland.
  • Compensation and workforce research: build a dataset of parsed EUR salary bands by role, county and employment type.
  • Market and competitor monitoring: watch a given employer's or sector's hiring volume over time with scheduled incremental runs.
  • Lead generation: find employers actively hiring in a region as a signal for outreach.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
jobId"9482113"
jobUrl"https://www.irishjobs.ie/job/senior-backend-engineer-job9482113"
title"Senior Backend Engineer"
description"We are looking for an experienced backend engineer..." (detail enrichment only)
employerName"Clover Peak Technologies"
employerUrl"https://www.irishjobs.ie/company/clover-peak-technologies"
employerLogoUrl"https://www.irishjobs.ie/img/logos/cloverpeak.png"
employerId55210
locationText"County Dublin"
locationLocality / locationRegion"Dublin" / "County Dublin" (detail enrichment only)
locationPostalCode"D02 XY45" (detail enrichment only)
locationLat / locationLng53.3498 / -6.2603 (detail enrichment only)
salaryRaw"€55,000 - €65,000 per annum"
salaryMin / salaryMax55000 / 65000
salaryCurrency / salaryPeriod"EUR" / "year"
employmentType"FULL_TIME" (detail enrichment only)
skills["Python", "AWS", "Kubernetes"]
datePosted"2026-09-15T09:00:00+00:00"
validThrough"2026-10-15T00:00:00+00:00" (detail enrichment only)
applyUrl / applyType"https://careers.cloverpeak.example/apply/9482113" / "external" (detail enrichment only)
contactPhone / contactEmail"+353 20 910 0142" / "careers@example.com" (detail enrichment only, when the posting lists one)
sourceSearchUrl"https://www.irishjobs.ie/jobs/software-engineer/in-dublin"
scrapedAt"2026-09-29T10:15:00+00:00"

Every record also carries placement flags captured at scrape time (isSponsored, isHighlighted, isTopJob, isTrafficFromPartner, crossPostedCount), and in incremental mode also changeType, changedFields, firstSeenAt and lastSeenAt.

How to Use

  1. Pick a mode: search (build a URL from your keyword, location and filters) or url (paginate the exact search-result links you paste).
  2. Fill in the filters for that mode, and turn on Fetch detail pages if you need the full description, GPS coordinates, Eircode or contact details.
  3. Set Max jobs and Max pages to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search by keyword and location:

{
"mode": "search",
"keywords": ["software engineer"],
"locations": ["Dublin"],
"maxListings": 20
}

Search with job type and salary filters:

{
"mode": "search",
"keywords": ["engineer"],
"locations": ["Dublin"],
"jobType": "permanent",
"minSalary": 40000,
"salaryType": "1",
"maxListings": 25
}

Paste a search-result link and enrich each job:

{
"mode": "url",
"urls": ["https://www.irishjobs.ie/jobs/software-engineer/in-dublin"],
"maxPages": 3,
"fetchDetails": true
}

Monitor a search on a schedule:

{
"mode": "search",
"keywords": ["nurse"],
"locations": ["Dublin"],
"incrementalMode": true,
"emitExpired": true,
"maxListings": 0
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/irishjobs-ie").call(run_input={
"mode": "search",
"keywords": ["software engineer"],
"locations": ["Dublin"],
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["employerName"], job["salaryRaw"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/irishjobs-ie').call({
mode: 'search',
keywords: ['software engineer'],
locations: ['Dublin'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted crawl: paste its run or dataset id and every job already collected there is treated as already-seen, so it does not count against Max jobs and is not paid for again. The walk keeps paging forward past an entirely already-collected page as long as it has not yet found any new job this search (subject to Max pages, if you set one); once it has found at least one new job, an all-duplicate page still stops that search's walk, so a resume is not guaranteed to reach every page deep in a large result set.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search. Each job is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), or EXPIRED. stateKey names or shares the saved baseline for a search; leave it blank and the actor derives one from your search itself.
  • A job is only ever marked as no-longer-present after a run with emitExpired on completed a full, uncapped scan of the search (no Resume, no Max jobs/Max pages cutoff). With emitExpired off, disappeared jobs are simply left as-is in the saved baseline; nothing is marked gone, and EXPIRED cannot occur for that search until you turn it on and let one full scan complete. If a job that was previously marked EXPIRED shows up again in a later scan, it comes back as NEW, with a fresh firstSeenAt, not as a distinct "reappeared" state.

Send results into your apps (MCP connectors)

Optionally pipe the scraped jobs into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each job, not the full JSON. Each job becomes one entry with a title (the job title, falling back to employer or location) and its fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify > Settings > Integrations (Notion, Airtable, Linear, or Apify).
  2. Select it in the MCP Connectors input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where jobs should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (build a URL from filters) or url (paginate pasted links).
keywordsarray[]Job title or keyword to search for. Empty browses all jobs.
locationsarray[]Town, city, or county to search in. Empty searches all of Ireland.
jobTypestring"" (Any)permanent, contract, temporary, part-time, or graduate.
minSalaryinteger0Minimum annual salary in EUR. 0 applies no salary filter.
salaryTypestring"0" (Any)Salary period code used with Minimum salary: "1" per annum, "4" per hour, "5" per day.
postedWithinstring"0" (Any time)Days since posting: "1", "3", "7", "14", or "30".
sortBystring"1" (Most relevant)"2" Most recent, or "3" Salary (high to low).
urlsarray[] (a sample URL is prefilled in the console)Search-result links to paginate in url mode.
maxPagesintegernone (unlimited)Max search-result pages to walk per search. 0 or empty also means unlimited.
maxListingsinteger20Max jobs to return. 0 is unlimited.
fetchDetailsbooleanfalseFetch each job's detail page for the full description, GPS coordinates and contact details. Bills a per-job enrichment charge only for pages actually read.
resumeFromRunIdstringnonePrevious run id or dataset id to skip already-collected jobs.
incrementalModebooleanfalseEnable recurring monitoring with change detection.
stateKeystringnoneStable key for the monitoring campaign's saved baseline. Defaults to a hash of your search.
emitUnchangedbooleanfalseAlso return (and bill) UNCHANGED rows.
emitExpiredbooleanfalseAlso return (and bill) EXPIRED rows. Requires a complete, uncapped scan of the search.
proxyobjectResidential (Ireland)Connection settings.
mcpConnectorsarray[]Connector ids to forward jobs to (Notion, Airtable, Linear).
notionParentPageUrlstringnoneNotion connector only: page under which jobs are created.
maxNotifyListingsinteger50Cap on jobs written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"jobId": "9482113",
"jobUrl": "https://www.irishjobs.ie/job/senior-backend-engineer-job9482113",
"title": "Senior Backend Engineer",
"description": "We are looking for an experienced backend engineer to join our growing platform team. You will design and maintain APIs, mentor junior developers, and work closely with product on our core booking system.",
"employerName": "Clover Peak Technologies",
"employerUrl": "https://www.irishjobs.ie/company/clover-peak-technologies",
"employerLogoUrl": "https://www.irishjobs.ie/img/logos/cloverpeak.png",
"employerId": 55210,
"locationText": "County Dublin",
"locationLocality": "Dublin",
"locationRegion": "County Dublin",
"locationPostalCode": "D02 XY45",
"locationCountry": "IE",
"locationLat": 53.3498,
"locationLng": -6.2603,
"salaryRaw": "€55,000 - €65,000 per annum",
"salaryMin": 55000,
"salaryMax": 65000,
"salaryCurrency": "EUR",
"salaryPeriod": "year",
"employmentType": "FULL_TIME",
"skills": ["Python", "AWS", "Kubernetes"],
"datePosted": "2026-09-15T09:00:00+00:00",
"validThrough": "2026-10-15T00:00:00+00:00",
"applyUrl": "https://careers.cloverpeak.example/apply/9482113",
"applyType": "external",
"sourceSearchUrl": "https://www.irishjobs.ie/jobs/software-engineer/in-dublin",
"contactPhone": "+353 20 910 0142",
"contactEmail": "careers@example.com",
"isSponsored": false,
"isHighlighted": true,
"isTopJob": false,
"isTrafficFromPartner": false,
"crossPostedCount": 0,
"scrapedAt": "2026-09-29T10:15:00+00:00"
}

Plan Requirement

This actor needs a residential Ireland (or GB) connection to read IrishJobs.ie reliably; the default proxy setting already selects it, and the run automatically retries with a different connection when one is refused. Detail-page enrichment also needs this connection type: without it, Fetch detail pages is skipped for the run and only listing fields are returned, at no enrichment charge.

FAQ

How much does it cost?

You pay a small charge per job returned in the dataset, plus a smaller per-job enrichment charge, but only for jobs whose detail page was actually fetched and read (that only happens when Fetch detail pages is on). The Pricing tab shows the current rates. Use Max jobs to cap the cost of any run.

This actor collects only publicly available job listing data. You are responsible for how you use it: follow IrishJobs.ie's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution, especially around any contact details in a listing.

Can I get only new or changed jobs on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and expired jobs, and unchanged ones are not billed. Expired jobs need emitExpired on and at least one earlier run that completed a full, uncapped scan of the search; until then, a job that stops appearing is simply left alone in the saved baseline rather than marked gone. A job that comes back after being marked expired is reported as NEW again, not as a distinct "reappeared" state.

Why is employmentType empty on some jobs?

IrishJobs.ie's listing cards do not carry an employment type field at all. It is only filled in when Fetch detail pages is on and the job's own page states it.

Why did my run fail instead of returning an empty dataset?

If the site refuses every request, the run stops with a clear error so "no jobs match this search" is never confused with "nothing could be read". Run it again in a few minutes, or check your proxy settings. A genuine zero-match search still succeeds with an empty dataset.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push jobs into Notion, Airtable or Linear.

🔗 Want more jobs data?

Pair this actor with these related scrapers from the same team:

💼 Totaljobs Scraper
Scrape UK job listings from Totaljobs.com by keyword, location, filters, or URL. Extract...
💼 Jobsite UK
From $1/1K. Collect UK job listings from Jobsite.co.uk at scale. Search by keyword...
💼 NIJobs Scraper
Scrape NIJobs.com listings across Northern Ireland by keyword, location, salary, posted...
💼 Cwjobs UK
From $1/1k. Scrape tech and IT jobs from CWJobs.co.uk into clean, structured data. Search...
💼 France Travail Scraper
Scrape job offers from France Travail with titles, companies, locations, salaries...
💼 StepStone.de
Scrape StepStone.de jobs by keyword, location, filters, or URL. Extract 35+ fields...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.