Alert: Jobseekers are being fraudulently contacted by scammers. More details
Public relations and PR jobs in Ireland
No matter what stage your public relations (PR) career is at, we have a wide range of exciting roles ranging from junior to executive level.
Our recruitment experience in public relations jobs
While change may be the new norm, organisations will always require professionals who can uphold and safeguard their public image and maintain close relations with their audiences. However, PR roles can be elusive, and the competition high.
We’ll network with leading employers and find you the best PR roles – those that make the most of your talents and expertise. Not only that, but we’ll offer you career advice and specialist insights to help your PR career prosper. It's all part of being your lifelong partner.
When it comes to finding a new job, everyone has different priorities – for us, it’s about understanding your professional needs and your personal motivation so that we can tailor our approach to you. No matter your PR ambitions, you can trust us to work for your tomorrow.
Take a look at our extensive public relations jobs.
As a PR professional, you won’t need to be told how important it is to form close, long-lasting connections. We offer a network of respected employers seeking marketers, with over 800 organisations partnering with us last year across Ireland and the UK to build out and restructure their marketing/communications departments.
You’ll have the chance to champion the public persona of a wide range of organisations across the country, from rapidly growing fintechs to established organisations with a global audience. This includes those operating in places such as Dublin, Cork, Limerick, Galway and elsewhere.
Our marketing fields
The following has evaluated to null or missing: ==> haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale) [in template "20115#20151#T-HAYS-JOBS-BY-KEYWORD-WEB2" at line 26, column 36] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign jobsResults = haysJobsLocalSe... [in template "20115#20151#T-HAYS-JOBS-BY-KEYWORD-WEB2" at line 26, column 13] ----
1<div class="py-16">
2
3<#assign haysJobsLocalService = serviceLocator.findService("com.hays.jobs.service.HaysJobsService")>
4<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale">
5<#assign mobileUrlKey = themeDisplay.getLocale()+"."+siteType+"."+"WEB2_Mobile_Hostname">
6<#assign jobURLKey = themeDisplay.getLocale()+"."+siteType+"."+"WEB2_JobSearch">
7<#assign jobSearchUrl = propsUtil.get(jobURLKey)!"">
8<#assign ucmLocale = propsUtil.get(ucmLocaleKey)!"">
9<#assign mobilePortalUrl = propsUtil.get(mobileUrlKey) !"">
10<#assign langId = themeDisplay.getLanguageId() />
11<#assign currency = staticUtil["java.util.Currency"]>
12<#assign textFormatter = staticUtil["java.net.URLEncoder"]>
13
14<#assign index = 3 />
15<#assign jobCardTitle = ""/>
16<#assign portalSearchURL = "" />
17<#assign jobFriendlyUrl = "" />
18<#assign jobCardSalaryDescription = ""/>
19<#assign jobCardLocationDescription = ""/>
20
21<#if JobsByKewords.getSiblings()?has_content>
22 <#list JobsByKewords.getSiblings() as cur_JobsByKeword>
23 <#assign keyword = cur_JobsByKeword.Keyword.getData()>
24 <#assign encodedKeyword = textFormatter.encode(keyword, "UTF-8")>
25 <#if keyword?? && keyword?has_content>
26 <#assign jobsResults = haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale)>
27 <#assign portalSearchURL = mobilePortalUrl + "/" + jobSearchUrl + "?q=${encodedKeyword}" />
28
29 <#if !jobsResults.getJSONObject("result").isNull("jobs")>
30 <div>
31
32 <div class="d-flex justify-content-between align-items-end container-content flex-wrap mb-9">
33 <#if cur_JobsByKeword.Title.getData()?has_content>
34 <h2 class="text-brand-blue font-weight-light mb-0 fs-700 fs-lg-800 mb-0 section-heading">
35 ${cur_JobsByKeword.Title.getData()?keep_before(" ")}
36 <span class="font-weight-semibold">${cur_JobsByKeword.Title.getData()?keep_after(" ")}</span>
37 </h2>
38 </#if>
39 <#if cur_JobsByKeword.CTA.getData()?has_content>
40 <a class="button button--arrow button--no-style-teal-dark" href=${portalSearchURL}>${cur_JobsByKeword.CTA.getData()}</a>
41 </#if>
42 </div>
43
44 <#assign resultJobs = jobsResults.getJSONObject("result").getJSONArray("jobs")>
45 <#assign jobsResultsLength = resultJobs.length() />
46 <#assign index = (jobsResultsLength > 3)?then(3, jobsResultsLength) />
47
48 <div class="carousel">
49 <ul class="container-content grid grid-3 grid-gap-16 grid-gap-lg-32 grid-lg-3">
50 <#list 0..index-1 as i>
51 <#if jobsResultsLength != 0>
52 <#if resultJobs.getJSONObject(i).has("nonFilterableCustomFields")>
53 <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("JobTitle")>
54 <#assign jobCardTitle = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("JobTitle").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/>
55 <#assign jobCardTitle = jobCardTitle?replace("\\\\u(....)", "&#x$1;", "r")/>
56 </#if>
57 <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocationDescription")>
58 <#assign jobCardLocationDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocationDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/>
59 <#assign jobCardLocationDescription = jobCardLocationDescription?replace("\\\\u(....)", "&#x$1;", "r")/>
60 </#if>
61 <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xSalaryDescription")>
62 <#assign jobCardSalaryDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xSalaryDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/>
63 <#assign jobCardSalaryDescription = jobCardSalaryDescription?replace("\\\\u(....)", "&#x$1;", "r")/>
64 </#if>
65 <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocaleRecordID")>
66 <#assign url = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocaleRecordID").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/>
67 <#assign jobUrl = url?keep_after("//")?keep_after("/") />
68 <#assign jobFriendlyUrl = mobilePortalUrl + "/" + jobUrl + "?jobSource=HaysGCJ" />
69 </#if>
70 </#if>
71 </#if>
72
73 <li class="carousel-slide">
74 <a href="${jobFriendlyUrl}" class="job-card job-card--grid-teal is-active d-block rounded-lg border border-borders py-7 pb-lg-6 pt-lg-5 px-6 d-flex">
75 <h4 class="text-black lh-title fs-500 fs-lg-600 font-weight-bold mb-4">
76 ${jobCardTitle}
77 </h4>
78 <ul class="font-weight-light mb-4 mb-lg-4 fs-400 fs-lg-400">
79 <li class="d-flex mb-3">
80 <svg class="feather-icon mr-3 mr-lg-5">
81 <path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path>
82 <circle cx="12" cy="10" r="3"></circle>
83 </svg>
84 <span class="job-card-label font-weight-normal">${jobCardLocationDescription}</span>
85 </li>
86 <li class="d-flex align-items-start">
87 <div class="group-center mr-3 mr-lg-5">
88 <svg class="feather-icon">
89 <circle cx="12" cy="12" r="10"></circle>
90 </svg>
91 <span>
92 <#if langId == "en_AE" || langId == "en_CZ" || langId == "en_PL">
93 <svg class="feather-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="width:13px;height:13px">
94 <path d="M13 5C13 6.10457 10.5376 7 7.5 7C4.46243 7 2 6.10457 2 5M13 5C13 3.89543 10.5376 3 7.5 3C4.46243 3 2 3.89543 2 5M13 5V9.45715C11.7785 9.82398 11 10.3789 11 11M2 5V17C2 18.1046 4.46243 19 7.5 19C8.82963 19 10.0491 18.8284 11 18.5429V11M2 9C2 10.1046 4.46243 11 7.5 11C8.82963 11 10.0491 10.8284 11 10.5429M2 13C2 14.1046 4.46243 15 7.5 15C8.82963 15 10.0491 14.8284 11 14.5429M22 11C22 12.1046 19.5376 13 16.5 13C13.4624 13 11 12.1046 11 11M22 11C22 9.89543 19.5376 9 16.5 9C13.4624 9 11 9.89543 11 11M22 11V19C22 20.1046 19.5376 21 16.5 21C13.4624 21 11 20.1046 11 19V11M22 15C22 16.1046 19.5376 17 16.5 17C13.4624 17 11 16.1046 11 15" stroke="" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
95 </svg>
96 <#else>
97 ${currency.getInstance(themeDisplay.getLocale()).getSymbol(themeDisplay.getLocale())}
98 </#if>
99 </span>
100 </div>
101 <span class="job-card-label font-weight-normal">${jobCardSalaryDescription}</span>
102 </li>
103 </ul>
104
105 <div class="job-card__action">
106 <#if (JobDetailText.getData())??>
107 <button onClick="location.href='${jobFriendlyUrl}'" class="button button--small button--teal-dark button--arrow">
108 ${JobDetailText.getData()}
109 </button>
110 </#if>
111 </div>
112
113 </a>
114 </li>
115 </#list>
116 </ul>
117 </div>
118 </div>
119 <br/>
120 </#if>
121 </#if>
122 </#list>
123</#if>
124</div>
Career advice from Hays
View all career advice
Our recruitment process
Your application goes directly to your very own dedicated, expert consultant.
A consultant will reach out and discuss your application, career history and future ambitions.
Your dedicated consultant will meet you virtually or in one of our many offices near you.
We listen, provide impartial career advice to place you in the right job, with the right organisation.
Search and apply for jobs, manage your profile, develop new skills and more, all in one place.
Public relations jobs FAQs
This will of course depend on your location, expertise and employer, but as an indication, a PR executive could expect to earn anywhere between €30,000-€45,000 a year. For a manager, this ceiling could extend to €55,000.
For senior roles with PR responsibilities – such as a head of comms – a typical salary might be €75,000, with roles for larger organisations able to earn €80,000 or more.
Find out what PR roles are paying the most, and in which regions, by reading our Salary Guide.
There is no requirement to have a degree or qualification to work in PR. Instead, potential employers may be more interested in your trustworthiness as a communications professional. Building an online profile and portfolio of your work is therefore highly recommended.
While a degree is not a necessity, having one may help fast-track your PR career. An undergraduate degree that demonstrates your ability to communicate – such as English, history or law – could be valuable. It’s also possible to study specifically for PR or marketing, either at a university or accredited body, such as the Chartered Institute of Public Relations.
While digital proficiency is increasingly important in a rapidly changing communications landscape, employers still want candidates to demonstrate exemplary levels of written speech, with the ability to find a story’s critical angle.
As PR provides the opportunity to explore many different sectors and niches, the willingness to learn about a product, service, culture or audience will not go unnoticed.
You can discover the soft skills marketing employers are after in our Salary Guide.
Different marketing roles may be given PR responsibilities, even if they are not expressly titled as a PR role. With that being said, dedicated titles include PR executive and PR manager. There also senior roles with PR duties, such as communications manager or head of comms.