Log daily football results and league standings to Sheets

Every morning, automatically record yesterday's match results and each league's latest table into a spreadsheet you can chart or pivot.

Deterministic Code
API-SportsGoogle SheetsPersonal ProductivityOperationsData SyncResearch & Monitoring
PromptCreate

Every morning at 7am, automatically log yesterday's football results and today's league standings from API-Sports into Google Sheets, so I build a season-long record I can chart or pivot. This is a deterministic fetch-and-append logging job: loop over my leagues, fetch, map fields, and append. No summarizing or judgement.

Trigger: run on a cron schedule every day at 7:00am in my timezone. Keep a fixed list of the leagues I track at the top of the workflow so I can edit it. Each league is identified by its API-Sports league ID and the current season, which is a 4-digit starting year (for example season 2025 for the 2025/26 campaign).

Step 1, yesterday's results. For each tracked league, call API-Sports 'List Fixtures (Live, By Date, League, or Team)' filtered by that league ID, the season, and yesterday's date in YYYY-MM-DD format for my timezone. Keep only fixtures whose status is finished (FT, AET, or PEN). For every finished match, append one row to the Results tab of my Google Sheet using Google Sheets 'Append Values', with these columns: match date, league name, home team, away team, final score written as home goals - away goals, and status. If a league returns zero fixtures for yesterday (results is 0), skip it and append nothing for that league.

Step 2, standings snapshot. For each tracked league, call API-Sports 'Get Standings' for the league ID and season. For every team in the returned table, append one row to the Standings tab using Google Sheets 'Append Values', with these columns: today's date as the snapshot date, league name, position or rank, team name, points, goal difference, and recent form. Tagging every row with today's date is what lets me chart a team's position over time; a one-off standings table cannot do that.

Notes: API-Sports is read-only and returns data inside a response array with a results count, so treat results:0 as a valid empty answer, not an error. When appending, use the option that parses input like the Sheets UI (USER_ENTERED) so dates and numbers land as real dates and numbers. Always append after the last row of each tab so the history accumulates and nothing already logged is overwritten.

What does this prompt do?

  • Each morning, pulls yesterday's finished matches for the leagues you follow and adds a row for every game with the date, both teams, the final score, and the result status.
  • Takes a fresh snapshot of each league's table and records every team's position, points, goal difference, and recent form, stamped with the date.
  • Builds a season-long history in your own spreadsheet, so you can chart or pivot how a team's position and points change week to week.
  • Runs hands-free on a schedule and only adds new rows, so nothing you already logged gets changed or overwritten.

What do I need to use this?

  • An API-Sports account (the free plan works for a few leagues checked once a day) to fetch football results and standings.
  • A Google account with a spreadsheet that has a results tab and a standings tab.
  • The list of leagues you want to follow and the current season year.

How can I customize it?

  • Change which leagues and which season year you track.
  • Adjust what time it runs each morning and the time zone used to decide what counts as 'yesterday'.
  • Rename the results and standings tabs or choose which columns get recorded.

FAQs

Which leagues can I track?
Any football league or cup covered by API-Sports, including the Premier League, La Liga, Serie A, the Bundesliga, and the Champions League, among many others. You just list the ones you care about.
Do I need a paid API-Sports plan?
The free plan is usually enough for a handful of leagues checked once a day. If you follow a lot of leagues you may need a higher tier to cover the extra daily lookups.
Will this overwrite my existing spreadsheet data?
No. It only adds new rows to the bottom of each tab, so your history keeps growing and nothing you already logged is touched.
What happens on days with no matches?
If a league had no finished games yesterday, it is simply skipped and no empty rows are added for it.
Why record the standings every single day?
Saving a dated snapshot each day lets you chart how a team's position, points, and form move across the season, which a single live table can never show you.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
LinkedIn Ads budget pacing dashboard for every client account

See every LinkedIn ad account's spend against the budget you committed to, catch overspend early, and rebalance without rebuilding a spreadsheet.

LinkedIn Ads
Google Sheets
Slack Bot
App

Stop copying football scores into a spreadsheet by hand.

Let this workflow log yesterday's results and today's league tables every morning, so you always have a season-long record ready to chart or pivot.