To get the questions in a tag you can simply use the [/questions](https://api.stackexchange.com/docs/questions#order=desc&sort=activity&tagged=haskell&filter=default&site=stackoverflow&run=true) endpoint as that does accept a `tagged` query parameter, from that document page: > To constrain questions returned to those with a set of tags, use the tagged parameter with a semi-colon delimited list of tags. This is an and contraint ... The API endpoints can relatively simple be used from any language which offer a web- or httpclient. First thing to do is the creation of the correct url and then process the returned http response. When using the [HtppClient](https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx) and the stock [DataContractJsonSerializer](https://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer(v=vs.110).aspx) your first iteration of a .Net 4.5 console app (VS2015) might look like this: ### main method static void Main(string[] args) { // simple call with a tagname var questions = GetQuestions("haskell"); // list the results Console.WriteLine(String.Format("{0}, \"{1}\", \"{2}\"", "id", "title", "link")); foreach (var q in questions.items) { Console.WriteLine(String.Format("{0}, \"{1}\", \"{2}\"", q.question_id, q.title, q.link)); } } ### GetQuestions Builds the url, calls the API and Deserialises the result to .Net classes private static wrapper<Question> GetQuestions(string tagname) { // make sure to handle the compressed stream that is returned using (var handler = new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip }) { using (var http = new HttpClient(handler)) { // build url obtained from // https://api.stackexchange.com/docs/questions#order=desc&sort=activity&tagged=haskell&filter=default&site=stackoverflow&run=true var apiRequest = new UriBuilder(); apiRequest.Scheme = "https"; apiRequest.Host = "api.stackexchange.com"; apiRequest.Path = "2.2/questions"; apiRequest.Query = String.Format( "order=desc&page=1&pagesize=10&sort=activity&tagged={0}&site=stackoverflow", tagname); // do an HTTP GET var json = http.GetStreamAsync(apiRequest.Uri).Result; // Deserialize the resut with a serializer // You can also use JSON.NET var serializer = new DataContractJsonSerializer(typeof(wrapper<Question>)); // cast the result return (wrapper<Question>)serializer.ReadObject(json); } } } ### Data Transfer Objects These are the classes that will hold the result after deserializing the response stream: /// <summary> /// https://api.stackexchange.com/docs/wrapper /// </summary> /// <typeparam name="T">a type that be in items</typeparam> [DataContract] public class wrapper<T> { [DataMember] public List<T> items { get; set;} [DataMember] public string error_message { get; set; } [DataMember] public int backoff { get; set; } } /// <summary> /// https://api.stackexchange.com/docs/types/question /// </summary> [DataContract] public class Question { [DataMember]public int question_id { get; set; } [DataMember] public string title { get; set; } [DataMember] public string link { get; set; } } You can create a specific [filter](https://stackapps.com/questions/6815/how-to-create-api-filters/6908#6908) if you want to reduce or broaden the default fields you get returned for each [question](https://api.stackexchange.com/docs/types/question). The field in that list marked with a green check mark are delivered by default. To also have the date a post was created you only have to add a new property to the `Question` datacontract. [DataMember] public string creation_date { get; set; } You might want to try a `DateTime` there but if the serializer doesn't accept that do the parsing of that creation_date yourself. On Stack Overflow you'll find plenty of examples how to so that.