diff --git a/full/Changes b/full/Changes
index 9e6e09e..738c78f 100644
--- a/full/Changes
+++ b/full/Changes
@@ -19,6 +19,7 @@
     - merged OAuth2 client deregistration controllers (margaretha)
     - fixed OAuth2 client unique URL-hashcode (margaretha)
     - migrated logging to log4j 2 and adapted java.util.logging to log4j(margaretha)
+    - Added support for unrestricted corpus statistics (ndiewald)
     
 version 0.60.3
 06/06/2018
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
index f389ea5..14c309a 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
@@ -67,25 +67,24 @@
             @Context Locale locale,
             @QueryParam("corpusQuery") String corpusQuery) {
 
-        if (corpusQuery == null || corpusQuery.isEmpty()) {
-            throw kustvaktResponseHandler
-                    .throwit(new KustvaktException(StatusCodes.MISSING_PARAMETER,
-                            "Parameter corpusQuery is missing.",
-                            "corpusQuery"));
-        }
-
-
         KoralCollectionQueryBuilder builder = new KoralCollectionQueryBuilder();
-        builder.with(corpusQuery);
-        String json = null;
-        try {
-            json = builder.toJSON();
-        }
-        catch (KustvaktException e) {
-            throw kustvaktResponseHandler.throwit(e);
-        }
 
-        String stats = searchKrill.getStatistics(json);
+		String stats;
+		if (corpusQuery != null && !corpusQuery.isEmpty()) {
+			builder.with(corpusQuery);
+			String json = null;
+			try {
+				json = builder.toJSON();
+			}
+			catch (KustvaktException e) {
+				throw kustvaktResponseHandler.throwit(e);
+			}
+			stats = searchKrill.getStatistics(json);
+		}
+		else {
+			stats = searchKrill.getStatistics(null);
+		};
+
         if (stats.contains("-1"))
             throw kustvaktResponseHandler.throwit(StatusCodes.NO_RESULT_FOUND);
         jlog.debug("Stats: " + stats);
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
index 6fb0dd7..92b6c04 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
@@ -14,7 +14,7 @@
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 
 /** 
- * @author margaretha
+ * @author margaretha, diewald
  * @date 27/09/2017
  *
  */
@@ -122,14 +122,14 @@
                 .path("statistics")
                 .get(ClientResponse.class);
 
-        assertEquals(ClientResponse.Status.BAD_REQUEST.getStatusCode(),
-                response.getStatus());
+        assertEquals(ClientResponse.Status.OK.getStatusCode(),
+					 response.getStatus());
         String ent = response.getEntity(String.class);
-//        System.out.println(ent);
-        JsonNode node = mapper.readTree(ent);
-        assertEquals(node.at("/errors/0/0").asInt(), 105);
-        assertEquals(node.at("/errors/0/1").asText(),
-                "Parameter corpusQuery is missing.");
-        assertEquals(node.at("/errors/0/2").asText(), "corpusQuery");
+
+		JsonNode node = mapper.readTree(ent);
+		assertEquals(11, node.at("/documents").asInt());
+        assertEquals(665842, node.at("/tokens").asInt());
+        assertEquals(25074, node.at("/sentences").asInt());
+        assertEquals(772, node.at("/paragraphs").asInt());
     }
 }
