diff --git a/project/dalia/api_models/api_models.py b/project/dalia/api_models/api_models.py
index 2eb2d4daa0cb4514519d37a76a51587d92616527..8e6e81a6127212e6f82199f106231b6724514108 100644
--- a/project/dalia/api_models/api_models.py
+++ b/project/dalia/api_models/api_models.py
@@ -38,11 +38,6 @@ UniqueId = str
 UniqueSlug = str
 
 
-class Language(Enum):
-    en = 'en'
-    de = 'de'
-
-
 @dataclass
 class Version:
     version_title: Optional[str] = None
@@ -168,7 +163,7 @@ class ResourceSpecial:
     license: Optional[License] = None
     publication_date: Optional[str] = None
     links: Optional[List[str]] = None
-    languages: Optional[List[Language]] = None
+    languages: Optional[List[str]] = None
     file_size: Optional[str] = None
     publisher: Optional[str] = None
     doi: Optional[str] = None
diff --git a/project/dalia/query/items/metadata/items.py b/project/dalia/query/items/metadata/items.py
index d42e8703c81cf5b3d3b84b40b429a4231462c52a..6c2e2920f6517b979ddbe902d3dc311ee23153aa 100644
--- a/project/dalia/query/items/metadata/items.py
+++ b/project/dalia/query/items/metadata/items.py
@@ -8,6 +8,7 @@ from project.dalia.query.items.metadata.authors import get_authors_metadata_for_
 from project.dalia.query.items.metadata.format import get_format_metadata_for_resources
 from project.dalia.query.items.metadata.item_communities import get_communities_for_resources
 from project.dalia.query.items.metadata.keywords import get_keywords_metadata_for_resources
+from project.dalia.query.items.metadata.languages import get_languages_for_resources
 from project.dalia.query.items.metadata.one_to_one_metadata import get_one_to_one_metadata_for_resources
 from project.dalia.rdf.prefix import LEARNING_RESOURCE_BASE_URI
 
@@ -32,6 +33,7 @@ def get_metadata_for_learning_resources(resource_uri_refs: List[URIRef]) -> List
     items_keywords = get_keywords_metadata_for_resources(resource_uri_refs)
     items_authors = get_authors_metadata_for_resources(resource_uri_refs)
     items_communities = get_communities_for_resources(resource_uri_refs)
+    items_languages = get_languages_for_resources(resource_uri_refs)
 
     results = []
     for resource_uri_ref in resource_uri_refs:
@@ -43,19 +45,22 @@ def get_metadata_for_learning_resources(resource_uri_refs: List[URIRef]) -> List
         item_keywords = items_keywords.get(resource_uri_ref)
         item_authors = items_authors.get(resource_uri_ref)
         item_communities = items_communities.get(resource_uri_ref)
+        item_languages = items_languages.get(resource_uri_ref)
 
-        _add_metadata_to_item(item, item_format, item_keywords, item_authors, item_communities)
+        _add_metadata_to_item(item, item_format, item_keywords, item_authors, item_communities, item_languages)
         results.append(item)
 
     return results
 
 
+# TODO: replace the growing list of parameters with kwargs and use get() with reasonable defaults
 def _add_metadata_to_item(
         item: Resource,
         item_format: Optional[str],
         item_keywords: Optional[List[str]],
         item_authors: Optional[List[Union[PersonAuthor, OrganizationAuthor]]],
         item_communities: Optional[List[Community]],
+        item_languages: Optional[List[str]],
 ) -> None:
     if item_format:
         item.format = item_format
