Public Tableau dashboards are meant to be viewed, not parsed. A lot of the work that goes on to show you the dashboard is handled server-side, and what happens client-side is pretty non-obvious. However, it is doable, and in this document I'll walk through what I've learned.

<aside> 💡 Want an example of this in action?

I maintain a COVID-19 dashboard for Butte County, CA, and pull data from a number of Tableau dashboards via this data extraction script. Inside you'll find some classes for parsing Tableau dashboards, and some uses of those classes. It's constantly evolving, but it might be useful to you.

Those interested in California data may also find some useful datasets I scrape with this method.

</aside>

Getting Started

To parse a Tableau dashboard (known as a sheet in a workbook: — see Terms below), you are going to need a few things:

  1. The official sheet URL (e.g., https://public.tableau.com/views/COVID-19HospitalsDashboard/Hospitals)
  2. The workbook ID (which we'll find in a second)
  3. Any filters you need to apply to get to the data (e.g., COUNTY=Butte, in the example URL above — these are not always obvious)

Finding the Workbook ID

  1. Open your browser's developer tools and go to the Network tab.
  2. Load the Tableau dashboard page. Filter it for bootstrapSession.
  3. Look for stickySessionKey and make note of the workbookId value.

Fetching Workbook Data

You are going to need to make at least two requests to start out: