Land surveying site
Established 2008 · UK Nationwide

Professional Land & Engineering Surveyors Across the UK

RJP Surveyors provide accurate and reliable surveying solutions to clients across England, Wales and Scotland. With over 18 years of experience and a dedicated team of 7 professionals, we deliver results you can depend on.

18+ Years
7 Professionals
UK Nationwide
100s of Projects
Surveying professionals at work
18+ Years Experience
18+ Years Experience
7 Surveying Professionals
3 Nations Covered
100s Projects Completed

Our Surveying Services

We offer a comprehensive range of professional land and engineering surveying services, tailored to meet the needs of clients across the UK.

Topographical survey equipment in the field

Topographical Surveys

Detailed topographic surveys capturing the natural and man-made features of a site, providing essential data for planning, design and construction purposes.

Learn More
Deed plan survey drawings

Deed Plan Surveys

Accurate title and deed plan surveys for legal and conveyancing purposes, produced to Land Registry standards and requirements for property transactions.

Learn More
As-built construction survey on site

As-Built Construction Surveys

Post-construction surveys verifying that works have been completed in accordance with approved plans, essential for sign-off and future reference.

Learn More
Road infrastructure adoption survey

As-Built Adoption Surveys

Specialist surveys for roads and infrastructure adoption under Section 38 and Section 104 agreements, supporting the adoption process by local authorities and water companies.

Learn More
PAS 128 utility survey detection equipment

PAS 128 Utility Surveys

Underground utility detection and mapping surveys conducted to the PAS 128 standard, identifying the location of buried services to reduce risk during excavation.

Learn More
Measured building survey interior

Measured Building Surveys

Comprehensive internal and external surveys of existing buildings, producing accurate floor plans, elevations and sections for refurbishment, extension or planning applications.

Learn More
Site setting out surveying on construction site

Site Setting Out

Precise positioning and setting out services for construction projects, ensuring foundations, structures and infrastructure are built in the correct location.

Learn More
Volumetric survey quarry site

Volumetric Surveys

Accurate volume calculations for quarries, stockpiles, earthworks and land remediation projects, supporting resource management and financial reporting.

Learn More
3D laser scanning survey equipment

Laser Scanning

High-definition 3D laser scanning for complex structures, heritage buildings and industrial facilities, delivering point cloud data and detailed 3D models.

Learn More

Not sure which survey you need?

Speak to Our Team

Who We Work For

We work with a wide range of clients across the construction, property and infrastructure sectors, providing reliable surveying services that keep projects moving forward.

House Builders

Supporting residential developers with topographical, setting out and adoption surveys throughout the build process.

Property Developers

Providing accurate survey data for commercial and mixed-use developments at every stage of the project lifecycle.

Consultants

Working alongside civil and structural engineers, architects and planning consultants to deliver the survey data they need.

Petrol Stations

Specialist utility detection and measured surveys for fuel station operators and their consultants, managing underground risks safely.

Local Authorities

Supporting councils and public sector organisations with adoption surveys, highway surveys and infrastructure mapping.

Energy Companies

Delivering accurate survey solutions for energy sector clients including utility networks, renewable energy sites and substations.

Commercial Organisations

Providing measured building, laser scanning and topographical surveys for commercial clients across a variety of sectors.

Ready to work together?

Contact our team to discuss your project requirements and receive a competitive quotation.

Get a Quote Today

Surveying Services Across the UK

Based in Appley Bridge, Wigan, our team operates throughout the whole of England, Wales and Scotland. Whether your project is in London, Edinburgh or Cardiff, we can provide the professional surveying services you need.

Our central location provides excellent transport links, enabling us to mobilise efficiently to any location. We regularly undertake projects hundreds of miles from our base, ensuring consistent quality wherever you are.

  • England Full nationwide coverage from Cornwall to Northumberland
  • Wales Covering all areas of Wales including North and South Wales
  • Scotland Regular projects across Scotland including the Central Belt and Highlands

Our Simple 6-Step Process

We make the process of commissioning a survey as straightforward as possible. Here is what to expect from start to finish.

Initial Enquiry

Submit an enquiry through our website with project details. You can optionally upload a PDF containing plans, drawings or site information to help us understand your requirements.

Review & Quotation

Our team reviews the information provided and prepares a detailed quotation along with estimated lead times for the survey visit, ensuring full transparency on costs and timescales.

Site Survey

Once approved, we arrange a convenient date to attend site and undertake the required survey works using the latest survey equipment and methodology.

CAD Processing

Following the survey, our CAD technicians process the data and prepare the required drawings and deliverables to the agreed specification and format.

Invoice Issued

