Coloring your home in the colors of your favorite football team on matchday? We’ve got you covered!
This app connects Homey to football-data.org. Their services offer a free tier that can get you the teams and matches from some of the largest competitions: World Cup, European Cup, Champions League, Premier League, La Liga, Serie A, Bundesliga, Eredivise and more!
Their free tier is limited to 10 requests per minute. Our app has smart monitoring setup that scales the number of requests up and down based on if there is a match playing or starting soon. This way we can keep you within that limit easily.
Another thing to note is that their free tier has a 5 minute delay for match events unfortunately. In case you do want live scores and immediate feedback there are tiers available starting at € 12 a month.
In the appstore
Setting up the app
Go to football-data.org and signup for an account, you’ll receive your API key per mail
Install the application and go to the app settings where you’ll find a field to paste the API key, save first and then test the connection to validate the API key is working
Go to devices and add a new device for Football Data, you will be prompted to select any competition your API key has access to followed by selecting a team from that competition.
You are ready to setup some flows!
Flow cards
All flow cards are bound to the device (the team) you created.
Triggers (when …)
Match starts within X minutes
Match kicked off
Half-time started
Second half started
Extra time started
Match result changed - emitted on every score change
Team conceded a goal
Team scored a goal
Team draw (final result)
Team lost (final result)
Team won (final result)
Conditions (and …)
Team has a match today
Next match is within X hours
Team is playing
Team is drawing
Team is losing
Team is winning
Actions (Then …)
Get current score - returns tokens for: away team, away score, home team, home score, is _live, match status, score and current minute
Get next match - returns tokens for: date, kickoff time, date, days untill match, opponent, venue and is_homematch
Smart polling
To prevent hitting rate limits on the free tier we’ve added a system that scales requests up and down based on the current state for your team:
Idle: there are no matches within 2 hours, the polling rate is 1 request per 15 minutes
Pre match: a match starts within 2 hours, the polling rate is 1 request per 5 minutes
Live: a match is currently being played, the polling rate is 1 request per 30 seconds
Paused: during half-time we scale back to 1 request per 2 minutes
Post match: after the match polling scales back to 1 request per 15 minutes
This should give enough space to track about 5 teams playing at the same time.
Roadmap
Next match widget with club logo’s, names, venue, date and time
More? Feel free to request!
Changelog
v1.0.5 - 18/12/2025: First version
Source code
I’ve open-sourced the code of this app. It can be found in the Github repository below. Feel free to contribute.
I did note an issue, not sure if that is on my end or not.
Im using the get next match card and when they announce the time they tend to be of by 1 hour.
For example; it noted
PSV - Utrecht being played at 11:15 today, while it is 12:15 today.
FC Barcelona - Villareal being played at 15:15 today, while is 16:15 today.
For reference my Homey is setup with Dutch as language.
Sounds like a timezone issue. It’s currently fixed to Europe/Amsterdam - I’m not sure where you are located and if your timezone perhaps is an hour of by mine?
I should see if I can get Homeys timezone when transforming the API data so that it works for each tz instead of just Amsterdam.
I’ve reproduced and identified the bug. I changed the code to use your Homeys timezone to parse the match date and time. At least on my Homey it works as expected now. I noticed the update is already accepted in the store and available both of you to try! (@Gabriel_Laguna@Patrick_Dankers).
Sorry mate it was a busy day but I’ll check when I get back from work.
But I assume you solved it going of Gabriel’s feedback and your own mentioned solution
Awesome job man, I was really looking for something like this. If I may add a feature request, I don’t know if it’s possible but I’d love to get the channel where the game is broadcasted based on the country I live in (for instance as a variable?).
Unfortunately football-data.org does not provide information on broadcasts and I think it’ll be a pain in my butt if I had to connected another source for that and maintain that too. Thanks for the suggestion, but I can’t be of any help on that one. Sorry!
Hello ! Just to give some context, the idea was to grab the TV channel of the game to turn on the TV and automatically turn it on on the right channel 5 minutes before the game (looks like an Apple TV app is coming soon) Thank you for creating this app anyway!
I understand. But I see a few things happening that make it hard to get this built in a way it’s usable for everyone.
For starters there needs to be one or multiple sources that provide broadcasting details around the world. And even if there is a way to get this data, then the next challenge is matching data between football-data.org and the broadcast information. Things like abbreviations, timezones and ways of writing team names all are most likely to cause issues when matching.
Second issue is that your channel order on your television is not the same as mine, it might even be different while we have the exact same subscription and provider. Now this isn’t a problem that is too hard to fix, but it requires mapping channel names from a provider to channel numbers on a television. I can only imagine the pain this brings me when creating a UI for this.
I really like the idea, but I can’t live up to the expectations to get this working in a proper way
Brilliant! I’d love to see a widget I can display on my dashboard which shows the start time or countdown to the next match then display the score when the game is on!
I’ve just add FCB as team and on my end it says 21:00 Away game against Espanyol. Which seems right looking at vi.nl schedule.
Can you check your Homey > Settings > General and then Timezone under the System Information card? Should say Europe/Amsterdam in order for the code to translate UTC to your local time.
There’s an easier way to check the time by the way, visit Homey Developer Tools and look at both date (UTC) and dateHuman (should be the correct local time).