🎯 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 →

Import Odds

Pro Feature

Import Odds pulls pre-match bookmaker odds from api-football.com into the competitions you import. Visitors see them as an odds table on the game page, as a one-line W1-X-W2 strip in game headers and match lists, and as “Who Will Win” percentages. Every price can be an affiliate link.

The Odds section on an upcoming game page: a market dropdown set to Match Winner, the Updated date, and a Home, Draw and Away table with one row per bookmaker logo and the best price in each column shaded green

Odds are pre-match only. Nothing here updates prices during a game.

Before you start, the competition has to be imported from the API and saved to your Dashboard (the orange star on API Leagues) – see API Import: Getting Started. What the provider returns is described in the Odds (Pre-Match) section of the api-football.com documentation.

🚀 1. Turn the import on

Go to FL API Import > Settings and find the Odds block. Set Import Odds (Pre-Match) to Yes. The rest of the block appears once it is on.

The FL API Import menu highlighted in the WordPress sidebar with the Settings tab selected, showing the Save button above the first settings block

Under Bookmakers, tick the ones you want to display. There are 30 names on the list, and select all and unselect all are there to save clicks. Press Save.

The whole Odds block on the API Import Settings tab: the Import Odds Pre-Match switch, the bookmaker checkboxes, the Who Will Win probability bookmakers, Clickable Odds, Custom Bookmaker Logos, and the W1-X-W2 controls

What the bookmaker list actually does

Tick exactly one bookmaker and the plugin asks the provider for that one only. Tick two or more, or none, and it stores everything the provider returns and filters the list when the page is rendered. The table only ever shows ticked bookmakers – so with none ticked, every market says “No data”.

⏱ 2. Schedule the import

Odds change constantly, so this is a scheduled job rather than something you run once.

  1. Open the Import Dashboard and find the Update Odds row. While the import is off, the row is grayed out and reads disabled in API Settings.
  2. Click the selected / all count in the Competitions column and tick the competitions it covers. Only competitions saved to your Dashboard are listed. The same switch is also inside the competition’s configuration on API Leagues, as Update Odds under Dashboard Actions.
  3. Press Run once to check it works, then press Schedule. The status turns ACTIVE.
The Update Odds row on the FL API Import Dashboard: the selected / all competitions count, the Run button, the orange Schedule button and the Scheduled Status badge

A scheduled Update Odds runs every 4 hours. Unlike Update Finished Games, this row has no clock link, so the interval can’t be changed from the Dashboard.

Pressing Run twice in a row doesn’t fetch fresher prices. While Cache some requests is on (the Import Data block on the Settings tab, on by default), the provider’s odds response is kept for an hour and reused.

Multistage competitions: one entry covers every stage

The competitions in this list are the ones you linked to an API league, and a link always points at the main stage – secondary stages can’t be linked. So one Update Odds entry fetches odds for the games in every stage, group stage and knockout rounds alike, and stores them against the main stage.

⚽ 3. Show the odds table

Go to Layout Builder > Layouts (v1), open your Match layout in the Layout Builder, and drag the Odds block from the Match group into a section. Update the layout.

A Match layout in Layout Builder v1: the Match Odds chip in the Available Block Types list, and the same block placed in a layout section below the scoreboard

On the game page the block opens on the first market the provider sent, usually Match Winner. The dropdown lists every market stored for that game, and picking one loads its table without reloading the page. Updated shows when the provider last changed those prices. The highest price in each column is shaded green, so the best book for each outcome stands out.

The same Odds section after switching the dropdown to Goals Over/Under: the table now has one column per over and under line, with the best price in each shaded green

Odds for one game on any page or post

To put the same table on any page or post, use the match shortcode with the odds section on its own:

[anwpfl-match match_id="123" sections="odds" show_header="0" section_header="0"]

Replace 123 with the game ID – Finding entity IDs shows where it is. show_header="0" hides the game header and section_header="0" hides the “Odds” heading. Type odds in by hand: the Sections picker in the shortcode builder doesn’t offer it.

A blog post with the match shortcode set to the odds section: the Match Winner dropdown, the Updated date and the bookmaker table, with no game header and no Odds heading above it

Odds for several upcoming games

The Matches Section shortcode prints one section for a list of games. This shows the odds for the next five fixtures of a competition, each under a slim game header:

[anwpfl-matches-section section="odds" competition_id="123" type="fixture" sort_by_date="asc" limit="5" header="slim"]

A game with no stored odds still gets its header, just with nothing under it.

The Matches Section shortcode on a page: two upcoming games, each shown as a slim header with kickoff time and both clubs, followed by its own odds dropdown and bookmaker table

The “Odds” heading and the “Updated” label are ordinary text strings. Rename them under Translations > Text Strings.

4. The W1-X-W2 strip

Separately from the table, you can print a single row of match-winner prices – 1, X and 2 – in the game header, the scoreboard, match lists and the next and last match widgets. It needs four things set, and shows nothing if any one of them is missing.

  1. Set Show Pre-Match Odds (Match Winner) in Game (W1-X-W2) to Yes.
  2. Choose one bookmaker under Bookmaker. The strip shows a single set of prices, so it needs a specific book. Only ticked bookmakers are offered.
  3. Tick at least one Game Status (for pre-match odds): Not Started, Live or Finished.
  4. Tick at least one place under Place/Game Layout.

Not Started shows the strip before kickoff. Live keeps it up while the game is live – leave it unticked and the strip is hidden during the game. Finished keeps it on finished games, as long as their prices are still stored.