@@ -67,7 +72,7 @@ def _add_metadata_to_item(
     item.comments = 0
     item.image = None
     item.links = None
-    item.languages = []
+    item.languages = item_languages if item_languages else []
     item.publisher = None
     item.doi = None
     item.learning_time = 10
diff --git a/project/dalia/query/items/metadata/languages.py b/project/dalia/query/items/metadata/languages.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f7f2b5a604288547b04c512d34d5a88688d7b45
--- /dev/null
+++ b/project/dalia/query/items/metadata/languages.py
@@ -0,0 +1,56 @@
+from collections import defaultdict
+from typing import Dict, List
+
+from rdflib import DCTERMS, Literal, RDF, URIRef, Variable
+
+from project.dalia.query.items.facets.facet_objects import LANGUAGE_FACET
+from project.dalia.query.utils import query_dalia_dataset
+from project.dalia.query_builder.query_builder import QueryBuilder, VALUES
+from project.dalia.rdf.namespace import educor
+
+_VARIABLES = {
+    "lr": Variable("lr"),
+    "language": Variable("language")
+}
+
+
+def prepare_query_for_languages_for_resources(resource_uri_refs: List[URIRef]) -> str:
+    var_lr = _VARIABLES["lr"]
+
+    resource_uri_ref_blocks = [[uri_ref] for uri_ref in resource_uri_refs]
+
+    return QueryBuilder().SELECT(
+        *_VARIABLES.values()
+    ).WHERE(
+        VALUES(
+            [var_lr],
+            resource_uri_ref_blocks
+        ),
+        (var_lr, RDF.type, educor.EducationalResource),
+        (var_lr, DCTERMS.language, _VARIABLES["language"])
+    ).build()
+
+
+LANGUAGE_LABEL_MAPPING = LANGUAGE_FACET.items
+
+
+def languages_from_results(results) -> Dict[URIRef, List[str]]:
+    lr_languages = defaultdict(list)
+
+    for result in results:
+        lr_languages[result.lr].append(LANGUAGE_LABEL_MAPPING[result.language])
+
+    return lr_languages
+
+
+def get_languages_for_resources(resource_uri_refs: List[URIRef]) -> Dict[URIRef, List[str]]:
+    """
+    Retrieve the languages for each of the given learning resource URIRefs.
+
+    :param resource_uri_refs: List of learning resource URIRefs
+    :return: Associations between the learning resource URIRefs and their respective list of languages.
+    """
+    query = prepare_query_for_languages_for_resources(resource_uri_refs)
+
+    results = query_dalia_dataset(query)
+    return languages_from_results(results)
diff --git a/tests/project/dalia/query/items/metadata/test_languages.py b/tests/project/dalia/query/items/metadata/test_languages.py
new file mode 100644
index 0000000000000000000000000000000000000000..0e1addad546abbe32518ae7b0a2333b27d81fcd7
--- /dev/null
+++ b/tests/project/dalia/query/items/metadata/test_languages.py
@@ -0,0 +1,45 @@
+from rdflib import URIRef
+
+from project.dalia.query.items.metadata.languages import (
+    get_languages_for_resources,
+    prepare_query_for_languages_for_resources,
+)
+from tests.project.dalia.utils import dedent_and_normalize, normalize
+
+
+def test_prepare_query_for_languages_for_resources():
+    query = prepare_query_for_languages_for_resources([URIRef("abc"), URIRef("def")])
+
+    assert normalize(query) == dedent_and_normalize("""
+        SELECT ?lr ?language  
+        WHERE { 
+        VALUES ( ?lr ) { 
+        ( <abc> )
+        ( <def> )
+        } 
+        ?lr <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://github.com/tibonto/educor#EducationalResource> . 
+        ?lr <http://purl.org/dc/terms/language> ?language . 
+        } 
+    """)
+
+
+def test_get_languages_for_resources(triplestore):
+    lr_languages = get_languages_for_resources([
+        URIRef("https://id.dalia.education/learning-resource/b9eb08a4-82d2-43f5-b690-1896b6c0509f"),
+        URIRef("https://id.dalia.education/learning-resource/0d70949d-e46e-4459-be3d-edd4d4ef6098"),
+        URIRef("https://id.dalia.education/learning-resource/4c45f536-2719-426e-bdfc-1c41da3dd381"),
+        URIRef("http://does-not-exist/123"),
+    ])
+
+    assert lr_languages == {
+        URIRef('https://id.dalia.education/learning-resource/b9eb08a4-82d2-43f5-b690-1896b6c0509f'): [
+            'German',
+        ],
+        URIRef('https://id.dalia.education/learning-resource/0d70949d-e46e-4459-be3d-edd4d4ef6098'): [
+            'English',
+        ],
+        URIRef('https://id.dalia.education/learning-resource/4c45f536-2719-426e-bdfc-1c41da3dd381'): [
+            'English',
+            'German',
+        ],
+    }