🎯 Need Help?

Get Premium Support

Priority assistance from the developer

⬆️ Upgrade

Unlock all features

More from ANWP

Sports Leagues Premium

Multi-sport league management with advanced statistics

Learn more →

AnWP SL Theme Kit

Starter themes & block patterns for Sports Leagues

Learn more →

API Import for a Round-Robin League

Pro Feature

A round-robin competition is the ordinary league shape: every club plays every other club, and one standing table decides the winner. This page links such a competition to a league on api-football.com, so fixtures, results, squads and statistics arrive automatically instead of being typed in.

The work happens on one screen, FL API Import > API Leagues, and takes about five minutes per competition. The screenshots follow one real season all the way through: Premier League 2023-2024, which the API calls Premier League (England) – 2023, with 38 rounds and 20 clubs.

Before you start

You need Football Leagues PRO with an API provider already connected – see API Import: Getting Started. You also need somewhere to put the data: either an existing round-robin competition, or a new one you create on the way through. The competition itself is covered in Round-Robin Competitions.

Video: a league from start to finish

This video imports a regular national league from api-football.com, from picking the league to creating its games. It was recorded on older screens, so the layout has moved on: today the same job starts at FL API Import > API Leagues, the database button on the league row, then Manual Configuration, and the configuration modal groups its actions into cards. The steps below match the current screens.

🚀 1. Find the league

Open FL API Import > API Leagues. The table lists every league your API plan covers, one row per league and season, so a single league appears once for each season it has. The list is kept for a day; Update API Data at the top fetches it again, for example when a new season has just been added.

Eight filters sit above the table: Filter by League, Filter by Country, Filter by Season, Is Active, Start Date After, Start Date Before, Saved In Dashboard and Saved Configuration. Filtering by country and season is usually the fastest way in.

The API Leagues tab with Filter by League set to Premier League (England), the Update API Data button above the filters, and one row per season with its Season, Start Date and End Date columns

The Season column shows a single year. For a league that runs across two calendar years it’s the year the season starts, so the 2023-2024 Premier League is the 2023 row. The Start Date and End Date columns settle any doubt.

A league row on the API Leagues tab, showing the star button, the outlined database button and the branching Structure button at the end of the row

Each row ends with three controls:

ButtonWhat it does
StarSaves the league to the Import Dashboard, or removes it. Stays disabled until an import configuration exists.
DatabaseOpens Import Competition Configuration. It’s filled blue while no configuration exists, and outlined once there is one.
Branching arrowA small menu: Create/Update teams and Debug: Fixtures, plus Add teams to groups/ties once the league is linked to a competition.

Two small letters can appear on the database button. A red A means the Import Wizard can set this league and season up automatically. An orange L means the existing configuration is a Lazy Import.

2. Choose Manual Configuration

Click the database button. With no configuration yet, the modal offers three ways to build one.

The Import Competition Configuration modal with three choice cards: Run Wizard, Lazy Import marked BETA, and Manual Configuration
CardUse it when
Run WizardThe league is on the wizard’s supported list and you want the structure and the configuration built for you. It’s grayed out and marked – not available – otherwise.
Lazy Import (BETA)You want speed over control. Fast and almost automatic, but standings are less interactive, there are no brackets, and standing data updates late.
Manual ConfigurationYou want a real competition structure and a standing table with your own ranking rules. This is the route described below.

Click Manual Configuration.

3. Pick the local competition

The Select Local Competition modal lists the competitions on your site that aren’t linked to an API league yet.

The Select Local Competition modal with a competition dropdown, a refresh button beside it and a Next Step button below

If the competition doesn’t exist yet, use the here link in the modal to open a new competition in another tab, then come back and press the circular refresh button next to the dropdown. The list re-reads without reloading the page.

Creating the competition on the way

The here link opens Add New Competition. A new competition already starts as a single Regular Season stage with Competition Type set to Round Robin, which is exactly the shape you need. Only two things are required:

  1. Click – select league – and pick the league. If it isn’t in the list, click Create New League, type the League Name, choose its country and click Save New League.
  2. Click – select season – and pick the season, creating it the same way if needed.
  3. Leave the title empty if you like – on publish the competition is named after its league and season, for example Premier League 2023-2024. Click Publish.
The Add New Competition screen with the orange Fill in the required fields notice listing League and Season, the General panel showing - select league - and - select season - pickers, and a Regular Season stage below with Competition Type set to Round Robin
The Select League modal switched to create mode, with a League Name field, a country dropdown and the Save New League button

