Part 4 of a series on indexing Shakespeare's works in Elasticsearch, demonstrating how to build a .NET 5 Web API that searches the index using the Elasticsearch low-level client. The approach stores raw JSON queries in separate files, deserializes them into dynamic C# objects to inject parameters, and sends them directly to Elasticsearch — avoiding the need to translate queries into NEST or high-level client syntax. Two endpoints are shown: one for searching across all plays and one for filtering by play and line. The post also explains why both Newtonsoft.Json and System.Text.Json are used together, since System.Text.Json lacks dynamic deserialization support.