The places are Scoreboard and Header (Core) on the game page, Slim – Center, Card A, Modern and Simple in match lists, and FL Last Match, FL Next Match and FL+ Next Match for the widgets. Tick as many as you use. Place/Game Layout has a picture of each one.

The scoreboard of an upcoming game with the W1-X-W2 strip under the clubs: three rounded pills labeled 1, X and 2 with the chosen bookmaker's match-winner prices
A slim match list of upcoming games, each row showing the kickoff date, both clubs and a 1, X, 2 strip of match-winner prices centered under the club names

Two things change what a game shows. If Manual Odds is on (Settings & Tools > Settings > Features > Manual Odds) and a game has all three manual prices, that game shows the manual strip instead of the imported one. And the FL+ Next Match place works in the FL+ Next Match widget, but the Next Game block doesn’t draw the strip at the moment.

5. Affiliate links and bookmaker logos

Set Clickable Odds to Yes and a set of Affiliate Links fields appears, one per bookmaker you ticked. Paste your link for each and press Save. In the odds table, every price from that bookmaker becomes a link, and so does its logo. The links open in a new tab.

The Odds block with Clickable Odds switched to Yes and the Affiliate Links fields below it, one text field per ticked bookmaker with a link pasted into the first

The W1-X-W2 strip uses the same link. When the strip’s bookmaker has an affiliate link saved, its 1, X and 2 prices all point to it.

Custom Bookmaker Logos does the same for images: switch it on and each ticked bookmaker gets a Select Image button that opens the media library, plus Remove Image to go back to the default. The logo appears in the odds table – the W1-X-W2 strip has no logos.

Custom Bookmaker Logos switched to Yes: one row per ticked bookmaker, the first with a chosen image preview, a Remove Image link and a Select Image button, the others with Select Image only
The odds table on the game page with a custom logo in one bookmaker row. That row's logo and prices link to its affiliate URL, though they look the same as the other rows, which stay plain text

6. Win probabilities

The plugin can turn match-winner odds into a percentage split for the “who will win” display. It averages the home, draw and away prices across bookmakers and removes the margin, so the three figures add up to 100. The pie that shows them is part of Game Prediction.

By default it uses every bookmaker the provider returned for the game – including ones you didn’t tick. Narrow that with “Who Will Win” Probability Bookmakers, up to five, picked from your ticked bookmakers. Leaving it empty is the same as all of them.

A bookmaker that doesn’t publish all three prices for a game is left out of the average for that game. The calculation doesn’t run at page load. It runs about half an hour after an odds import, and about a minute after you change the probability bookmakers and press Save.

7. Translating the market names

Market names arrive in English, as the provider names them – Match Winner, Goals Over/Under, Asian Handicap and so on. Go to Translations > Odds Translations to replace them. The page lists more than 300 market names, each with its default wording and an empty field for your own. The third column, Context, stays blank on this page. Fill in only the names you need and save.

The Odds Translations page under the Translations menu: Default, New and Context columns, with Match Winner, Home/Away, Second Half Winner and Asian Handicap rows and one New field filled in

Your wording replaces the name in the market dropdown. A market the provider sends that isn’t on the page keeps its English name. The outcome labels inside the table – Home, Draw and Away for Match Winner – are printed as the provider sends them and aren’t on this page either.

🆘 Troubleshooting

The run finishes but no odds appear

The Dashboard doesn’t report a count for this action, so a clean finish is not proof anything was stored. A green - OK - line in the Actions Log means the provider sent odds for that league and season. It doesn’t mean any of them matched your games. A red - Error message means the provider sent nothing for it.

The Actions Log under the Dashboard after running Update Odds: a green success line per competition reading the competition name followed by - OK -, and a Task Completed line

So open a game that hasn’t kicked off yet and look for the odds block there. If it is empty, check three things. The competition is linked and saved to your Dashboard. The game was imported from the API – odds are matched to imported games only, so a game you added by hand never gets any. And the provider actually has prices for that game yet.

The dropdown lists markets, but the table says “No data”

The table shows ticked bookmakers only. “No data” means none of them has prices for the market you picked – or no bookmaker is ticked at all. Tick more bookmakers under Bookmakers and save.

Odds vanished for older games

Each run that brings back odds for your games replaces the competition’s whole stored set with that response. A game the provider no longer sends odds for loses them at that run, and its table and strip go with them. If a run brings back nothing, the old set stays. This is expected. There’s no option to keep older prices, and pausing the schedule keeps what’s stored but also stops fresh prices for upcoming games.

The W1-X-W2 strip is missing

All four settings in step 4 must be filled in. The usual miss is Bookmaker left on – select bookmaker –, no game status ticked, or no place ticked. After that, check the strip’s bookmaker has match-winner prices for that game – the strip doesn’t fall back to another book. If the game has manual odds, you’ll see the manual strip instead. And in the Next Game block the strip doesn’t show at the moment, even with FL+ Next Match ticked.

A bookmaker has no prices even though it is ticked

Ticking a book only filters what’s displayed – it doesn’t create prices. If the provider sent nothing from that bookmaker for a game, its row isn’t in the table. Widen the selection, or switch the strip to a book that does have prices for your competitions.

I switched Clickable Odds off, but odds still link

Clickable Odds switches the price links off in the odds table only. A saved affiliate link still links the bookmaker’s logo in that table, and the prices in the W1-X-W2 strip. To remove them, switch Clickable Odds back to Yes, empty the link fields, save, then switch it off again.

I ran Update Odds again and the prices didn’t change

With Cache some requests on, the provider’s odds response is reused for an hour. Wait for the hour to pass, or let the 4-hour schedule do the refreshing.

📚 Related