diff --git a/core/serializers/accounts.py b/core/serializers/accounts.py
index 1451d96293d5154c5727a5be6cbeeb53f373726d..f3aa41bb17c4d65ea8a3a0fced6185b157192d62 100644
--- a/core/serializers/accounts.py
+++ b/core/serializers/accounts.py
@@ -46,3 +46,10 @@ class LoginSerializer(serializers.HyperlinkedModelSerializer):
         model = User
         fields = ('url', 'username', 'email', 'is_staff', 'company', 'supervisor', 'student')
 
+class RegisterSerializer(serializers.HyperlinkedModelSerializer):
+    company = CompanySerializer()
+
+    class Meta:
+        model = User
+        fields = ('url', 'username', 'email', 'is_staff', 'company')
+
diff --git a/core/views/accounts.py b/core/views/accounts.py
index 43036c4781d7ca1a1eb7bf899a84e1955c0e6a80..cda848b48bc1086362bd83b478a6f8a3a0873d88 100644
--- a/core/views/accounts.py
+++ b/core/views/accounts.py
@@ -6,11 +6,12 @@ from rest_framework.decorators import list_route
 from rest_framework.permissions import AllowAny
 from rest_framework.permissions import IsAdminUser, IsAuthenticated
 from rest_framework.response import Response
+from rest_framework.parsers import FormParser,MultiPartParser
 
 from core.lib.permissions import IsAdminOrStudent, IsAdminOrSelfOrReadOnly, IsAdminOrCompany, IsAdminOrSupervisor
 from core.models.accounts import Student, Company, Supervisor
 from core.serializers.accounts import UserSerializer, StudentSerializer, CompanySerializer, SupervisorSerializer, \
-    LoginSerializer
+    LoginSerializer, RegisterSerializer
 
 
 class UserViewSet(viewsets.ModelViewSet):
@@ -129,3 +130,42 @@ class LoginViewSet(viewsets.GenericViewSet):
                 return Response(status=status.HTTP_401_UNAUTHORIZED)
         else:
             return Response(status=status.HTTP_400_BAD_REQUEST)
+
+
+class CompanyRegisterViewSet(viewsets.GenericViewSet):
+    permission_classes = (AllowAny,)
+    serializer_class = RegisterSerializer
+    queryset = Company.objects.all()
+    parser_classes = (MultiPartParser, FormParser,)
+
+    def create(self, request):
+        username = request.data.get('username')
+        password = request.data.get('password')
+        email = request.data.get('email')
+        company_name = request.data.get('name')
+        description = request.data.get('description')
+        logo = request.data.get('logo')
+        address = request.data.get('address')
+
+        if username is not None and password is not None and email is not None and company_name is not None and description is not None:
+            user, created = User.objects.get_or_create(
+                username=username,
+                email=email,
+                first_name=company_name,
+                last_name=""
+            )
+            if created:
+                user.set_password(password)
+                company = Company.objects.create(
+                    user=user,
+                    description=description,
+                    logo=logo,
+                    address=address
+                )
+                user.save()
+                company.save()
+                serializer = RegisterSerializer(user, context={'request': request})
+                return Response(serializer.data, status=status.HTTP_201_CREATED)
+            return Response(status=status.HTTP_409_CONFLICT)
+
+        return Response(status=status.HTTP_400_BAD_REQUEST)
\ No newline at end of file
diff --git a/kape/urls.py b/kape/urls.py
index fa7a19420ce084ff78adf0da0bac74caee68f838..a6e641fd1fb1fd11724512df67b91ee767d9dd91 100755
--- a/kape/urls.py
+++ b/kape/urls.py
@@ -22,7 +22,7 @@ from rest_framework import routers
 from rest_framework_swagger.views import get_swagger_view
 
 from core import apps
-from core.views.accounts import StudentViewSet, CompanyViewSet, SupervisorViewSet, UserViewSet, LoginViewSet
+from core.views.accounts import StudentViewSet, CompanyViewSet, SupervisorViewSet, UserViewSet, LoginViewSet, CompanyRegisterViewSet
 from core.views.vacancies import VacancyViewSet, BookmarkedVacancyByStudentViewSet, ApplicationViewSet
 
 schema_view = get_swagger_view()
@@ -32,6 +32,7 @@ router.register(r'students', StudentViewSet)
 router.register(r'companies', CompanyViewSet)
 router.register(r'supervisors', SupervisorViewSet)
 router.register(r'login', LoginViewSet)
+router.register(r'register', CompanyRegisterViewSet)
 router.register(r'vacancies', VacancyViewSet)
 router.register(r'students/(?P<student_id>\d+)/bookmarked-vacancies', BookmarkedVacancyByStudentViewSet,
                 base_name='bookmarked-vacancy-list')