diff --git a/Changes b/Changes
index 2a90c92..71ce573 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,6 @@
 # version 1.1-SNAPSHOT
 - Change VC and query names to lowercase
+- Implemented pipe response rewriting for match info API (#814)
 
 # version 1.0.1
 
@@ -75,6 +76,7 @@
 - Return Timeout Error Code for timeout during LDAP operations. 
   With test and special test conf (bodmo)
 
+
 # version 0.78.2
 
 - Update LDAP logs using JLog to include timestamp and move it from system.out 
diff --git a/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java b/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
index eeffa13..a139a4d 100644
--- a/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
+++ b/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
@@ -517,10 +517,11 @@
 
     public String retrieveMatchInfo (String corpusId, String docId,
             String textId, String matchId, boolean info, Set<String> foundries,
-            String username, HttpHeaders headers, Set<String> layers,
-            boolean spans, boolean snippet, boolean tokens,
-            boolean sentenceExpansion, boolean highlights, boolean isDeprecated)
-            throws KustvaktException {
+            String username, HttpHeaders headers, Set<String> layers, 
+			boolean spans, boolean snippet, boolean tokens,
+			boolean sentenceExpansion, boolean highlights, boolean isDeprecated,
+			String responsePipes)
+			throws KustvaktException {
         String matchid = searchKrill.getMatchId(corpusId, docId, textId,
                 matchId);
 
@@ -563,6 +564,9 @@
         //            throw new KustvaktException(StatusCodes.ILLEGAL_ARGUMENT,
         //                    e.getMessage());
         //        }
+        
+        results = runPipes(results, responsePipes);
+        
         if (DEBUG) {
             jlog.debug("MatchInfo results: " + results);
         }
@@ -582,7 +586,9 @@
             p = determineAvailabilityPattern(user);
         }
         String textSigle = searchKrill.getTextSigle(corpusId, docId, textId);
-        return searchKrill.getFields(textSigle, fieldList, p);
+        String results = searchKrill.getFields(textSigle, fieldList, p);
+        
+        return results;
     }
 
     public String getCollocationBase (String query) throws KustvaktException {
diff --git a/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java b/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java
index a600c81..6f40ba2 100644
--- a/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java
+++ b/src/main/java/de/ids_mannheim/korap/core/web/controller/SearchController.java
@@ -298,6 +298,7 @@
             @QueryParam("foundry") Set<String> foundries,
             @QueryParam("layer") Set<String> layers,
             @QueryParam("spans") Boolean spans,
+            @QueryParam("response-pipes") String responsePipes,
             @DefaultValue("true") @QueryParam("show-snippet") String snippetStr,
             @DefaultValue("false") @QueryParam("show-tokens") String tokensStr,
             @QueryParam("expand") String expansion,
@@ -336,7 +337,7 @@
             String results = searchService.retrieveMatchInfo(corpusId, docId,
                     textId, matchId, true, foundries,
                     tokenContext.getUsername(), headers, layers, spans, snippet,
-                    tokens, expandToSentence, highlights, true);
+                    tokens, expandToSentence, highlights, true, responsePipes);
             return Response.ok(results).build();
         }
         catch (KustvaktException e) {
@@ -357,6 +358,7 @@
             @QueryParam("foundry") Set<String> foundries,
             @QueryParam("layer") Set<String> layers,
             @QueryParam("spans") Boolean spans,
+            @QueryParam("response-pipes") String responsePipes,
             @DefaultValue("true") @QueryParam("show-snippet") String snippetStr,
             @DefaultValue("false") @QueryParam("show-tokens") String tokensStr,
             @QueryParam("expand") String expansion,
@@ -395,7 +397,7 @@
             String results = searchService.retrieveMatchInfo(corpusId, docId,
                     textId, matchId, true, foundries,
                     tokenContext.getUsername(), headers, layers, spans, snippet,
-                    tokens, expandToSentence, highlights, false);
+                    tokens, expandToSentence, highlights, false, responsePipes);
             return Response.ok(results).build();
         }
         catch (KustvaktException e) {
@@ -415,7 +417,8 @@
     public Response getMetadata (@PathParam("corpusId") String corpusId,
             @PathParam("docId") String docId,
             @PathParam("textId") String textId,
-            @QueryParam("fields") String fields, @Context SecurityContext ctx,
+            @QueryParam("fields") String fields, 
+            @Context SecurityContext ctx,
             @Context HttpHeaders headers) throws KustvaktException {
         TokenContext tokenContext = (TokenContext) ctx.getUserPrincipal();
         try {
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java
index 8c938b5..41fe378 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java
@@ -41,9 +41,11 @@
 
     private int port = 6071;
 
-    private String pipeJson, pipeWithParamJson, pipeTimeout;
+    private String pipeJson, pipeWithParamJson, pipeTimeout, termMapperJson;
 
     private String glemmUri = "http://localhost:" + port + "/glemm";
+	private String termMapperUri = "http://localhost:" + port
+			+ "/term-mapper?foundry=corenlp";
 
     public SearchPipeTest () throws URISyntaxException, IOException {
         pipeJson = IOUtils.toString(
@@ -58,6 +60,11 @@
                 ClassLoader.getSystemResourceAsStream(
                         "pipe-output/with-param.jsonld"),
                 StandardCharsets.UTF_8);
+        
+        termMapperJson = IOUtils.toString(
+                ClassLoader.getSystemResourceAsStream(
+                        "pipe-output/term-mapper.jsonld"),
+                StandardCharsets.UTF_8);
     }
 
     @BeforeEach
@@ -99,6 +106,40 @@
         assertEquals("{test}", br.readLine());
     }
 
+	@Test
+	public void testRetrieveMatchInfoWithResponsePipe ()
+			throws KustvaktException {
+		
+		mockClient.reset()
+        .when(request().withMethod("POST")
+        		.withPath("/term-mapper")
+        		.withQueryStringParameter("foundry", "corenlp")
+                .withHeaders(
+                        new Header("Content-Type",
+                                "application/json; charset=utf-8"),
+                        new Header("Accept", "application/json")))
+        .respond(response()
+                .withHeader(new Header("Content-Type",
+                        "application/json; charset=utf-8"))
+                .withBody(termMapperJson).withStatusCode(200));
+
+		Response response = target().path(API_VERSION).path("corpus")
+				.path("GOE").path("AGA").path("01784").path("p36-37")
+				.queryParam("foundry", "tt")
+				.queryParam("response-pipes", termMapperUri)
+				.request().get();
+		assertEquals(Status.OK.getStatusCode(), response.getStatus());
+		String entity = response.readEntity(String.class);
+		JsonNode node = JsonUtils.readTree(entity);
+		
+		assertTrue(node.at("/snippet").asText().startsWith(
+				"<span class=\"context-left\"></span><span class=\"match\">"
+				+ "<span title=\"corenlp/p:ART\">der</span> <span title="
+				+ "\"corenlp/p:ADJA\">alte</span> <span title="
+				+ "\"corenlp/p:ADJA\">freie</span> <span title="
+				+ "\"corenlp/p:NN\">Weg</span>"));
+	}
+    
     @Test
     public void testSearchWithPipes ()
             throws IOException, KustvaktException, URISyntaxException {
diff --git a/src/test/resources/pipe-output/term-mapper.jsonld b/src/test/resources/pipe-output/term-mapper.jsonld
new file mode 100644
index 0000000..63d5b4a
--- /dev/null
+++ b/src/test/resources/pipe-output/term-mapper.jsonld
@@ -0,0 +1,81 @@
+{
+  "@context" : "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+  "meta" : {
+    "version" : "Krill-0.64.1"
+  },
+  "hasSnippet" : true,
+  "hasTokens" : false,
+  "matchID" : "match-GOE/AGA/01784-p36-37",
+  "context" : {
+    "left" : [ "token", 0 ],
+    "right" : [ "token", 0 ]
+  },
+  "snippet" : "<span class=\"context-left\"></span><span class=\"match\"><span title=\"corenlp/p:ART\">der</span> <span title=\"corenlp/p:ADJA\">alte</span> <span title=\"corenlp/p:ADJA\">freie</span> <span title=\"corenlp/p:NN\">Weg</span> <span title=\"corenlp/p:APPR\">nach</span> <span title=\"corenlp/p:NE\">Mainz</span> <span title=\"corenlp/p:VAFIN\">war</span> <span title=\"corenlp/p:VVPP\">gesperrt</span>, <span title=\"corenlp/p:PPER\">ich</span> <span title=\"corenlp/p:VMFIN\">mußte</span> <span title=\"corenlp/p:APPR\">über</span> <span title=\"corenlp/p:ART\">die</span> <span title=\"corenlp/p:NN\">Schiffbrücke</span> <span title=\"corenlp/p:APPR\">bei</span> <span title=\"corenlp/p:NE\">Rüsselsheim</span>; <span title=\"corenlp/p:APPR\">in</span> <span title=\"corenlp/p:NE\">Ginsheim</span> <span title=\"corenlp/p:VVFIN\">ward</span> <mark><span title=\"corenlp/p:VVPP\">gefüttert</span></mark>; <span title=\"corenlp/p:ART\">der</span> <span title=\"corenlp/p:NN\">Ort</span> <span title=\"corenlp/p:VAFIN\">ist</span> <span title=\"corenlp/p:ADV\">sehr</span> <span title=\"corenlp/p:ADJA\">zerschossen</span>; <span title=\"corenlp/p:ADV\">dann</span> <span title=\"corenlp/p:APPR\">über</span> <span title=\"corenlp/p:ART\">die</span> <span title=\"corenlp/p:NN\">Schiffbrücke</span> <span title=\"corenlp/p:APPR\">auf</span> <span title=\"corenlp/p:ART\">die</span> <span title=\"corenlp/p:NN\">Nonnenaue</span>, <span title=\"corenlp/p:PWAV\">wo</span> <span title=\"corenlp/p:PIDAT\">viele</span> <span title=\"corenlp/p:NN\">Bäume</span> <span title=\"corenlp/p:VVINF\">niedergehauen</span> <span title=\"corenlp/p:VVFIN\">lagen</span>, <span title=\"corenlp/p:ADV\">sofort</span> <span title=\"corenlp/p:APPR\">auf</span> <span title=\"corenlp/p:ART\">dem</span> <span title=\"corenlp/p:ADJA\">zweiten</span> <span title=\"corenlp/p:NN\">Teil</span> <span title=\"corenlp/p:ART\">der</span> <span title=\"corenlp/p:NN\">Schiffbrücke</span> <span title=\"corenlp/p:APPR\">über</span> <span title=\"corenlp/p:ART\">den</span> <span title=\"corenlp/p:ADJA\">größern</span> <span title=\"corenlp/p:NN\">Arm</span> <span title=\"corenlp/p:ART\">des</span> <span title=\"corenlp/p:NE\">Rheins</span>.</span><span class=\"context-right\"></span>",
+  "fields" : [ {
+    "@type" : "koral:field",
+    "key" : "ID"
+  }, {
+    "@type" : "koral:field",
+    "key" : "textSigle",
+    "type" : "type:string",
+    "value" : "GOE/AGA/01784"
+  }, {
+    "@type" : "koral:field",
+    "key" : "corpusID"
+  }, {
+    "@type" : "koral:field",
+    "key" : "author",
+    "type" : "type:text",
+    "value" : "Goethe, Johann Wolfgang von"
+  }, {
+    "@type" : "koral:field",
+    "key" : "title",
+    "type" : "type:text",
+    "value" : "Belagerung von Mainz"
+  }, {
+    "@type" : "koral:field",
+    "key" : "subTitle"
+  }, {
+    "@type" : "koral:field",
+    "key" : "textClass"
+  }, {
+    "@type" : "koral:field",
+    "key" : "pubPlace",
+    "type" : "type:string",
+    "value" : "München"
+  }, {
+    "@type" : "koral:field",
+    "key" : "pubDate",
+    "type" : "type:date",
+    "value" : "1982"
+  }, {
+    "@type" : "koral:field",
+    "key" : "availability",
+    "type" : "type:string",
+    "value" : "CC-BY-SA"
+  }, {
+    "@type" : "koral:field",
+    "key" : "layerInfos",
+    "type" : "type:store",
+    "value" : "corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens"
+  }, {
+    "@type" : "koral:field",
+    "key" : "docSigle",
+    "type" : "type:string",
+    "value" : "GOE/AGA"
+  }, {
+    "@type" : "koral:field",
+    "key" : "corpusSigle",
+    "type" : "type:string",
+    "value" : "GOE"
+  } ],
+  "textSigle" : "GOE/AGA/01784",
+  "author" : "Goethe, Johann Wolfgang von",
+  "title" : "Belagerung von Mainz",
+  "pubPlace" : "München",
+  "pubDate" : "1982",
+  "availability" : "CC-BY-SA",
+  "layerInfos" : "corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens",
+  "docSigle" : "GOE/AGA",
+  "corpusSigle" : "GOE"
+}
\ No newline at end of file
