diff --git a/api.py b/api.py
index 5ddfb9242a3c6679de013f8c77b95a5bbb304e94..a784e240123334b0716a720a2b891458728a9d26 100644
--- a/api.py
+++ b/api.py
@@ -108,6 +108,135 @@ def search():
 
 	return render_template('index.html', objects = merke, searchBool = True, text = text)
 
+@app.route('/filter', methods=['GET'])
+def filter():
+	merke = []
+	merkeLetter = []
+	actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in distinct-values(/root/object/descriptiveMetadata/actor/text()) order by $x return $x")
+	for a,actor in actorQuery.iter():
+		anfang = actor[0]
+		if (len(merkeLetter) == 0):
+			merkeLetter.append({"name" : anfang})
+		elif anfang != merkeLetter[len(merkeLetter)-1]["name"]:
+			merkeLetter.append({"name" : anfang})
+		merke.append({"anfang" : anfang, "name" : actor})
+	#Filter für ungefähres Datum:
+	merkeDate = []
+	dateQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in distinct-values(/root/object/descriptiveMetadata/datum/text()) order by $x return $x")
+	for a,datum in dateQuery.iter():
+		merkeDate.append({"datum" : datum})
+	#Filter für Ort:
+	merkeOrt = []
+	ortQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in distinct-values(/root/object/descriptiveMetadata/ort/text()) order by $x return $x")
+	for a,ort in ortQuery.iter():
+		merkeOrt.append({"ort" : ort})
+
+	return render_template('filter.html', letters = merkeLetter, objects = merke, dates = merkeDate, orte = merkeOrt,  filter = True, text = '')
+
+@app.route('/filter/actor/<path:kunstler>', methods=['GET'])
+def filterActor(kunstler):
+	text = kunstler
+	merke = []
+	urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(),'" + kunstler + "')]]/bildLink/text()) return $x")
+	actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(),'" + kunstler + "')]]/descriptiveMetadata/actor/text()) return $x")
+	titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(),'" + kunstler + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x")
+
+	urlList = []
+	actorList = []
+	titleList = []
+
+	for a,url in urlQuery.iter():
+		urlList.append(url)
+
+	for b,actor in actorQuery.iter():
+		actorList.append(actor)
+
+	for c,title in titleQuery.iter():
+		titleList.append(title)
+
+
+	for i in range(0, len(urlList)):
+		url = urlList[i]
+		actor = actorList[i]
+		title = titleList[i]
+		eintrag = {"url" : url, "actor" : actor, "title" : title}
+		merke.append(eintrag)
+
+	urlQuery.close()
+	actorQuery.close()
+	titleQuery.close()
+
+	return render_template('index.html', objects = merke, searchBool = True, text = text)
+
+@app.route('/filter/ort/<path:ort>', methods=['GET'])
+def filterOrt(ort):
+	text = ort
+	merke = []
+	urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/ort[contains(text(),'" + ort + "')]]/bildLink/text()) return $x")
+	actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/ort[contains(text(),'" + ort + "')]]/descriptiveMetadata/actor/text()) return $x")
+	titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/ort[contains(text(),'" + ort + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x")
+
+	urlList = []
+	actorList = []
+	titleList = []
+
+	for a,url in urlQuery.iter():
+		urlList.append(url)
+
+	for b,actor in actorQuery.iter():
+		actorList.append(actor)
+
+	for c,title in titleQuery.iter():
+		titleList.append(title)
+
+
+	for i in range(0, len(urlList)):
+		url = urlList[i]
+		actor = actorList[i]
+		title = titleList[i]
+		eintrag = {"url" : url, "actor" : actor, "title" : title}
+		merke.append(eintrag)
+
+	urlQuery.close()
+	actorQuery.close()
+	titleQuery.close()
+
+	return render_template('index.html', objects = merke, searchBool = True, text = text)
+
+@app.route('/filter/datum/<path:datum>', methods=['GET'])
+def filterDatum(datum):
+	text = datum
+	merke = []
+	urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/datum[contains(text(),'" + datum + "')]]/bildLink/text()) return $x")
+	actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/datum[contains(text(),'" + datum + "')]]/descriptiveMetadata/actor/text()) return $x")
+	titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/datum[contains(text(),'" + datum + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x")
+
+	urlList = []
+	actorList = []
+	titleList = []
+
+	for a,url in urlQuery.iter():
+		urlList.append(url)
+
+	for b,actor in actorQuery.iter():
+		actorList.append(actor)
+
+	for c,title in titleQuery.iter():
+		titleList.append(title)
+
+
+	for i in range(0, len(urlList)):
+		url = urlList[i]
+		actor = actorList[i]
+		title = titleList[i]
+		eintrag = {"url" : url, "actor" : actor, "title" : title}
+		merke.append(eintrag)
+
+	urlQuery.close()
+	actorQuery.close()
+	titleQuery.close()
+
+	return render_template('index.html', objects = merke, searchBool = True, text = text)
 
 if __name__ == "__main__":
     app.run(host="0.0.0.0", port=5000, debug=True)
\ No newline at end of file
diff --git a/templates/filter.html b/templates/filter.html
new file mode 100644
index 0000000000000000000000000000000000000000..493e258a4704a046688cba4b0b476e11e6c0a38c
--- /dev/null
+++ b/templates/filter.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='stylesheet.css') }}">
+<html>
+<head>
+	<meta charset="utf-8">
+	<title>AMK</title>
+	<h1>AMK</h1>
+	<h3>Atemberaubende Museums-Holzschnitt Kollektion</h3>
+</head>
+<body id="Startseite">
+	<div class="suchfeld">
+		<form action="{{ url_for('search') }}" method="post">
+			<input type="text" name="holzschnitte">
+			<datalist id="Holzschnitte">
+				<option value="Autor">
+			</datalist>
+			<input type="submit" value="suchen">		
+		</form>
+	</div>
+	<div class="menue">
+		<ul id="navibereich">
+			<li><a href="https://www.wikidata.org/wiki/Wikidata:Main_Page">WikiData</a></li>
+			<li><a href="{{ url_for('filter') }}">Filter</a></li>
+		</ul>
+	</div>
+
+	{% if filter %}
+		<div class="filter">
+			<form name="kunstler">
+				<h5> Künstler:</h5>
+				<ul>
+				{% for letter in letters %}
+					<form name="{{ letter.name }}">
+						<li onclick="renderListe('{{ letter.name }}')" style="display: inline-block;"> {{ letter.name }} <br>
+						</li><br>
+						<form name="kunstlerliste">
+							<ul id="{{ letter.name }}" style=" display: none;">
+								{% for object in objects %}
+								{% if object["anfang"] == letter["name"] %}
+									<li> <a style="display: table-row; color: black;"href="{{ url_for('.filterActor',kunstler=object.name) }}">{{ object.name }}</a> </li> <br>
+								{% endif %}
+								{% endfor %}
+								</ul>
+							</form>
+					</form>
+				{% endfor %}
+
+				</ul>
+			</form>
+
+			<form name="datumliste">
+				<h6> Datum:</h6>
+				<ul>
+					{% for date in dates %}
+						<li> <a style="display: table-row; color: black;"href="{{ url_for('.filterDatum',datum=date.datum) }}">{{ date.datum }}</a> </li> <br>
+					{% endfor %}
+				</ul>
+			</form>
+
+			<form name="ortliste">
+				<h7> Ort:</h7>
+				<ul>
+					{% for ort in orte %}
+						<li> <a style="display: table-row; color: black;"href="{{ url_for('.filterOrt',ort=ort.ort) }}">{{ ort.ort }}</a> </li> <br>
+					{% endfor %}
+				</ul>
+			</form>
+		</div>
+
+	{% else %}
+		<h6> {{ text }} </h6>
+	{% endif %}
+	
+
+	<script>
+		function renderListe(letter) {
+			liste = document.getElementById(letter);
+			console.log(liste.style.display);
+			if (liste.style.display == 'none') {
+				liste.style.display = 'initial';
+			} else {
+				liste.style.display = 'none';
+			}
+		}
+
+	</script>
+
+</html>
+
+
diff --git a/templates/index.html b/templates/index.html
index b4cb99a3dc1807f6460210a80b0c8cf80ad16a95..5b7591a22e90f1d0e0f0837f8d21b1a7904a2d59 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -20,7 +20,7 @@
 	<div class="menue">
 		<ul id="navibereich">
 			<li><a href="https://www.wikidata.org/wiki/Wikidata:Main_Page">WikiData</a></li>
-			<li><a href="">Filter</a></li>
+			<li><a href="{{ url_for('filter') }}">Filter</a></li>
 		</ul>
 	</div>