Soccer for Good: Back in 2018

Four years ago I was a fledgling programmer here at Software for Good, and I built an API for the World Cup that ended up going to to the front page of Hacker News. (See the original post here.) We kept it up for the duration of the World Cup, and it fed data to Raspberry Pis running LED screens, Android apps, Hubot integrations, SMS notifiers, terminal scripts, and websites around the world. At one point I think we were averaging over 1 million API requests per day.

Our awesome boss Casey and I had a laugh this week when I reminded him that when he asked me to build an API for my scraper four years ago, I had to search for what an API actually was to figure out if I could build one or not. (These days, I’m kinda known around here as the go-to person for building back-end integration with gnarly SOAP APIs, and I’ve spent most of the past two years building out APIs for our projects now that we tend towards a Rails back-end with a React front-end for our larger and more complex apps.)

But enough about me: What you all want to know is whether this API is going to work in 2018 or not! And I’m happy to say, yes it should be working for the 2018 World Cup, so feel free to start building your integrations on top of it. We may have to work out a few kinks with real-time events (substitutions, cards, etc.) as the games get rolling (it is built on a web scraper, after all), but as of right now, you should be able to say GOOOOOOOOAL in JSON in real time.

Will England drop out early again? Will Iceland or Panama take a Cinderella run deep? Will Messi finally claim that World Cup victory? Will Germany defend their title? The world will be watching, and your apps can too!

Visit the site at, and get match data from The code is open sourced at, and you can see more details of how it works in my original 2014 post.