diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/project/ModelMetaData.java b/rest-api/src/main/java/lcsb/mapviewer/api/project/ModelMetaData.java
index b2ace1b5a02fd0ac6a9a7132f561a33ef975f0ca..a771a5e150f483a232272590059ed07ce6fd5e77 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/project/ModelMetaData.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/project/ModelMetaData.java
@@ -3,15 +3,21 @@ package lcsb.mapviewer.api.project;
 import java.awt.geom.Point2D;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.primefaces.model.map.LatLng;
 
 import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.services.utils.gmap.CoordinationConverter;
 import lcsb.mapviewer.services.view.LayoutView;
 import lcsb.mapviewer.services.view.LayoutViewFactory;
@@ -35,6 +41,8 @@ public class ModelMetaData implements Serializable {
 
 	private Integer							idObject;
 
+	private Integer							publicationCount;
+
 	/**
 	 * Size in pixels of the single square tile (small image used for graphical
 	 * representation).
@@ -110,6 +118,32 @@ public class ModelMetaData implements Serializable {
 			}
 		}
 		this.setSubmodels(submodels);
+
+		Set<MiriamData> publications = new HashSet<>();
+		List<ModelData> models = new ArrayList<>();
+		for (ModelSubmodelConnection connection : model.getSubmodels()) {
+			models.add(connection.getSubmodel());
+		}
+		models.add(model);
+		for (ModelData modelData : models) {
+			for (Element element : modelData.getElements()) {
+				for (MiriamData md : element.getMiriamData()) {
+					if (md.getDataType().equals(MiriamType.PUBMED)) {
+						publications.add(md);
+					}
+				}
+			}
+			for (Reaction reaction : modelData.getReactions()) {
+				for (MiriamData md : reaction.getMiriamData()) {
+					if (md.getDataType().equals(MiriamType.PUBMED)) {
+						publications.add(md);
+					}
+				}
+
+			}
+		}
+
+		this.setPublicationCount(publications.size());
 	}
 
 	protected ModelMetaData() {
@@ -328,10 +362,28 @@ public class ModelMetaData implements Serializable {
 	}
 
 	/**
-	 * @param idObject the idObject to set
+	 * @param idObject
+	 *          the idObject to set
 	 * @see #idObject
 	 */
 	public void setIdObject(Integer idObject) {
 		this.idObject = idObject;
 	}
+
+	/**
+	 * @return the publicationCount
+	 * @see #publicationCount
+	 */
+	public Integer getPublicationCount() {
+		return publicationCount;
+	}
+
+	/**
+	 * @param publicationCount
+	 *          the publicationCount to set
+	 * @see #publicationCount
+	 */
+	public void setPublicationCount(Integer publicationCount) {
+		this.publicationCount = publicationCount;
+	}
 }