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());
     }
 }
