Как спарсить динамическую страницу на C#?
Из headless-браузеров один из лучших phantom.js, он специально для этого предназначен.
Но:Хорошо понимая работу JS, предполагаю, что надо поставить нечто, что воспроизведёт нужную нам информацию, просто дождавшись полной загрузки страницы. 
Не обязательно! И работу JS не так и хорошо знаете, если данные загружаются с помощью AJAX, то не обязательно выполнять JS, можно просто симитировать эти HTTP-запросы, а чтобы понять что имитировать, есть снифферы - Fiddler, Wireshark, Charles, в конце-концов DevTools в браузере.Но, мало информации о них самих.
То, что вы хотите, сродни реверс-инжинирингу, поэтому информацию ищите прежде всего в голове, в виде навыков и знаний! Тренируйтесь!
Решение: в моём случае было много обфусцированного кода на самой странице, в js'е. Иначе, можно было бы, как говорилось выше, использовать разные решения: Выполнить js прямо в коде C# - Jint, JavaScriptdotNet, руки (На хабре прекрасная статья есть: https://habrahabr.ru/post/115021/) Отловить все ссылочки, с которыми работает JS, Ajax и пр., и отправить запросы именно по этим ссылкам. - Fiddler, Wireshark, Charles.Использовать HeadLess Browser. Скажем так, браузер без UI. (я использовал phantomjs - phantomjs.org/)
Я для своей задачи использовал PhantomJS + Selenium. Технологии развиваются, есть некоторые вещи которые не реализованы, мало чёткой документации. Если будут вопросы - обращайтесь :)