diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/rest/RouteServiceWebResource.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/rest/RouteServiceWebResource.java
index a1c0296..0196af0 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/rest/RouteServiceWebResource.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/rest/RouteServiceWebResource.java
@@ -23,7 +23,7 @@
 import org.onosproject.routeservice.Route;
 import org.onosproject.routeservice.RouteAdminService;
 import org.onosproject.routeservice.RouteService;
-
+import org.onosproject.routeservice.RouteInfo;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
@@ -34,13 +34,14 @@
 import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
 import static org.onlab.util.Tools.nullIsIllegal;
 import static org.onlab.util.Tools.readTreeFromStream;
-
 /**
  * Manage the unicast routing information.
  */
@@ -72,6 +73,81 @@
         return ok(root).build();
     }
 
+     /**
+     * Get count of all unicast routes.
+     * Returns count of all known unicast routes.
+     *
+     * @return 200 OK with count of all known unicast routes
+     * @onos.rsModel RoutesGetCount
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/routes/count")
+    public Response getRoutesCount() {
+        RouteService service = get(RouteService.class);
+        ObjectNode root = mapper().createObjectNode();
+        service.getRouteTables().forEach(table -> {
+            Collection<RouteInfo> routes = service.getRoutes(table);
+            root.put(table.name() + "PrefixCount", routes.stream().count());
+        });
+        return ok(root).build();
+    }
+
+    /**
+     * Get count of all types routes .
+     * Returns count of all known route types.
+     *
+     * @return 200 OK with count of all route types
+     * @onos.rsModel RoutesGetTypeCount
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/routes/types/count")
+    public Response getRoutesCountByType() {
+        RouteService service = get(RouteService.class);
+        ObjectNode root = mapper().createObjectNode();
+        service.getRouteTables().forEach(table -> {
+           List<Route> staticRoutes = new ArrayList<>();
+           List<Route> fpmRoutes = new ArrayList<>();
+           List<Route> ripRoutes = new ArrayList<>();
+           List<Route> dhcpRoutes = new ArrayList<>();
+           List<Route> dhcpLQRoutes = new ArrayList<>();
+           List<Route> bgpRoutes = new ArrayList<>();
+           List<Route> routes = service.getRoutes(table).stream()
+                    .flatMap(ri -> ri.allRoutes().stream())
+                    .map(ResolvedRoute::route)
+                    .collect(Collectors.toList());
+            routes.forEach(route -> {
+                if (route.source() == Route.Source.STATIC) {
+                    staticRoutes.add(route);
+                }
+                if (route.source() == Route.Source.FPM) {
+                    fpmRoutes.add(route);
+                }
+                if (route.source() == Route.Source.RIP) {
+                    ripRoutes.add(route);
+                }
+                if (route.source() == Route.Source.DHCP) {
+                    dhcpRoutes.add(route);
+                }
+                if (route.source() == Route.Source.DHCPLQ) {
+                    dhcpLQRoutes.add(route);
+                }
+                if (route.source() == Route.Source.BGP) {
+                    bgpRoutes.add(route);
+                }
+             });
+                root.put(table.name() + "StaticRouteCount", staticRoutes.size());
+                root.put(table.name() + "FpmRouteCount", fpmRoutes.size());
+                root.put(table.name() + "RipRouteCount", ripRoutes.size());
+                root.put(table.name() + "DhcpRouteCount", dhcpRoutes.size());
+                root.put(table.name() + "DhcpLQRouteCount", dhcpLQRoutes.size());
+                root.put(table.name() + "BgpRouteCount", bgpRoutes.size());
+                root.put(table.name() + "TotalRouteCount", routes.stream().count());
+        });
+        return ok(root).build();
+    }
+
     /**
      * Create new unicast route.
      * Creates a new route in the unicast RIB. Source field is kept optional.
diff --git a/apps/route-service/app/src/main/resources/definitions/RoutesGetCount.json b/apps/route-service/app/src/main/resources/definitions/RoutesGetCount.json
new file mode 100644
index 0000000..e1f1eb9
--- /dev/null
+++ b/apps/route-service/app/src/main/resources/definitions/RoutesGetCount.json
@@ -0,0 +1,17 @@
+{
+  "type": "object",
+  "required": [
+    "ipv4PrefixCount",
+    "ipv6PrefixCount"
+  ],
+  "properties": {
+    "ipv4PrefixCount": {
+      "type": "long",
+      "example": "2"
+    },
+    "ipv6PrefixCount": {
+      "type": "long",
+      "example": "3"
+    }
+  }
+}
diff --git a/apps/route-service/app/src/main/resources/definitions/RoutesGetTypeCount.json b/apps/route-service/app/src/main/resources/definitions/RoutesGetTypeCount.json
new file mode 100644
index 0000000..497772d
--- /dev/null
+++ b/apps/route-service/app/src/main/resources/definitions/RoutesGetTypeCount.json
@@ -0,0 +1,77 @@
+{
+  "type": "object",
+  "required": [
+    "ipv4StaticRouteCount",
+    "ipv4FpmRouteCount",
+    "ipv4RipRouteCount",
+    "ipv4DhcpRouteCount",
+    "ipv4DhcpLQRouteCount",
+    "ipv4BgpRouteCount",
+    "ipv4TotalRouteCount",
+    "ipv6StaticRouteCount",
+    "ipv6FpmRouteCount",
+    "ipv6RipRouteCount",
+    "ipv6DhcpRouteCount",
+    "ipv6DhcpLQRouteCount",
+    "ipv6BgpRouteCount",
+    "ipv6TotalRouteCount"
+  ],
+  "properties": {
+    "ipv4StaticRouteCount": {
+      "type": "int",
+      "example": "1"
+    },
+    "ipv4FpmRouteCount": {
+      "type": "int",
+      "example": "3"
+    },
+    "ipv4RipRouteCount": {
+      "type": "int",
+      "example": "1"
+    },
+    "ipv4DhcpRouteCount": {
+      "type": "int",
+      "example": "2"
+    },
+    "ipv4DhcpLQRouteCount": {
+      "type": "int",
+      "example": "3"
+    },
+    "ipv4BgpRouteCount": {
+      "type": "int",
+      "example": "2"
+    },
+    "ipv4TotalRouteCount": {
+      "type": "long",
+      "example": "4"
+    },
+    "ipv6StaticRouteCount": {
+      "type": "int",
+      "example": "3"
+    },
+    "ipv6FpmRouteCount": {
+      "type": "int",
+      "example": "1"
+    },
+    "ipv6RipRouteCount": {
+      "type": "int",
+      "example": "2"
+    },
+    "ipv6DhcpRouteCount": {
+      "type": "int",
+      "example": "4"
+    },
+    "ipv6DhcpLQRouteCount": {
+      "type": "int",
+      "example": "2"
+    },
+    "ipv6BgpRouteCount": {
+      "type": "int",
+      "example": "3"
+    },
+    "ipv6TotalRouteCount": {
+      "type": "long",
+      "example": "2"
+    }
+  }
+}
