• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Antichaos

Antichaos

Data Visualisation, Tableau & Data Services

  • Home
  • Services
    • Data Analysis
    • Training
    • Portfolio
  • Blog
  • Extensions
    • Tally
    • Latch
    • How to install
  • Tutorials
  • About Johan
  • Contact
  • Nederlands
  • Show Search
Hide Search
Home » Blog » Live News in Tableau – setup in 10 minutes

Live News in Tableau – setup in 10 minutes

2026-09-22 by Johan de Groot

Dashboards are usually great at showing trends, but it is always good to now why these trends are happening. News articles, press releases, blog posts can be a good addition to your daily data input.

In this tutorial, we’ll close that gap by building a lightweight news feed that lives right inside a Tableau dashboard. A Python script does the scraping and processing, GitHub runs it and hosts the resulting data for free, and the Tableau REST Connector pulls it straight into your workbook: no server maintenance, no paid API, and no manual work.

How it fits together

  • RSS is the format almost every news site publishes in (title, summary, date, link) – but Tableau can’t read it natively.
  • REST API is how one system asks another for data over the web. Since version 2026.1, Tableau can fetch REST/JSON data directly, no extra setup.
  • Python converts the RSS/XML into the JSON the REST connector expects.
  • GitHub runs that Python script on a schedule and hosts the resulting JSON file, so nothing needs to run on your own machine.

Starterkit “News in your dashboard”

Nothing to install except Python (and only needed if you want to test locally), no credit card, no command line necessary. Download these three files to your computer:

  • rssjson.py – downloads the news feeds and writes them as JSON/CSV
  • feeds.json – which feeds to download (to start with, edit freely)
  • rss.yml – tells GitHub to run the script every hour

The end result will be a URL like https://YOURNAME.github.io/feeds/all.json that Tableau reads like any other data source.


Part 1: Run it locally (optional)

Skip this part if you are in a hurry – do this part is you want to see the Tableau REST API running locally, and/or check if the feed work before publishing.

1.1 Install Python (skip if you already have it)

  • Windows: download from python.org/downloads, run the installer and tick “Add python.exe to PATH” on the first screen.
  • Mac: open Terminal (⌘-space, type Terminal) and type python3. If it isn’t installed, macOS offers to install it; say yes. Python.org has custom installers for newer versions

1.2 Open a terminal in this folder

  • Windows: open this folder in File Explorer, click in the address bar, type cmd and press Enter. A black window opens, already in this folder.
  • Mac: right-click the folder in Finder → Services → New Terminal at Folder (or open Terminal and type cd, drag the folder onto the window, press Enter).

1.3 Run the script

Run the python script by typing this – followed by a Return:

python rss2json.py

(Windows: use python; Mac: python3.)

You should see one line per feed, ending in something like
[ok] all.json: 774 items from 6 feeds.
A new folder out now contains all.json (everything), and one .json file per feed. If an error occured, this might help:

Error MessageFix
python3: command not found / ‘python’ is not recognizedPython isn’t installed or wasn’t added to PATH – see 1.1
No such file or directory: rss2json.pyThe terminal isn’t in the right folder
[FAIL] some-feed: … for one feedThat news site is down or blocking your script – others still work. Remove it from feeds.json if it keeps failing

1.4 Try it in Tableau right now (optional, running on same computer)

In the same terminal run a small webserver via Python:

cd out
python3 -m http.server 8000

Leave that window open. In Tableau Desktop: 
Connect → To a Server → More… → REST API, URL  http://localhost:8000/all.json, 

  • Response Format JSON
  • JSON Path $.items[*] 

Close the terminal window when done.

That proves everything works, but only on your machine. To let Tableau Server/Cloud reach it (or to stop running the script by hand) continue.


Part 2: put and run it online for free

You need a free account at github.com (sign up, confirm your e-mail). Everything below happens in the browser – no command line anymore.

1. Create the repository

  1. Go to github.com/new.
  2. Repository name: feeds. Leave it Public.
  3. Create repository.

2. Switch on GitHub Pages

Do this before adding the workflow!

  1. Repository → Settings (tab at the top) → Pages (left menu).
  2. Under Build and deployment → Source, choose GitHub Actions. (there is no save button)

3. Upload the script and the feed list

  1. On the repository’s front page (Code tab) click Add file → Upload files.
  2. Drag rss2json.py and feeds.json from this folder onto the page.
  3. Commit changes.

4. Add the hourly execution

  1. Add file → Create new file.
  2. In the name box type exactly: .github/workflows/rss.yml 
    (GitHub will automatically create this file and folder).
  3. Open rss.yml from this folder in a text editor, copy everything, paste it into the big input box.
  4. Commit changes – this will also start the first run.

5. Watch the first run and get your URL

  1. Click the Actions tab. The commit from 4. has started a run; if nothing is there, choose RSS to JSON on GitHub Pages in the left menu → Run workflow → Run workflow.
  2. Wait about a minute; click the run when it turns green. Under deploy you see your site address: https://YOURNAME.github.io/feeds/
    This webpage lists every file with its size. Your Tableau URL is
    https://YOURNAME.github.io/feeds/all.json

