Marketing jobs in the UK

For marketing professionals in search of a new role, Hays consultants have the expertise, the employer connections and a wide range of marketing jobs to suit your need.

Search for a Job

Marketing jobs in the UK

For marketing professionals in search of a new role, Hays consultants have the expertise, the employer connections and a wide range of marketing jobs to suit your need.

Search for a Job

Our recruitment experience in marketing jobs

From temp to perm, from executive level to junior marketers, find the marketing job that’s right for you, for right now or the longer term.

Our dedicated team of expert marketing consultants have been placing marketing professionals within the industry for over 20 years.

With 93 recruitment offices across the UK, we’ve got an edge with our national marketing job listings, regional insights and deep understanding of the competitive marketing industry. And having placed over 1,100 marketing professionals in the last year alone, you can trust our hands-on experience of placing marketers in private and public sector organisations of all sizes.

Hiring across a multitude of roles in marketing, we've got jobs in digital marketing, customer experience, communications, data analysis and insight, PR, strategy and business development, creative and design, marketing strategy and customer experience, business development, customer insight and retention, project management and planning, brand and product, content, events, social media and public affairs.

Delving deeper into the evolving landscape we’re seeing a growth in demand for marketing experts in CRM, SEO, PPC, data analytics and insights and we’ve got the jobs to match your skills.

Agency side or in-house, we’ve got marketing opportunities for all levels – from leadership roles to director jobs and from manager level all the way to entry marketing positions. Our long-standing, trusted employer relationships make us a lifelong partner of choice to our candidates.

Take a look at our extensive marketing jobs.

 

Marketing employers we work with

We’re proud to work with over 850 respected organisations offering marketing roles across the UK. Our employers range from emerging fintech organisations to prestigious corporations. And as our network covers locations such as Manchester, London, Belfast, Glasgow and many more areas around the UK, you’ll gain unrestricted access to incredible opportunities in marketing.

Some of the industry-leading employers we work with include: Arriva, Propel, BDO, Translink, Health Shield, The Mindful Collective, Hard Numbers, Poole Bay Holdings Ltd, NHS Lanarkshire, OnFife, University of Glasgow, Queen Margaret University, The Rayware Group, Skills Development Scotland, University of Bradford, University of York, Clanmil Housing, Interface and Commissioner for Older People for Northern Ireland.

We work with over 850 respected organisations offering marketing roles across the UK

Grinning man

Matthew is very professional, friendly, and ready to help. He responds quickly to queries and keeps in contact with you after placement. I would recommend Matthew as a recruitment consultant.