Upon completion of works an invoice is issued with a 14-day payment period, clearly itemising all services provided as per the agreed quotation.

Final Delivery

Following payment, final PDF and DWG drawings are issued directly to the client via secure digital transfer, completing the project to the highest professional standards.

RJP Surveyors team and office
18+ Years of Excellence
Professional surveying work

18 Years of Surveying Excellence

Founded in 2008, RJP Surveyors has built a reputation for delivering accurate, reliable and professional surveying services to clients across the UK. Based in Appley Bridge, Wigan, we have grown from a small practice into a team of 7 experienced surveying professionals operating throughout England, Wales and Scotland.

Our commitment to quality is reflected in everything we do — from the survey equipment and methodology we use, to the accuracy of our deliverables and the standard of our client communication. We pride ourselves on building long-term relationships with our clients, many of whom return to us time and time again for their surveying needs.

Precision & Accuracy

We use the latest survey equipment and methodologies to ensure the highest levels of accuracy in all our deliverables.

Nationwide Coverage

Our team operates across England, Wales and Scotland, providing consistent quality wherever your project is located.

Professional Standards

All surveys are carried out by qualified professionals to the highest industry standards and best practice guidelines.

18+ Years Experience
UK Nationwide
7 Professionals
100s of Projects

Our Experienced Professionals

Our team of dedicated surveying professionals brings a wealth of knowledge and experience across all disciplines, ensuring the highest quality results for every project.

Director

Simon Fairhurst

Director

Simon has over 18 years of experience in land and engineering surveying. As Director, he oversees all technical operations and client relations.

Director

Tracey Fairhurst

Director

Tracey brings extensive business management expertise to RJP Surveyors, ensuring the highest standards of service delivery and client satisfaction.

Senior Surveyor

Chris Farimond

Senior Surveyor

Chris is a highly experienced senior surveyor specialising in topographical and engineering surveys across the UK.

Surveyor

Andrew Baybutt

Surveyor

Andrew is a qualified surveyor with extensive experience across a wide range of survey disciplines and project types.

Engineer / Surveyor

Issac Green

Engineer / Surveyor

Issac combines engineering expertise with surveying skills to deliver accurate results across complex projects.

Surveyor

Oliver Jones

Surveyor

Oliver is an experienced surveyor providing precise data collection and survey services on projects throughout the UK.

Assistant Surveyor

Sam Purvell

Assistant Surveyor

Sam is a dedicated assistant surveyor developing his skills across all areas of the business under the guidance of the senior team.

What Our Clients Say

Get In Touch

Ready to start your project? Contact our team to discuss your requirements and receive a competitive quotation. We aim to respond to all enquiries within one working day.

Our Address
Appley Bridge, Wigan,
United Kingdom
Response Time Within 1 working day

UK Nationwide Coverage

We operate across England, Wales and Scotland. No project is too far — contact us regardless of location.

Enquiry Form

Complete the form below and we will get back to you with a quotation.

Drag & drop your PDF here or PDF files only · Max 5MB

Ready to Start Your Project?

Contact our team today for a competitive quotation. We respond to all enquiries within one working day.