From now on GitHub re-downloads the feeds every hour at 42 minutes past, automatically, for free. Nothing runs on your computer any more.

Run failed with a red cross? Click it and read the first error:

ErrorFix
Get Pages site failed … Not FoundPages wasn’t turned on: do step 2, then re-run the failed job
No such file or directory: rss2json.py / feeds.jsonFiles aren’t at the top level of the repository
Yellow warnings about Node.js or Ubuntu versionsIgnore these

Part 3: Connect Tableau

Install the REST API Connector from Tableau Exchange if it isn’t already listed, then:

Connect → To a Server → More → REST API, using the URL from step 5 above.

Tableau fetches the datasource always as an extract. GitHub refreshes the source data hourly, but you still need to schedule extract refreshes yourself on Tableau Server/Cloud, e.g. at the 45th minute of each hour, a few minutes after GitHub’s run.

  • Publish the datasource to Tableau Server or Cloud
  • Schedule the refreshes. If you followed the instructions, every ’42nd minute after the hour’ the data is being fetched, so you might want to schedule a data refresh at the 45th minute of each hour.

Create a view

In Tableau Desktop, connect your workbook to the new datasource on Tableau Server or Cloud.

Useful first steps in the workbook:

  • published and updated arrive as text in UTC
    → create a calculated field DATETIME([published]).
  • feed_slug tells you which feed a row came from
  • link opens the article (add it as a URL action).
  • image_url can be shown with an Image Role (Tableau 2022.4+).
  • categories is comma-separated; SPLIT([categories], ",", 1) gets the first.

From here it’s a usual Tableau build: a list or card view of headlines, sorted by date, filtered/colored by feed_slug, with the URL action wired to link. Limit the number of items by filtering on GUID (the unique id of each article) top 5 by datetime


Changing and adding newsfeeds

Of course you want to add your own news sources. Open feeds.json in any text editor. Each feed is one block:

{
"slug": "bbc-world",
"url": "https://feeds.bbci.co.uk/news/world/rss.xml",
"name": "BBC News – World",
"category": "International news"
}
  • slug is a short name you choose (letters, digits, dashes) – it becomes the file name and the feed_slug column. 
  • url is the feed address. 
  • name is the friendly name
  • category can be used to group or filter news feeds

Add or remove blocks (mind the commas between them), then run the script again, or on GitHub open feeds.json → pencil icon → edit → Commit changes (that also triggers a fresh run).

Tip: Google News search

Create your own topical news feed on YOUR TERM:

https://news.google.com/rss/search?q=%22YOUR+TERM%22&hl=en-US&gl=US&ceid=US:en
works for any keyword, company name, or exact phrase (quote it for exact match). Swap hl/gl/ceid for other locales, e.g. nl-NL&gl=NL&ceid=NL:nl for Dutch results.

Tips on visualizing the Feeds

  • Both the USGS earthquakes and GDACS global disaster alerts contain spatial data – I added a longitude and latitude field so these can be plotted live on a map!
  • When using Image Roles, be aware of its restrictions. If you use many and/or large images, the don’t always show. Limit the number of images.
  • These datasource (earthquakes and disasters) contain spatial data: the exact location as latitude and longitude. I added these as extra fields using the Python script. The news doesn’t have to be a list – it can also be a map!

Good to know

  • Everything you publish is public. Gists and Pages are readable by anyone with the link. The six feeds included allow this; some publishers (e.g. NU.nl) forbid it — check before you add a feed.
  • It is a snapshot. Each run replaces the files with what the feed contains now (usually the last 10–100 items).
  • GitHub pauses the hourly job after 60 days without changes to the repository. You get an e-mail; editing any file (or Run workflow) switches it back on.
  • Cost: nothing. Public repositories on Github get unlimited job minutes and a run takes under a minute.
  • If you are not allowed to install the JDBC connector on your laptop, just create the datasource on Tableau Cloud/Server directly, using ‘New – Published Datasource’
  • RSS is a standard – but one with many implementations. You will encounter ‘strange’ feeds: with or without images, extremely long text, and broken feeds.







Get more out of your data?

I'm Johan - freelance data consultant behind Antichaos Data. I help you get Tableau and data work into shape: full projects, interim support, performance tuning, dashboard redesigns, training, or just an extra pair of hands when you're stuck.

Get in touch

API, Tableau

Primary Sidebar

Antichaos Services

  • Need Tableau Help ?
  • Basic, Advanced and Custom Training

Recent Blogposts

  • Live News in Tableau – setup in 10 minutes
  • Stop using red vs green in dashboards
  • Tableau Toggle Button: 3 Ways to Build an On/Off Switch
  • The Tally extension: CountTo renewed
  • 5 more Tableau Desktop Tips: Fields, Calculations & Pills
  • MeasureCamp Amsterdam 2026: the power of the blank board
  • Datafam Day 2026 – Amsterdam
  • How to create pill-style navigation in Tableau
  • Tableau Visionary 2026
  • Tableau REST API Connector: Add Live Web Data to Your Dashboards

Follow & Connect on

Antichaos

Copyright © 2026 Antichaos

  • Antichaos
  • Blog
  • Tutorials
  • Privacy
  • Extensions
  • Contact