diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index 2db406a..c35ed27 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -71,12 +71,15 @@
 
     $self->log->info('Mount test server');
 
+    my $mount_point = '/api/v0.1/';
+
     $self->plugin(Mount => {
-      '/api/v0.1' => $self->home->child('lib/Kalamar/Apps/test_backend.pl')
+      $mount_point => $self->home->child('lib/Kalamar/Apps/test_backend.pl')
     });
 
-    # Fix api endpoint
-    $self->config('Kalamar')->{api} = "/api/v0.1/";
+    # Fix api endpoints
+    $self->config('Kalamar')->{api} = $mount_point;
+    $self->config('Search')->{api} = $mount_point;
   };
 
   # Client notifications
diff --git a/lib/Kalamar/Apps/test_backend.pl b/lib/Kalamar/Apps/test_backend.pl
index 27566a2..ee3d821 100644
--- a/lib/Kalamar/Apps/test_backend.pl
+++ b/lib/Kalamar/Apps/test_backend.pl
@@ -2,12 +2,15 @@
 use Mojolicious::Lite;
 use Mojo::ByteStream 'b';
 use Mojo::Date;
+use Mojo::JSON qw/true false/;
 use strict;
 use warnings;
 use Mojo::JWT;
 
 # This is an API fake server with fixtures
 
+# TODO: Test the fake server
+
 helper jwt => sub {
   shift;
   Mojo::JWT->new(
@@ -25,6 +28,98 @@
 };
 
 
+# Search fixtures
+get '/search' => sub {
+  my $c = shift;
+  my $v = $c->validation;
+  $v->optional('q');
+  $v->optional('page');
+  $v->optional('ql');
+  $v->optional('count');
+  $v->optional('context');
+
+  # Simple search fixture
+  return $c->render(
+    json => {
+      "\@context" => "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+      "meta" => {
+        "count" => 25,
+        "startIndex" => 0,
+        "timeout" => 120000,
+        "context" => {
+          "left" => ["token",40],
+          "right" => ["token",40]
+        },
+        "fields" => ["pubDate","subTitle","author","pubPlace","title","textSigle","UID","ID","layerInfos","corpusSigle","docSigle","corpusID","textClass"],
+        "version" => "0.55.7",
+        "benchmark" => "0.120577834 s",
+        "totalResults" => 51,
+        "serialQuery" => "tokens:s:Baum",
+        "itemsPerPage" => 25
+      },
+      "query" => {
+        "\@type" => "koral:token",
+        "wrap" => {
+          "\@type" => "koral:term",
+          "layer" => "orth",
+          "key" => "Baum",
+          "match" => "match:eq",
+          "foundry" => "opennlp",
+          "rewrites" => [
+            {
+              "\@type" => "koral:rewrite",
+              "src" => "Kustvakt",
+              "operation" => "operation:injection",
+              "scope" => "foundry"
+            }
+          ]
+        }
+      },
+      "matches" => [
+        {
+          "field" => "tokens",
+          "pubPlace" => "München",
+          "textSigle" => "GOE/AGI/00000",
+          "docSigle" => "GOE/AGI",
+          "corpusSigle" => "GOE",
+          "title" => "Italienische Reise",
+          "subTitle" => "Auch ich in Arkadien!",
+          "author" => "Goethe, Johann Wolfgang von",
+          "layerInfos" => "base/s=spans corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels mdp/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans",
+          "startMore" => true,
+          "endMore" => true,
+          "snippet" => "<span class=\"context-left\"><span class=\"more\"></span>sie etwas bedeuten zu wollen und machte mit der Oberlippe eine fatale Miene. ich sprach sehr viel mit ihr durch, sie war überall zu Hause und merkte gut auf die Gegenstände. so fragte sie mich einmal, was das für ein </span><span class=\"match\"><mark>Baum</mark></span><span class=\"context-right\"> sei. es war ein schöner großer Ahorn, der erste, der mir auf der ganzen Reise zu Gesichte kam. den hatte sie doch gleich bemerkt und freute sich, da mehrere nach und nach erschienen, daß sie auch diesen Baum unterscheiden könne<span class=\"more\"></span></span>",
+          "matchID" => "match-GOE/AGI/00000-p2030-2031",
+          "UID" => 0,
+          "pubDate" => "1982"
+        },
+        {
+          "field" => "tokens",
+          "pubPlace" => "München",
+          "textSigle" => "GOE/AGI/00000",
+          "docSigle" => "GOE/AGI",
+          "corpusSigle" => "GOE",
+          "title" => "Italienische Reise",
+          "subTitle" => "Auch ich in Arkadien!",
+          "author" => "Goethe, Johann Wolfgang von",
+          "layerInfos" => "base/s=spans corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels mdp/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans",
+          "startMore" => true,
+          "endMore" => true,
+          "snippet" => "<span class=\"context-left\"><span class=\"more\"></span>für ein Baum sei. es war ein schöner großer Ahorn, der erste, der mir auf der ganzen Reise zu Gesichte kam. den hatte sie doch gleich bemerkt und freute sich, da mehrere nach und nach erschienen, daß sie auch diesen </span><span class=\"match\"><mark>Baum</mark></span><span class=\"context-right\"> unterscheiden könne. sie gehe, sagte sie, nach Bozen auf die Messe, wo ich doch wahrscheinlich auch hinzöge. wenn sie mich dort anträfe, müsse ich ihr einen Jahrmarkt kaufen, welches ich ihr denn auch versprach. dort wollte sie auch ihre neue<span class=\"more\"></span></span>",
+          "matchID" => "match-GOE/AGI/00000-p2068-2069",
+          "UID" => 0,
+          "pubDate" => "1982"
+        }
+      ]
+    }
+  );
+};
+
+
+############
+# Auth API #
+############
+
 # Request API token
 get '/auth/apiToken' => sub {
   my $c = shift;