-Louise Cassidy, Engagement Officer
An error occurred while processing the template.
The following has evaluated to null or missing:
==> haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale)  [in template "20115#20151#46851441" 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#46851441" 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                    <!-- section header start --> 
33 
34                        <div class="d-flex justify-content-between align-items-end container-content flex-wrap mb-9"> 
35                            <#if cur_JobsByKeword.Title.getData()?has_content> 
36                                <h2 class="text-brand-blue font-weight-light mb-0 fs-700 fs-lg-800 mb-0 section-heading"> 
37                                    ${cur_JobsByKeword.Title.getData()?keep_before(" ")} 
38                                    <span class="font-weight-semibold">${cur_JobsByKeword.Title.getData()?keep_after(" ")}</span> 
39                                </h2> 
40                            </#if> 
41                            <#if cur_JobsByKeword.CTA.getData()?has_content> 
42                                <a class="button button--arrow button--no-style-teal-dark" href=${portalSearchURL}>${cur_JobsByKeword.CTA.getData()}</a> 
43                            </#if> 
44                        </div> 
45 
46                    <!-- section header end --> 
47 
48 
49                    <#assign resultJobs = jobsResults.getJSONObject("result").getJSONArray("jobs")> 
50                    <#assign jobsResultsLength = resultJobs.length() /> 
51                    <#assign index = (jobsResultsLength > 3)?then(3, jobsResultsLength) /> 
52 
53                    <div class="carousel"> 
54                        <ul class="container-content grid grid-3 grid-gap-16 grid-gap-lg-32 grid-lg-3"> 
55                            <#list 0..index-1 as i> 
56                                <#if jobsResultsLength != 0> 
57                                    <#if resultJobs.getJSONObject(i).has("nonFilterableCustomFields")> 
58                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("JobTitle")> 
59                                            <#assign jobCardTitle = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("JobTitle").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
60                                            <#assign jobCardTitle = jobCardTitle?replace("\\\\u(....)", "&#x$1;", "r")/> 
61                                        </#if> 
62                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocationDescription")> 
63                                            <#assign jobCardLocationDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocationDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
64                                            <#assign jobCardLocationDescription = jobCardLocationDescription?replace("\\\\u(....)", "&#x$1;", "r")/> 
65                                        </#if> 
66                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xSalaryDescription")> 
67                                            <#assign jobCardSalaryDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xSalaryDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
68                                            <#assign jobCardSalaryDescription = jobCardSalaryDescription?replace("\\\\u(....)", "&#x$1;", "r")/> 
69                                        </#if> 
70                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocaleRecordID")> 
71                                            <#assign url = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocaleRecordID").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
72                                            <#assign jobUrl = url?keep_after("//")?keep_after("/") /> 
73                                          <#assign jobFriendlyUrl = mobilePortalUrl + "/" + jobUrl + "?jobSource=HaysGCJ" /> 
74                                        </#if> 
75                                    </#if> 
76                                </#if> 
77 
78                                <li class="carousel-slide"> 
79                                    <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"> 
80                                        <h4 class="text-black lh-title fs-500 fs-lg-600 font-weight-bold mb-4"> 
81                                            ${jobCardTitle} 
82                                        </h4> 
83                                        <ul class="font-weight-light mb-4 mb-lg-4 fs-400 fs-lg-400"> 
84                                            <li class="d-flex mb-3"> 
85                                                <svg class="feather-icon mr-3 mr-lg-5"> 
86                                                    <path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path> 
87                                                    <circle cx="12" cy="10" r="3"></circle> 
88                                                </svg> 
89                                                <span class="job-card-label font-weight-normal">${jobCardLocationDescription}</span> 
90                                            </li> 
91                                            <li class="d-flex align-items-start"> 
92                                                <div class="group-center mr-3 mr-lg-5"> 
93                                                    <svg class="feather-icon"> 
94                                                        <circle cx="12" cy="12" r="10"></circle> 
95                                                    </svg> 
96                                                     <span> 
97                                                        <#if langId == "en_AE" || langId == "en_CZ" || langId == "en_PL"> 
98                                                            <svg class="feather-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="width:13px;height:13px"> 
99                                                                <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"/> 
100                                                            </svg> 
101                                                        <#else> 
102                                                            ${currency.getInstance(themeDisplay.getLocale()).getSymbol(themeDisplay.getLocale())} 
103                                                        </#if> 
104                                                    </span> 
105                                                </div> 
106                                                <span class="job-card-label font-weight-normal">${jobCardSalaryDescription}</span> 
107                                            </li> 
108                                        </ul> 
109 
110                                        <!-- View Details Button Start --> 
111 
112                                        <div class="job-card__action"> 
113                                            <#if (JobDetailText.getData())??> 
114                                                <button onClick="location.href='${jobFriendlyUrl}'" class="button button--small button--teal-dark button--arrow"> 
115                                                    ${JobDetailText.getData()} 
116                                                </button> 
117                                            </#if> 
118                                        </div> 
119 
120                                        <!-- View Details Button End --> 
121 
122                                    </a> 
123                                </li> 
124                            </#list> 
125                        </ul> 
126                    </div> 
127                </div> 
128                <br/> 
129            </#if> 
130        </#if> 
131    </#list> 
132</#if> 
133</div> 

FEATURED EMPLOYERS

View all

MARKETING JOBS FAQs

Jobs in marketing can see competitive salaries. A digital marketing executive could expect to earn an annual salary of between £25,000-£43,000, and an SEO/PPC executive in the region of £30,000-£40,000.

Regarding more senior positions, a head of SEO could see anywhere between £50,000-£90,000 a year, while a head of comms could command a six-digit figure.

Marketing covers a breadth of different core roles, meaning annual salaries will differ depending on a job’s profile and responsibilities. Experience and location need to be factored, too.

Get a closer look of how much you could be earning in marketing by browsing our Salary Guide.

Reaching out to customers and stakeholders via technology has only become more important in recent years and there is a particularly high demand for digital marketing roles. This includes digital copywriters, digital marketers, social media managers, web content managers and SEO or PPC specialists.

For those with more leadership experience, there are also C-suite roles available – the most common being chief marketing officer (CMO).

No, you do not need a degree to become a marketing professional. In fact, many employers will favour experience over formal qualifications. Being immersed in a marketing environment is often the best way of consolidating both the soft and technical skills required in a marketing career. This includes a strong command of language and high attention to detail, combined with the technical expertise required to perform in a modern organisation.

With that being said, a marketing degree – such as a BA in digital marketing – will undoubtedly give you a competitive edge.

OUR RECRUITMENT PROCESS