Back in the Select Local Competition modal, press refresh, select the competition and click Next Step.

4. Map the API rounds

Edit Competition Structure opens on step 1. The table has one row per round of your competition, with the stage name and its type on the left, and a multi-select of API rounds on the right.

Step 1 of Edit Competition Structure: a Local Competition column, a Type column reading round-robin, an API Rounds multi-select and a Set All button

A plain league has a single round, so there’s a single row. Click Set All to attach every API round to it. That’s the right answer for almost every national league, because the API splits a league season into Regular Season – 1, Regular Season – 2 and so on, and all of them belong to the same table. For Premier League 2023-2024 that’s 38 rounds, Regular Season – 1 to Regular Season – 38; a Bundesliga season has 34.

Mapping all of them to one row doesn’t lose the matchweeks. When games are created, each one takes its matchweek from the last number in its round name, so a game from Regular Season – 12 lands in matchweek 12.

The toggle at the bottom, Put all Teams into single table, decides how the plugin reads those fixtures:

  • No (default) – the plugin builds one list per club: the club plus every club it meets in the mapped rounds. Clubs with identical lists share a group, and every different list becomes a group of its own. In a full league, where everyone plays everyone, all the lists match and you get one group. If some clubs haven’t met each other in the rounds you mapped, the lists differ and you get several overlapping groups – close to one per club when most of them differ.
  • Yes – every club found in the mapped rounds goes into one group, whatever the fixtures say.

Leave it on No for a straight league with the whole season mapped, and click Next Step. Switch it to Yes when not every club meets every other in the mapped rounds – part of the season isn’t published yet, say. It goes back to No each time step 2 loads, so set it again if you return to step 1. If your league is split into conferences or divisions, read API Import for a Competition with Conferences instead.

5. Check the groups and write the structure

Step 2 shows what the plugin recognized: the rounds you mapped, then each group it found with the club names it contains and a Create / Ignore toggle.

Step 2 of Edit Competition Structure listing the mapped rounds and one recognized group holding all twenty clubs, its toggle set to Ignore, above the Update Competition Structure button

A group is named Group #1, Group #2 and so on unless the API’s own standings call that exact set of clubs a group – so a plain league comes through as Group #1, while a group stage comes through as Group A and Group B. Check the club count against the real league: 20 names for the Premier League, 18 for the Bundesliga.

The toggle’s starting position depends on your competition. On a new competition, whose group is still empty, it starts on Create. If any group in that round already has clubs, every recognized group starts on Ignore, so re-running this step never quietly rewrites work you did by hand. That’s why the Premier League shot above, taken on a competition that’s already filled, reads Ignore.

Click Update Competition Structure. Three things happen:

  1. Any club in a Create group that doesn’t exist on your site yet is imported with its logo, plus its stadium while Import Stadiums is on under FL API Import > Settings.
  2. The clubs are written into the competition’s groups. Existing groups are filled in order, and any extra groups are added after them.
  3. The round mapping is saved, so later imports know which API rounds belong to which stage.

Groups are matched by position, not by name

The first recognized group fills your first group, the second fills your second, and so on. If your competition already has groups in a different order, the clubs land in the wrong ones. Set groups to Ignore and fix them in the competition editor instead.

Club creation takes a while on a full league, because every new club’s logo is downloaded into your Media Library, and its stadium created too when stadium import is on. Leave the tab open until the Competition Structure Updated message appears.

6. Create games and squads

The configuration now exists. On a first setup you don’t have to go looking for it: after the structure update succeeds, Import Competition Configuration opens by itself on the action cards. Later on, the database button opens straight to them instead of the three choices.

The Import Competition Configuration modal after a configuration exists, showing the Create and Setup, Update Games and Utilities action cards

If the local competition has no logo yet, an update logo button sits at the end of the Local Competition line. One click copies the league’s logo from the API onto your competition.

The Linked Competitions block at the top of Import Competition Configuration, with the API competition and its logo on the first line and the linked local competition on the second, followed by an update logo button

Run the action cards in this order:

ActionWhat it brings in
Create GamesEvery fixture in the mapped rounds that isn’t on your site yet, with dates and kickoff times. Stadiums come with them while Import Stadiums is on, and referees only when Import Referees is on – both live under FL API Import > Settings.
Update Players & SquadsPlayers and squad numbers. Pick All Clubs, or one club at a time from the dropdown.
Update Finished GamesScores, events, lineups, substitutes and statistics for games still marked as fixtures on your site that the API now reports as finished. When it’s done it recalculates the standing tables and moves the competition’s current matchweek on.

