diff --git a/ippisite/ippidb/templates/about-contributors.html b/ippisite/ippidb/templates/about-contributors.html
new file mode 100644
index 0000000000000000000000000000000000000000..54a12cff7a8a8334dd27ca346a354cb2df97d5c0
--- /dev/null
+++ b/ippisite/ippidb/templates/about-contributors.html
@@ -0,0 +1,26 @@
+{% extends "about.html" %}
+
+{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %}
+
+{% block pagetitle %}Contributors{% endblock%}
+
+{% block view_content %}
+<div class="row">
+	<table class="table table-striped">
+		<thead>
+		  <tr>
+			<th scope="col" title="Contributor Name">Name</th>
+			<th scope="col" title="Contributor ORCID Link">ORCID</th>
+		  </tr>
+		</thead>
+		<tbody>
+			{% for contributor in object_list %}
+			<tr>
+				<td>{{ contributor.get_contributor_firstname | capfirst }} {{ contributor.get_contributor_lastname | capfirst }}</td>
+				<td><a href="{{ contributor.get_orcid_url }}" target="_blank">{{ contributor.get_orcid }}</a></td>
+			</tr>
+			{% endfor %}
+		</tbody>
+	  </table>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/ippisite/ippidb/templates/about.html b/ippisite/ippidb/templates/about.html
index 667ed3403e8bb895d6f648e1dbcc37044621ae73..67ef120fc7c88075bf2a36db4d0efab4270e626e 100644
--- a/ippisite/ippidb/templates/about.html
+++ b/ippisite/ippidb/templates/about.html
@@ -27,6 +27,9 @@
                 <li>
                     <a href="/about-pca">Chemical space</a>
                 </li>
+                <li>
+                    <a href="/contributors">Contributors</a>
+                </li>
             </ul>
         </div>
     </nav>
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index 45e15ed1aef3bb001279abf78e8a5abe3ff95201..a75b10256830e4434fcc4001f637d4ae77c55294 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -44,7 +44,7 @@ class IppiDbStaticSitemap(Sitemap):
 
 sitemaps = {
     "static": IppiDbStaticSitemap,
-    "compounds": views.site.IppiDbCompoundSitemap,
+    "compounds": views.IppiDbCompoundSitemap,
 }
 
 urlpatterns = [
@@ -61,6 +61,7 @@ urlpatterns = [
         name="physicochemistry",
     ),
     re_path(r"^about-pca/$", views.about_pca, name="pca"),
+    re_path(r"^about-contributors/$",  views.ContributorsListView.as_view(), name="contributors"),
     re_path(r"^targetcentric/$", views.PDBView.as_view(), name="cavities"),
     re_path(r"^targetcentric/networks$", views.NetworkView.as_view(), name="networks"),
     re_path(r"^api/", include(ROUTER.urls)),
diff --git a/ippisite/ippidb/views/__init__.py b/ippisite/ippidb/views/__init__.py
index 5010e4e76dc6872a1ffe9e5693ecf2d5815fd210..7666e858dbb7948ee9095959cef0c1746fe7456d 100644
--- a/ippisite/ippidb/views/__init__.py
+++ b/ippisite/ippidb/views/__init__.py
@@ -32,6 +32,7 @@ from .about import (
     about_pca,
     about_pharmacology,
     about_physicochemistry,
+    ContributorsListView,
 )
 from django.conf import settings
 
@@ -102,6 +103,7 @@ __all__ = [
     about_pca,
     about_pharmacology,
     about_physicochemistry,
+    ContributorsListView,
     PdbViewSet,
     DistanceViewSet,
     PDBView,
diff --git a/ippisite/ippidb/views/about.py b/ippisite/ippidb/views/about.py
index 323bfce6a72c84f4b4780e4b8e533981da42cfe4..cc9a875f94eaa316f4a8efd8976d5d6307404765 100644
--- a/ippisite/ippidb/views/about.py
+++ b/ippisite/ippidb/views/about.py
@@ -2,9 +2,12 @@
 iPPI-DB global statistics views
 """
 
-from django.db.models import F, Count, FloatField
+import re
+from django.contrib.auth import get_user_model
+from django.db.models import F, Count, FloatField, QuerySet
 from django.db.models.functions import Cast, Floor
 from django.shortcuts import render
+from django.views.generic.list import ListView
 import json
 
 
@@ -19,6 +22,8 @@ from ippidb.models import (
     Protein,
 )
 
+from ippidb.ws import get_orcid_user_details
+
 
 def about_general(request):
     compounds_count = Compound.objects.count()
@@ -278,3 +283,79 @@ def about_pca(request):
     except PcaBiplotData.DoesNotExist:
         context = {}
     return render(request, "about-pca.html", context=context)
+
+
+User = get_user_model()
+
+
+def cached_orcid_json(getter_function):
+    def new_function(self):
+        if self.__orcid_json is None:
+            self.__orcid_json = get_orcid_user_details(self.get_orcid())
+        ret = getter_function(self)
+        return ret
+
+    return new_function
+
+
+def get_orcid(self):
+    """
+    Get contributor ORCID from their allauth social account
+    """
+    if self.socialaccount_set.count() > 0:
+        return self.socialaccount_set.all()[0].uid
+    return None
+
+
+def get_orcid_url(self):
+    """
+    Get contributor ORCID fURL from their allauth profile
+    """
+    if self.socialaccount_set.count() > 0:
+        return self.socialaccount_set.all()[0].get_profile_url()
+    return None
+
+
+@cached_orcid_json
+def get_contributor_firstname(self):
+    """
+    Get contributor full name from their ORCID profile
+    """
+    orcid = self.get_orcid()
+    if orcid is not None:
+        data = self.__orcid_json
+        return data['first_name']
+
+
+@cached_orcid_json
+def get_contributor_lastname(self):
+    """
+    Get contributor full name from their ORCID profile
+    """
+    orcid = self.get_orcid()
+    if orcid is not None:
+        data = self.__orcid_json
+        return data['last_name']
+
+
+User.add_to_class("get_orcid", get_orcid)
+User.add_to_class("get_orcid_url", get_orcid_url)
+User.add_to_class("__orcid_json", None)
+User.add_to_class("get_contributor_firstname", get_contributor_firstname)
+User.add_to_class("get_contributor_lastname", get_contributor_lastname)
+
+
+class ContributorsListView(ListView):
+    """
+    Contributors list view
+    """
+
+    model = User
+    template_name = "about-contributors.html"
+
+    def get_queryset(self) -> QuerySet[User]:
+        qs = super().get_queryset()
+        qs = qs.annotate(contributions_count=Count("contribution")).filter(
+            socialaccount__isnull=False, contributions_count__gt=0
+        )
+        return qs
diff --git a/ippisite/ippidb/ws.py b/ippisite/ippidb/ws.py
index 4ec65d1a58b3ca78bbedbe3fd9cac33019de2eda..9fb5268396c9ea080a0b1ea93d60999a26947ee6 100644
--- a/ippisite/ippidb/ws.py
+++ b/ippisite/ippidb/ws.py
@@ -598,6 +598,6 @@ def get_orcid_user_details(orcid: str) -> str:
     )
     data = resp.json()
     return {
-        "first": data["name"]["given-names"]["value"],
-        "last": data["name"]["family-name"]["value"],
+        "first_name": data["name"]["given-names"]["value"],
+        "last_name": data["name"]["family-name"]["value"],
     }