[App][Pro] football-data.org - automations based on football matches!

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

  1. Go to football-data.org and signup for an account, you’ll receive your API key per mail
  2. 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
  3. 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.
  4. 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.

1 Like

First version got approved, so ready to use for all pro users!

1 Like

Neat idea, will give this a shot for sure!

1 Like

Perfect! Thx

1 Like

@pendojoshua

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.

I also saw on https://www.football-data.org/
Villareal - FC Barcelona being listed at 15:15

But to make sure I checked online;
Villarreal vs Barcelona - La Liga • Today, 16:15

So I think something has to be altered to get the correct time depending on your locale/Timezone.

If I can help in debugging or anything feel free to let me know.

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.

image

I have seen the same issue, but it is fine on the website now (https://www.football-data.org/)
The Homey card still shows 15:15

image

The information has recently been updated (next match), now showing 20:00 on the Homey card.

Thanks for the info.

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).

2 Likes

It works perfectly!!! Thank you for your quick answer and also for your work.

1 Like

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 :slight_smile:

2 Likes

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 :waving_hand: ! 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) :slight_smile: 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 :wink:

1 Like

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!

2 Likes

Hmm something must be up still with timezones etc.

Today Barcelona is playing Espanyol at 21:00
It was announced for them to be playing at 20:00
Thing is that is the time as noted by football-data.

I checked my Homey’s local time using a simple Homeyscript

3-1-2026
3-1-2026, 12:04:26
12:04:26
12:04

Which is accurate for me (living in the Netherlands).
For reference the script;

But as noted the match is being played on 21:00 dutch time not 20:00.

Any ideas @pendojoshua ?
My Homey’s language and location is Dutch / The Netherlands btw.

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).

1 Like

Sure just checked;
date “2026-01-03T13:34:20.012Z”
dateHuman “Saturday 3rd January 2026 14:34:20”
timezone “Europe/Amsterdam”

As for in Settings;

So why is my date of an hour :stuck_out_tongue: compared to dateHuman? Hmmm but that should be UTC right … so is still correct.

Did some testing with it just yet;

This is the flow I am using;

It announced it wrong while testing so stated; “Barcelona speelt om 20:00 tegen Espanyol“
So I checked what the tags where getting;

As you can see “Aftraptijd” is stil 20:00.

I’ll try rebooting Homey once to make sure :wink:
If you have any other ideas feel free to let me know.