Index: src/main/java/edu/gjoko/schedlr/controllers/rest/ServiceApi.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/controllers/rest/ServiceApi.java	(revision 53765ddd7eb6bc0f9ce45bc734229dd648e2557e)
+++ src/main/java/edu/gjoko/schedlr/controllers/rest/ServiceApi.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
@@ -1,5 +1,7 @@
 package edu.gjoko.schedlr.controllers.rest;
 
+import edu.gjoko.schedlr.dto.ServiceDto;
 import edu.gjoko.schedlr.entity.Service;
+import edu.gjoko.schedlr.mappers.ServiceDtoMapper;
 import edu.gjoko.schedlr.services.ServicesService;
 import lombok.AllArgsConstructor;
@@ -18,4 +20,5 @@
 
     private ServicesService service;
+    private ServiceDtoMapper serviceDtoMapper;
     @PostMapping(path="/delete")
     public void saveBusiness(@RequestBody List<Service> serviceList) {
@@ -34,3 +37,11 @@
         service.saveOrUpdateServices(serviceList, ownerId);
     }
+
+    @GetMapping
+    public List<ServiceDto> searchServicesByKeyWord(@RequestParam(value = "searchKeyword", required = false) String searchKeyWord) {
+        return service.getServicesByKeyword(searchKeyWord)
+                .stream()
+                .map(serviceDtoMapper::serviceToServiceDto)
+                .toList();
+    }
 }
Index: src/main/java/edu/gjoko/schedlr/dto/ServiceDto.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/dto/ServiceDto.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
+++ src/main/java/edu/gjoko/schedlr/dto/ServiceDto.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
@@ -0,0 +1,23 @@
+package edu.gjoko.schedlr.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class ServiceDto {
+
+    private long id;
+    private String serviceName;
+    private String description;
+    private Float rating;
+    private int reviewsCount;
+    private long businessId;
+    private String businessName;
+    private int duration;
+    private int price;
+}
Index: src/main/java/edu/gjoko/schedlr/entity/Service.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/Service.java	(revision 53765ddd7eb6bc0f9ce45bc734229dd648e2557e)
+++ src/main/java/edu/gjoko/schedlr/entity/Service.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
@@ -50,4 +50,7 @@
     private Business business;
 
+    @Column(name = "description")
+    private String description;
+
     @OneToMany(mappedBy="service")
     @JsonManagedReference(value = "serviceAppointments")
Index: src/main/java/edu/gjoko/schedlr/mappers/ServiceDtoMapper.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/mappers/ServiceDtoMapper.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
+++ src/main/java/edu/gjoko/schedlr/mappers/ServiceDtoMapper.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
@@ -0,0 +1,33 @@
+package edu.gjoko.schedlr.mappers;
+
+import edu.gjoko.schedlr.dto.AppointmentDto;
+import edu.gjoko.schedlr.dto.ServiceDto;
+import edu.gjoko.schedlr.entity.Appointment;
+import org.modelmapper.ModelMapper;
+import org.modelmapper.TypeMap;
+import org.modelmapper.config.Configuration;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Type;
+
+@Service
+public class ServiceDtoMapper extends ModelMapper {
+
+    public ServiceDtoMapper() {
+        this.getConfiguration().setFieldMatchingEnabled(true).setFieldAccessLevel(Configuration.AccessLevel.PRIVATE);
+        TypeMap<edu.gjoko.schedlr.entity.Service, ServiceDto> propertyMapper = this.createTypeMap(edu.gjoko.schedlr.entity.Service.class, ServiceDto.class);
+        propertyMapper.addMappings(
+                mapper -> mapper.map(service -> service.getBusiness().getCompanyName(), ServiceDto::setBusinessName)
+        );
+        propertyMapper.addMappings(
+                mapper -> mapper.map(service -> service.getServiceType().getName(), ServiceDto::setServiceName)
+        );
+        propertyMapper.addMappings(
+                mapper -> mapper.map(service -> service.getBusiness().getId(), ServiceDto::setBusinessId)
+        );
+    }
+
+    public ServiceDto serviceToServiceDto(edu.gjoko.schedlr.entity.Service service) {
+        return this.map(service, ServiceDto.class);
+    }
+}
Index: src/main/java/edu/gjoko/schedlr/repositories/ServiceRepository.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/repositories/ServiceRepository.java	(revision 53765ddd7eb6bc0f9ce45bc734229dd648e2557e)
+++ src/main/java/edu/gjoko/schedlr/repositories/ServiceRepository.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
@@ -11,3 +11,9 @@
 @Repository
 public interface ServiceRepository extends JpaRepository<Service, Long> {
+
+    @Query(value = "select s from Service as s " +
+            " where (s.serviceType.name like CONCAT('%', :keyword, '%') " +
+            " or s.description like CONCAT('%', :keyword, '%'))" +
+            " and s.serviceStatus = 'ACTIVE'")
+    List<Service> getServicesByKeyword(String keyword);
 }
Index: src/main/java/edu/gjoko/schedlr/services/ServicesService.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/services/ServicesService.java	(revision 53765ddd7eb6bc0f9ce45bc734229dd648e2557e)
+++ src/main/java/edu/gjoko/schedlr/services/ServicesService.java	(revision 943857ccadc5bd0933c2bd0b003629ae75c29b17)
@@ -5,5 +5,4 @@
 import edu.gjoko.schedlr.entity.ServiceType;
 import edu.gjoko.schedlr.repositories.BusinessRepository;
-import edu.gjoko.schedlr.repositories.BusinessTypeRepository;
 import edu.gjoko.schedlr.repositories.ServiceRepository;
 import edu.gjoko.schedlr.repositories.ServiceTypeRepository;
@@ -29,4 +28,8 @@
     }
 
+    public List<edu.gjoko.schedlr.entity.Service> getServicesByKeyword(String keyword) {
+        return serviceRepository.getServicesByKeyword(keyword);
+    }
+
     public void saveOrUpdateServices(List<edu.gjoko.schedlr.entity.Service> serviceList, Long ownerId) {
         if (!CollectionUtils.isEmpty(serviceList)) {
@@ -38,4 +41,5 @@
                     found.setPrice(service.getPrice());
                     found.setServiceStatus(ServiceStatus.ACTIVE);
+                    found.setDescription(service.getDescription());
                     serviceRepository.save(found);
                 } else {
