diff --git a/src/components/Zenodo.js b/src/components/Zenodo.js
new file mode 100644
index 0000000000000000000000000000000000000000..1af4690d6f1cbe831254ea794c4785cc91e69a2d
--- /dev/null
+++ b/src/components/Zenodo.js
@@ -0,0 +1,14 @@
+import React from "react";
+
+export default function Zenodo() {
+  return (
+    <div className="embed-responsive embed-responsive-16by9">
+      <iframe
+        title="zenodo"
+        className="embed-responsive-item"
+        src="https://zenodo.org/api/"
+        allowFullScreen
+      ></iframe>
+    </div>
+  );
+}
diff --git a/src/components/query/QueryCatalogs.js b/src/components/query/QueryCatalogs.js
index 313150facf8d7201c5ae6fd910fe8dc71a37e568..2bef24faa555e15dc943e5adfe9993a529950f40 100644
--- a/src/components/query/QueryCatalogs.js
+++ b/src/components/query/QueryCatalogs.js
@@ -36,6 +36,9 @@ export default function QueryCatalogs() {
       case "esap_rucio":
         setConfigName("esap_rucio");
         break;
+      case "esap_zenodo":
+        setConfigName("esap_zenodo");
+        break;
       case "astron_vo":
         setConfigName("astron_vo");
         break;
diff --git a/src/components/services/query_results/QueryResults.js b/src/components/services/query_results/QueryResults.js
index 36f24570b78c3e123975ac183dbee6eb732a7fe0..79c2e3529ed97674df5fa37b9043d0a1d64c5c36 100644
--- a/src/components/services/query_results/QueryResults.js
+++ b/src/components/services/query_results/QueryResults.js
@@ -5,6 +5,7 @@ import ZooniverseResults from "./ZooniverseResults";
 import VORegListResults from "./VORegListResults";
 import LOFARResults from "./LOFARResults";
 import RucioResults from "./RucioResults";
+import ZenodoResults from "./ZenodoResults";
 import SampResults from "./SampResults";
 
 export default function QueryResults({ catalog }) {
@@ -23,6 +24,8 @@ export default function QueryResults({ catalog }) {
       return <LOFARResults catalog={catalog} />;
     case "rucio":
       return <RucioResults catalog={catalog} />;
+    case "zenodo":
+      return <ZenodoResults catalog={catalog} />;
     case "samp":
       return <SampResults catalog={catalog} />;
     default:
diff --git a/src/components/services/query_results/ZenodoResults.js b/src/components/services/query_results/ZenodoResults.js
new file mode 100644
index 0000000000000000000000000000000000000000..6e49b8552028b76b388185b59ada813a36707f9f
--- /dev/null
+++ b/src/components/services/query_results/ZenodoResults.js
@@ -0,0 +1,43 @@
+import React, { useContext } from "react";
+import { Table, Alert, Form } from "react-bootstrap";
+import { QueryContext } from "../../../contexts/QueryContext";
+import LoadingSpinner from "../../LoadingSpinner";
+import Paginate from "../../Paginate";
+import AddToBasket from "../../basket/AddToBasketCheckBox";
+
+export default function ZenodoResults({ catalog }) {
+  const context = useContext(QueryContext);
+  const { queryMap, page, setPage } = context;
+
+  if (!context.queryMap) return null;
+
+  if (context.queryMap.get(catalog).status === "fetched") {
+    if (context.queryMap.get(catalog).results.results.length === 0)
+      return <Alert variant="warning">No matching results found!</Alert>;
+    else if (catalog === "zenodo") {
+      const zenodoResults = queryMap.get("zenodo").results.results[0]['hits']['hits'].map((hits, counter) => (
+        <>
+        <br/>
+        <br/>
+        <h4><a href={hits.links.latest_html} target="_blank"> {hits.metadata.title.replaceAll("<p>","").replaceAll("</p>","")} </a></h4>
+        DOI: {hits.metadata.doi}
+        <br/>
+        {hits.metadata.description.replaceAll("<p>","").replaceAll("</p>","").substring(0,200)}...
+        </>
+      ));
+
+      return (
+
+       <>
+         {zenodoResults}
+       </>
+
+      ); 
+
+    }
+  }
+  else {
+    return <LoadingSpinner />;
+  }
+}
+
diff --git a/src/routes/Routes.js b/src/routes/Routes.js
index d74cc0b63420607c946a16b9cc8e4d5eaec30848..b04a44e50a1ac80e9b4e68ccc6061b2692c5881f 100644
--- a/src/routes/Routes.js
+++ b/src/routes/Routes.js
@@ -87,7 +87,7 @@ export default function Routes() {
 
         </Switch>
 
-      <footer><small>esap-gui version 27 aug 2021 - 14:00</small></footer>
+      <footer><small>esap-gui version 31 aug 2021</small></footer>
     </Router>
   );
 }
diff --git a/src/utils/form/parseQueryForm.js b/src/utils/form/parseQueryForm.js
index 92126fbc7c620b5b30e861dd77af06710f398610..5e94a0e40eccacd584d4afab05cae3edadff1948 100644
--- a/src/utils/form/parseQueryForm.js
+++ b/src/utils/form/parseQueryForm.js
@@ -5,6 +5,7 @@ import parseIVOAForm from "./parseIVOAForm";
 import parseApertifForm from "./parseApertifForm";
 import parseASTRONVOForm from "./parseASTRONVOForm";
 import parseRucioForm from "./parseRucioForm";
+import parseZenodoForm from "./parseZenodoForm";
 
 export default function parseQueryForm(gui, formData) {
   switch (gui) {
@@ -22,6 +23,8 @@ export default function parseQueryForm(gui, formData) {
       return parseIVOAForm(formData);
     case "rucio":
         return parseRucioForm(formData);
+    case "zenodo":
+        return parseZenodoForm(formData);
     default:
       return null;
   }
diff --git a/src/utils/form/parseZenodoForm.js b/src/utils/form/parseZenodoForm.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe48ec2b8cd51abd8b7eddd618580231969d65ac
--- /dev/null
+++ b/src/utils/form/parseZenodoForm.js
@@ -0,0 +1,21 @@
+export default function parseZenodoForm(formData) {
+  let formInput = Object.entries(formData);
+
+  let query = "";
+
+  for (let [key, value] of formInput) {
+    query += `${`${query}` ? "&" : ""}` + key + "=" + value;
+  }
+
+  let esapquery = [
+    query,
+    "archive_uri=esap_zenodo",
+    `catalog=zenodo`,
+  ].join("&");
+
+  console.log("Zenodo Query", query);
+  return [{
+    catalog: "zenodo",
+    esapquery: esapquery
+  }];
+}