Each action shows its progress under the card, for example Creating games – 120/380 …, and a message when it’s finished. Running Create Games again later is safe: fixtures you already have are skipped, and if nothing is new you’ll see No Games to Create.

The Utilities block below holds Update Kick Off time for upcoming games and Re-Update Finished Matches, which re-reads matches you already have, plus Get or Update Predictions when predictions import is on. Re-Update Finished Matches can target everything, a single matchweek or a single match, and it’s the tool to reach for when events or statistics look incomplete.

7. Add the standing table

The import fills the competition, not the table. Create the standing table yourself, once:

  1. Go to Competitions > Standing Tables > Add New Standing Table.
  2. Under Competition, pick the competition you just imported. Under Group, pick its group – Group #1 for a plain league. Only groups without a published table are offered.
  3. Click Save & Continue, set the ranking rules the league actually uses, and publish. Leave the title empty and one is built for you.
The Select Competition Group panel of Add New Standing Table, with an imported league chosen under Competition, Group #1 chosen under Group with its clubs listed, and the Save and Continue button

Saving calculates the table from the games already imported, and Update Finished Games recalculates it as results arrive. The competition editor and standing basics are in Round-Robin Competitions.

Open the competition on the front end to check the result: the table and the imported games.

The front-end page of the imported Premier League 2023-2024 competition, showing the standing table with all twenty clubs and the final matchday's imported games with their scores

8. Keep it up to date

Click the star on the league row to save it to the Import Dashboard. Once it’s saved, the league’s Import Competition Configuration modal gains a Dashboard Actions block: switch on the updates this league should get – finished games, kickoff times, players, transfers, injuries, lineups and more – and click Update Dashboard Action Settings. How and when they run is set on the dashboard itself – see Import Dashboard.

The Dashboard Actions block in Import Competition Configuration for a league saved to the Dashboard, with Select All and Unselect All links, toggles for Update Finished Games, Update Kick Off Time, Stadiums and Referees, Update Players, Update Transfers, Update Injuries and Update LineUps and Formations, plus Update Predictions, Update Odds and LIVE import on a site with those features switched on, and the Update Dashboard Action Settings button

New fixtures announced mid-season are picked up by the Discover New Games tab rather than by re-running the structure step.

If you do need the structure step again – to change the mapped rounds, or to fill a group you left on Ignore – the database button won’t take you there any more. Open the branching-arrow menu on the league row and choose Add teams to groups/ties.

The branching-arrow menu open on a linked league row, showing Create/Update teams, Add teams to groups/ties and Debug: Fixtures

🆘 Troubleshooting

“Sorry, no available competitions”

Every competition on the site is already linked to an API league. Create a new one with the here link and press refresh. A competition that’s already linked is left out on purpose – open its own league row instead of starting a new configuration.

Step 2 shows several groups for a normal league

Some clubs haven’t met every other club in the rounds you mapped, so their opponent lists differ and each different list became a group. Usually only part of the season is mapped. Click Previous Step, click Set All, and try again. If the provider hasn’t published every round yet, set Put all Teams into single table to Yes before Next Step – it resets each time step 2 loads. If the split is real, the competition is a conference league.

A group is missing clubs

Clubs are only recognized from fixtures. A club with no fixture in the mapped rounds isn’t in any group. Add it in the competition editor by hand.

Create Games finished, but some games are missing

A game is only created when both clubs sit in the same group of the mapped round. Fixtures that don’t are skipped, and the finish message doesn’t say so – compare the number of games with the real schedule. The usual causes are a group left on Ignore in step 2, or a club missing from the group. Fix the group (reopen Add teams to groups/ties, or add the club in the competition editor) and run Create Games again. Games you already have aren’t duplicated.

“No Games to Create”

Every fixture in the mapped rounds is already on your site. That’s the normal answer on a second run. If you expected new games, check that their rounds are mapped – a round the provider added after you set up the mapping isn’t attached to your stage until you add it in step 1.

“Empty API Data”

The API returned no fixtures for this league and season. Usually the season hasn’t been published by the provider yet, or your plan doesn’t cover that league. Check the row’s start date, and check coverage on api-football.com.

“Another request is active”

Only one import action runs at a time. Wait for the spinner to stop before starting the next one.

📚 What’s next