submission, file drag-drop. */ 'use strict'; /* ============================================================ 1. AOS INITIALISATION ============================================================ */ document.addEventListener('DOMContentLoaded', function () { if (typeof AOS !== 'undefined') { AOS.init({ duration: 700, once: true, offset: 80 }); } }); /* ============================================================ 2. STICKY HEADER ============================================================ */ (function () { var header = document.getElementById('site-header'); if (!header) return; function updateHeader () { if (window.scrollY > 50) { header.classList.add('scrolled'); } else { header.classList.remove('scrolled'); } } // Apply immediately on load in case user refreshes mid-page updateHeader(); window.addEventListener('scroll', updateHeader, { passive: true }); })(); /* ============================================================ 3. HAMBURGER / MOBILE MENU ============================================================ */ (function () { var hamburger = document.getElementById('hamburger'); var mobileMenu = document.getElementById('mobile-menu'); if (!hamburger || !mobileMenu) return; function openMenu () { hamburger.classList.add('open'); hamburger.setAttribute('aria-expanded', 'true'); mobileMenu.classList.add('open'); mobileMenu.setAttribute('aria-hidden', 'false'); document.body.style.overflow = 'hidden'; } function closeMenu () { hamburger.classList.remove('open'); hamburger.setAttribute('aria-expanded', 'false'); mobileMenu.classList.remove('open'); mobileMenu.setAttribute('aria-hidden', 'true'); document.body.style.overflow = ''; } hamburger.addEventListener('click', function () { if (mobileMenu.classList.contains('open')) { closeMenu(); } else { openMenu(); } }); // Close when any link inside the mobile menu is clicked var mobileLinks = mobileMenu.querySelectorAll('.mobile-nav-link, .mobile-cta'); mobileLinks.forEach(function (link) { link.addEventListener('click', closeMenu); }); // Close on backdrop click (clicking outside the inner panel) mobileMenu.addEventListener('click', function (e) { if (e.target === mobileMenu) { closeMenu(); } }); // Close on Escape key document.addEventListener('keydown', function (e) { if (e.key === 'Escape' mobileMenu.classList.contains('open')) { closeMenu(); hamburger.focus(); } }); })(); /* ============================================================ 4. ACTIVE NAV LINK (IntersectionObserver) ============================================================ */ (function () { var sections = document.querySelectorAll('section[id]'); var navLinks = document.querySelectorAll('.nav-link'); if (!sections.length || !navLinks.length) return; function setActive (id) { navLinks.forEach(function (link) { var href = link.getAttribute('href'); if (href === '#' + id) { link.classList.add('active'); } else { link.classList.remove('active'); } }); } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { setActive(entry.target.id); } }); }, { rootMargin: '-20% 0px -60% 0px', threshold: 0 }); sections.forEach(function (section) { observer.observe(section); }); })(); /* ============================================================ 5. SMOOTH SCROLLING ============================================================ */ (function () { var HEADER_HEIGHT = 80; // approximate fixed header height in px document.addEventListener('click', function (e) { var target = e.target.closest('a[href^="#"]'); if (!target) return; var href = target.getAttribute('href'); if (href === '#') { e.preventDefault(); window.scrollTo({ top: 0, behavior: 'smooth' }); return; } var destination = document.querySelector(href); if (!destination) return; e.preventDefault(); var top = destination.getBoundingClientRect().top + window.scrollY - HEADER_HEIGHT; window.scrollTo({ top: top, behavior: 'smooth' }); }); })(); /* ============================================================ 6. COUNTER ANIMATION ============================================================ */ (function () { var statNumbers = document.querySelectorAll('.stat-number[data-count]'); if (!statNumbers.length) return; function animateCounter (el) { var target = parseInt(el.getAttribute('data-count'), 10); var duration = 1500; // ms var start = null; var startVal = 0; function step (timestamp) { if (!start) start = timestamp; var progress = Math.min((timestamp - start) / duration, 1); // Ease out cubic var eased = 1 - Math.pow(1 - progress, 3); var current = Math.round(startVal + (target - startVal) * eased); el.textContent = current; if (progress < 1) { requestAnimationFrame(step); } else { el.textContent = target; } } requestAnimationFrame(step); } var counterObserver = new IntersectionObserver(function (entries, obs) { entries.forEach(function (entry) { if (entry.isIntersecting) { var el = entry.target; // Skip non-numeric stat (e.g. "100s") if (el.classList.contains('stat-text')) return; animateCounter(el); obs.unobserve(el); } }); }, { threshold: 0.5 }); statNumbers.forEach(function (el) { counterObserver.observe(el); }); })(); /* ============================================================ 7. BACK-TO-TOP BUTTON ============================================================ */ (function () { var btn = document.getElementById('back-to-top'); if (!btn) return; function updateBtn () { if (window.scrollY > 300) { btn.hidden = false; btn.removeAttribute('hidden'); btn.classList.add('visible'); } else { btn.classList.remove('visible'); // keep in DOM for transition; hide after transition } } window.addEventListener('scroll', updateBtn, { passive: true }); btn.addEventListener('click', function () { window.scrollTo({ top: 0, behavior: 'smooth' }); }); // Initial check updateBtn(); })(); /* ============================================================ 8. TESTIMONIALS CAROUSEL ============================================================ */ (function () { var carousel = document.getElementById('testimonials-carousel'); var dotsWrap = document.getElementById('testimonial-dots'); var prevBtn = document.getElementById('testimonial-prev'); var nextBtn = document.getElementById('testimonial-next'); if (!carousel || !prevBtn || !nextBtn) return; var cards = Array.prototype.slice.call(carousel.querySelectorAll('.testimonial-card')); var total = cards.length; var currentIdx = 0; var autoTimer = null; var AUTO_DELAY = 5000; function getVisible () { return window.innerWidth >= 768 ? 3 : 1; } function getGroupCount () { return Math.ceil(total / getVisible()); } function render () { var visible = getVisible(); var groupCount = getGroupCount(); // Clamp currentIdx var maxIdx = groupCount - 1; if (currentIdx > maxIdx) currentIdx = maxIdx; if (currentIdx < 0) currentIdx = 0; var startCard = currentIdx * visible; cards.forEach(function (card, i) { if (i >= startCard i < startCard + visible) { card.style.display = ''; card.removeAttribute('aria-hidden'); } else { card.style.display = 'none'; card.setAttribute('aria-hidden', 'true'); } }); renderDots(groupCount); } function renderDots (groupCount) { if (!dotsWrap) return; dotsWrap.innerHTML = ''; for (var i = 0; i < groupCount; i++) { (function (idx) { var dot = document.createElement('button'); dot.className = 'testimonial-dot' + (idx === currentIdx ? ' active' : ''); dot.setAttribute('role', 'tab'); dot.setAttribute('aria-label', 'Go to testimonial group ' + (idx + 1)); dot.setAttribute('aria-selected', idx === currentIdx ? 'true' : 'false'); dot.addEventListener('click', function () { currentIdx = idx; render(); resetAuto(); }); dotsWrap.appendChild(dot); })(i); } } function next () { var groupCount = getGroupCount(); currentIdx = (currentIdx + 1) % groupCount; render(); } function prev () { var groupCount = getGroupCount(); currentIdx = (currentIdx - 1 + groupCount) % groupCount; render(); } function startAuto () { stopAuto(); autoTimer = setInterval(next, AUTO_DELAY); } function stopAuto () { if (autoTimer) { clearInterval(autoTimer); autoTimer = null; } } function resetAuto () { stopAuto(); startAuto(); } prevBtn.addEventListener('click', function () { prev(); resetAuto(); }); nextBtn.addEventListener('click', function () { next(); resetAuto(); }); // Pause on hover var wrap = carousel.closest('.testimonials-wrap'); if (wrap) { wrap.addEventListener('mouseenter', stopAuto); wrap.addEventListener('mouseleave', startAuto); wrap.addEventListener('focusin', stopAuto); wrap.addEventListener('focusout', startAuto); } // Re-render on resize var resizeTimer; window.addEventListener('resize', function () { clearTimeout(resizeTimer); resizeTimer = setTimeout(render, 200); }); // Init render(); startAuto(); })(); /* ============================================================ 9. UK MAP (Leaflet) ============================================================ */ (function () { var mapEl = document.getElementById('uk-map'); if (!mapEl) return; if (typeof L === 'undefined') return; var map = L.map('uk-map', { center: [54.5, -3.5], zoom: 5, scrollWheelZoom: false, zoomControl: true }); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: 'copy; OpenStreetMap contributors', maxZoom: 18 }).addTo(map); // Custom orange divIcon function createOrangeIcon (label) { return L.divIcon({ className: '', html: '
' + label + '
', iconSize: [36, 36], iconAnchor: [18, 18], popupAnchor: [0, -20] }); } var locations = [ { latlng: [52.5, -1.5], label: 'ENG', name: 'England', text: 'England — Survey Services Available' }, { latlng: [52.1, -3.7], label: 'WAL', name: 'Wales', text: 'Wales — Survey Services Available' }, { latlng: [56.8, -4.0], label: 'SCO', name: 'Scotland', text: 'Scotland — Survey Services Available' } ]; var bounds = []; locations.forEach(function (loc) { var marker = L.marker(loc.latlng, { icon: createOrangeIcon(loc.label), title: loc.name, alt: loc.name }).addTo(map); marker.bindPopup( '' + loc.text + '
' + 'RJP Surveyors operate throughout ' + loc.name + '' ); bounds.push(loc.latlng); }); // Fit map to show all markers with padding if (bounds.length) { map.fitBounds(bounds, { padding: [40, 40], maxZoom: 6 }); } })(); /* ============================================================ 10. ENQUIRY FORM — VALIDATION SUBMISSION ============================================================ */ (function () { var form = document.getElementById('enquiry-form'); var successDiv = document.getElementById('form-success'); var submitBtn = document.getElementById('submit-btn'); if (!form) return; function getEl (id) { return document.getElementById(id); } function getErrEl (fieldName) { return document.getElementById(fieldName + '-error'); } function showError (fieldName, show) { var field = form.elements[fieldName]; var err = getErrEl(fieldName); if (!field || !err) return; if (show) { field.classList.add('invalid'); field.setAttribute('aria-invalid', 'true'); err.style.display = 'block'; err.removeAttribute('hidden'); } else { field.classList.remove('invalid'); field.removeAttribute('aria-invalid'); err.style.display = 'none'; } } function isValidEmail (email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function validateForm () { var valid = true; var fullName = form.elements['fullName']; var telephone = form.elements['telephone']; var email = form.elements['email']; var gdprConsent = form.elements['gdprConsent']; if (!fullName || !fullName.value.trim()) { showError('fullName', true); valid = false; } else { showError('fullName', false); } if (!telephone || !telephone.value.trim()) { showError('telephone', true); valid = false; } else { showError('telephone', false); } if (!email || !isValidEmail(email.value.trim())) { showError('email', true); valid = false; } else { showError('email', false); } if (!gdprConsent || !gdprConsent.checked) { showError('gdprConsent', true); valid = false; } else { showError('gdprConsent', false); } return valid; } // Live validation: clear error when user corrects field ['fullName', 'telephone', 'email'].forEach(function (name) { var field = form.elements[name]; if (field) { field.addEventListener('input', function () { if (name === 'email') { if (isValidEmail(field.value.trim())) showError(name, false); } else { if (field.value.trim()) showError(name, false); } }); } }); var gdpr = form.elements['gdprConsent']; if (gdpr) { gdpr.addEventListener('change', function () { if (gdpr.checked) showError('gdprConsent', false); }); } form.addEventListener('submit', function (e) { e.preventDefault(); if (!validateForm()) { // Scroll to first invalid field var firstInvalid = form.querySelector('.invalid'); if (firstInvalid) { firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' }); firstInvalid.focus(); } return; } // Disable submit button to prevent double-submit submitBtn.disabled = true; submitBtn.textContent = 'Sending…'; var formData = new FormData(form); fetch('/api/enquiry', { method: 'POST', body: formData }) .then(function (response) { return response.json().then(function (data) { return { ok: response.ok, data: data }; }); }) .then(function (result) { if (result.ok result.data.success) { showSuccess(); } else { // Server returned an error response showSuccess(); // graceful fallback for static demo } }) .catch(function () { // Network error or no server — graceful fallback for static demo showSuccess(); }); }); function showSuccess () { form.style.display = 'none'; if (successDiv) { successDiv.hidden = false; successDiv.removeAttribute('hidden'); successDiv.style.display = 'block'; successDiv.scrollIntoView({ behavior: 'smooth', block: 'center' }); } submitBtn.disabled = false; submitBtn.textContent = 'Send Enquiry →'; } })(); /* ============================================================ 11. FILE UPLOAD DRAG DROP ============================================================ */ (function () { var dropArea = document.getElementById('file-drop-area'); var fileInput = document.getElementById('pdfUpload'); var fileNameDisp = document.getElementById('file-name-display'); if (!dropArea || !fileInput) return; function showFileName (name) { if (!fileNameDisp) return; if (name) { fileNameDisp.textContent = 'Selected: ' + name; fileNameDisp.style.display = 'block'; dropArea.classList.add('has-file'); } else { fileNameDisp.textContent = ''; fileNameDisp.style.display = 'none'; dropArea.classList.remove('has-file'); } } function isPDF (file) { return file (file.type === 'application/pdf' || file.name.toLowerCase().endsWith('.pdf')); } // Dragover dropArea.addEventListener('dragover', function (e) { e.preventDefault(); e.stopPropagation(); dropArea.classList.add('drag-over'); }); // Dragleave dropArea.addEventListener('dragleave', function (e) { e.preventDefault(); e.stopPropagation(); // Only remove if leaving the drop area entirely if (!dropArea.contains(e.relatedTarget)) { dropArea.classList.remove('drag-over'); } }); // Drop dropArea.addEventListener('drop', function (e) { e.preventDefault(); e.stopPropagation(); dropArea.classList.remove('drag-over'); var files = e.dataTransfer.files; if (files.length === 0) return; var file = files[0]; if (!isPDF(file)) { alert('Please upload a PDF file only.'); return; } if (file.size > 5 * 1024 * 1024) { alert('File size must be under 5MB.'); return; } // Transfer to file input try { var dt = new DataTransfer(); dt.items.add(file); fileInput.files = dt.files; } catch (err) { // DataTransfer not supported in all browsers — just show the name } showFileName(file.name); }); // File input change fileInput.addEventListener('change', function () { if (fileInput.files fileInput.files.length > 0) { showFileName(fileInput.files[0].name); } else { showFileName(''); } }); // Keyboard accessibility for drop area dropArea.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); fileInput.click(); } }); })(); /* ============================================================ 12. HEADER TRANSPARENCY LOGIC ============================================================ */ // Handled by the sticky header logic in section 2 above. // The header starts without 'scrolled' class (transparent on hero), // and gains 'scrolled' (solid dark blue) once user scrolls > 50px. // CSS should define .site-header { transparent } and // .site-header.scrolled { background: var(--primary) }.