Soccer & Football Betting Odds: Historical & Closing Lines avatar

Soccer & Football Betting Odds: Historical & Closing Lines

Pricing

from $3.50 / 1,000 matches

Go to Apify Store
Soccer & Football Betting Odds: Historical & Closing Lines

Soccer & Football Betting Odds: Historical & Closing Lines

Soccer odds, football betting odds and football data API: Premier League, LaLiga, Serie A, Bundesliga, Champions League + 1,000 leagues. Up to 120 bookmakers: 1X2, over/under, BTTS, Asian handicap, opening & closing. Results, xG, shots, corners, scorers. History back to 2005.

Pricing

from $3.50 / 1,000 matches

Rating

0.0

(0)

Developer

Min Maxxxer

Min Maxxxer

Maintained by Community

Actor stats

1

Bookmarked

53

Total users

19

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

πŸ’° $5 per 1,000 matches ($3.50 on Business plans) β€” platform usage and every bookmaker's odds included. Press Start β€” the prefilled input returns 30 matches with odds in under a minute.

Sample output: Premier League 2024/25 with fair 1X2 odds, line movement, over/under and Asian handicap consensus

Get every football (soccer) match from 1,000+ competitions β€” top leagues, lower divisions, cups, women's and youth football β€” with opening and closing odds from 30 to about 120 bookmaker listings (switch on All bookmakers) for 1X2, over/under, both teams to score and Asian handicap, a no-vig market consensus, line movement, full scores (half-time, extra time, penalties), xG statistics and goal events. One clean row per match, ready for a spreadsheet, a database or a model.

Two modes:

  • Recent matches β€” every competition, from 7 days back to 7 days ahead (upcoming matches with current prices)
  • Full seasons β€” complete seasons of any league you choose, with odds history back to the mid-2000s

πŸ†“ Free sample on Hugging Face: Premier League 2025-26 closing odds and graded results β€” one row per match: consensus 1X2, over/under 2.5, BTTS and Asian handicap, every market graded.

Checked against an independent source

All 380 Premier League 2024/25 matches compared with football-data.co.uk, the free reference dataset bettors have used for two decades (25.10.2026):

WhatSame as football-data.co.uk
Full-time score, half-time score, 1X2 result, match date380 of 380
bet365 closing 1X2 prices (1,140 prices)100% identical
bet365 closing over/under 2.5 prices100% identical
Shots, shots on target, corners93–95% identical, the rest Β±1 (two data providers count slightly differently)
Asian handicap main line91% the same line with All bookmakers (the rest a quarter line apart)

What football-data.co.uk does not have and this Actor does: 1,000+ competitions instead of ~22 leagues, 30–120 bookmakers instead of ~6, the opening price of every bookmaker, BTTS, xG, goal scorers, cups and European competitions, and today's and upcoming matches with current prices.

Football data API: xG, match statistics and goal scorers

Not only odds. Every finished match comes with its full statistics and events: expected goals (xG), xG on target, possession, shots, shots on target, big chances, corners, passes, fouls and cards, plus every goal with the minute, scorer and assist. xG is published for the Premier League, LaLiga, Serie A, Bundesliga and Ligue 1 from the 2023-24 season and for most other leagues from 2025-26 (in part from 2023-24); shots, possession and corners go back to 2013-14, passes to 2018-19. Need results and stats only? Switch Include odds off β€” one row per match, same price.

Most football scrapers give you scores. Most odds scrapers give you today's prices from a handful of books. This Actor gives you both, with the opening price and the closing line of every bookmaker β€” the data you need to build and backtest betting models.

What you get for each match

  • Match: kick-off time (UTC), country, competition and stage, home and away team, Flashscore IDs and link, women's / youth flags
  • Result: status (finished, after extra time, after penalties, awarded, live, scheduled, postponed…), final score, half-time and second-half score, score after 90 minutes, after extra time and the penalty shoot-out, 1X2 result (H/D/A, settled on 90 minutes), winner, red cards
  • Odds per bookmaker β€” opening price and latest price for every outcome; once a match has started the latest price is the closing line:
    • 1X2 (home / draw / away) with the bookmaker margin
    • Over/Under goals β€” the lines you choose (e.g. 1.5, 2.5, 3.5) or every line offered, quarter lines included
    • Both teams to score (yes / no)
    • Asian handicap β€” the main line or all lines
    • Double chance (optional)
  • Market consensus (median across bookmakers, margin removed) for every market:
    • fair odds and win / over / BTTS probabilities at the open and at the close
    • line movement in percentage points
    • best available odds
    • the Asian handicap main line at the open and at the close
    • median 1X2 margin
  • Statistics (finished and live matches): expected goals (xG), xG on target, expected assists, possession, shots, shots on target, big chances, corners, passes, crosses, fouls, cards, saves and more
  • Events: every goal with minute, scorer, assist and the score after the goal; penalties scored and missed, own goals, yellow cards, second yellows and red cards

Historical odds: full seasons back to 2005

Pick leagues and seasons and get every match of the season β€” all stages, including play-offs and championship/relegation groups β€” with the opening and closing odds each bookmaker published at the time.

Season (Premier League, measured 25.10.2026)Bookmakers per matchWith All bookmakers
2005/063–78–12
2008/094–1011–21
2012/136–914–17
2015/16 – 2019/20about 1123–28
2022/2311–1238–44
2024/25about 20about 68
current seasonabout 30up to about 120

Which markets, from when: 1X2 from 2005/06; over/under and Asian handicap from 2008/09; both teams to score from 2013. Scores and half-time scores cover every season; goal events every season in the big five leagues and from 2011-12 in most others; match statistics (shots, corners, possession…) from 2013-14 (older seasons: cards only), passes from 2018-19; expected goals (xG) from 2023-24 in the big five and from 2025-26 in most other leagues.

A full season of a top league (380 matches, four markets, statistics and events) takes one to three minutes. For many leagues and seasons, raise the run timeout (the default is 6 hours).

A whole league history in one run

No need to start one run per season: leave Seasons empty and set Last seasons to how far back you want to go β€” one run returns every season, oldest data included.

{
"mode": "seasons",
"leagues": ["England: Premier League"],
"seasons": [],
"lastSeasons": 22,
"markets": ["1x2", "overUnder", "btts", "asianHandicap"]
}
What you ask forInputMatches (about)
Premier League, every season since 2005/06"lastSeasons": 228,000
Top 5 European leagues, last 10 seasons5 leagues, "lastSeasons": 1016,500
Top 5 European leagues, last 3 seasons5 leagues, "lastSeasons": 33,900
Champions League (with qualifying rounds), last 10 seasons"lastSeasons": 102,200
One season of a top league"seasons": ["2024-2025"]380

The current season counts as one of the Last seasons (matches played so far). Want to try it on a small slice first? Set Max matches (e.g. 200) β€” the run stops there and you pay only for what was saved.

Coverage

Measured on a full day of 313 matches (all levels, including amateur and youth football):

SegmentMatches with oddsBookmaker brands per priced match (median)
Men's senior football78%25
Women's football94%25
Youth and reserve teams70%11
Top divisions and national cups (in the sample: MLS, Brazil Serie B, Colombia Primera A, Copa Chile, Emperor's Cup)100%about 30 listings; with All bookmakers 100–120 for a top-league match

Over/under 2.5 and both-teams-to-score prices come with 99% of priced matches. A busy weekend day has 1,500+ matches.

Bookmakers include bet365, 1xBet, Betano, Betfred, Betway, bwin, BetMGM, Betclic, DraftKings, Fanatics, Interwetten, Ladbrokes, Midnite, Skybet, Sportingbet, Stake, STS, Superbet, Unibet, Winamax and more β€” about 30 listings by default; with All bookmakers about 120 from the odds menus of ~55 countries (SNAI, Sisal, Eurobet, PMU, Tipsport, Stoiximan, Caliente, Betway Africa, Mozzartbet…), depending on the match. Brands that appear under several licences (Betano .br / .ca / .de / .dk, BetMGM .uk / .us…) are counted once in the consensus, so they cannot outvote the rest.

Use cases

  • Build and backtest football models β€” train on closing-line probabilities, the most efficient price the market produces, for 1X2, totals and handicaps
  • Closing Line Value (CLV) β€” compare the price you bet with the consensus close to measure whether you beat the market β€” or with Pinnacle's own closing line, the sharpest close, timestamped: Pinnacle Odds β€” closing lines history
  • Line movement and steam β€” find matches where the market moved sharply between open and close
  • Lower leagues and women's football β€” the markets where historical odds are hardest to find
  • Your own odds history β€” schedule the Actor daily and keep appending to a dataset; after a few weeks you own a multi-bookmaker history nobody sells for these competitions

How to use it

  1. Pick the days (up to 7 back and 7 ahead) and statuses. Optionally narrow it down by country or competition.
  2. Choose the markets and over/under lines.
  3. Click Start. 30 matches take under a minute; a full midweek day takes about a minute, a busy weekend day about 5.
  4. Download the results as JSON, CSV or Excel, or read them through the Apify API.

Tip β€” build a history automatically: create a Schedule that runs every morning with daysBack: 1, daysAhead: 0, statuses: ["finished"]. Each run adds yesterday's matches with their closing lines.

Running it every few minutes? Turn on Only new or changed matches (incremental: true). Finished, live and cancelled matches that were already delivered with the same score and status are skipped, so a schedule every 5–10 minutes returns (and charges for) only what is new β€” a repeat run with nothing new finishes in seconds. Upcoming matches come back (and are charged) only when a price, a line or the kick-off time changed since the last delivery β€” an unchanged fixture list costs nothing. A finished match seen without odds is looked at again for a few hours, in case the bookmakers' prices were just slow to load. The memory is kept in a key-value store named football-odds-incremental in your account; give it a different incrementalName to run several schedules side by side or to start fresh.

Ready-made examples

One click, preconfigured β€” open, press Start, adjust if you like:

Input example β€” recent matches

{
"daysBack": 1,
"daysAhead": 0,
"statuses": ["finished"],
"competitions": ["England: Premier League", "Spain: LaLiga", "Europe: Champions League"],
"markets": ["1x2", "overUnder", "btts", "asianHandicap"],
"overUnderLines": ["1.5", "2.5", "3.5"],
"includeStats": true,
"includeEvents": true
}

Input example β€” full seasons (history)

{
"mode": "seasons",
"leagues": ["England: Premier League", "Spain: LaLiga", "Germany: Bundesliga", "Italy: Serie A", "France: Ligue 1"],
"seasons": ["2024-2025", "2023-2024", "2022-2023"],
"markets": ["1x2", "overUnder", "btts", "asianHandicap"]
}

Seasons follow the league's own format: 2024-2025 for autumn–spring leagues, 2024 for calendar-year leagues (MLS, Brazil, Scandinavia). Leave seasons empty and set lastSeasons to get the current season plus the ones before it. A league can also be given as its Flashscore URL.

Country and competition names follow Flashscore: England, Spain, Europe (UEFA competitions), World (friendlies); England: Premier League, Germany: Bundesliga, Brazil: Serie A. Stages are matched automatically β€” Argentina: Liga Profesional also returns its Apertura and Clausura.

Output example (shortened)

{
"matchId": "KlfMo4PO",
"startTime": "2026-09-22T22:30:00Z",
"country": "Brazil",
"competition": "Serie B",
"homeTeam": "Criciuma",
"awayTeam": "Operario-PR",
"status": "finished",
"score": "0-2",
"halfTimeScore": "0-1",
"result": "A",
"consensus": {
"bookmakerCount": 41,
"books1x2": 35,
"probHomeOpening": 0.5242,
"probHomeLast": 0.4715,
"fairHomeOdds": 2.121,
"fairDrawOdds": 3.385,
"fairAwayOdds": 4.289,
"moveHomePts": -5.27,
"probOver25Last": 0.4079,
"probBttsYesLast": 0.4613,
"ahLine": -0.5,
"ahLineOpening": -0.75,
"margin1x2Pct": 7.76
},
"odds": {
"1x2": [{"bookmaker": "bet365", "opening1": 1.68, "openingX": 3.3, "opening2": 4.75, "last1": 1.96, "lastX": 3.2, "last2": 4.0, "marginPct": 7.27}],
"overUnder": [{"bookmaker": "bet365", "line": 2.5, "openingOver": 2.3, "openingUnder": 1.6, "lastOver": 2.3, "lastUnder": 1.6}],
"btts": [{"bookmaker": "bet365", "openingYes": 2.2, "openingNo": 1.62, "lastYes": 2.0, "lastNo": 1.73}],
"asianHandicap": [{"bookmaker": "bet365", "line": -0.5, "openingHome": 1.75, "openingAway": 2.05, "lastHome": 2.0, "lastAway": 1.8}]
},
"stats": {
"expectedGoals": {"home": 1.34, "away": 0.33},
"ballPossession": {"home": 67, "away": 33},
"totalShots": {"home": 26, "away": 5},
"passes": {"home": {"pct": 84, "successful": 413, "total": 489}, "away": {"pct": 67, "successful": 176, "total": 262}}
},
"events": [
{"period": "1st Half", "minute": 38, "side": "away", "type": "goal", "player": "Caio Dantas", "assist": "Mikael Doka", "scoreAfter": "0-1"},
{"period": "2nd Half", "minute": 90, "addedTime": 6, "side": "away", "type": "goal", "player": "Maxwell", "assist": "Boschilia", "scoreAfter": "0-2"}
]
}

Pricing

⚽ Launch period: free until 8 October 2026 β€” during it only Apify's platform usage is charged, typically well under $0.01 per 100 matches.

From 9 October 2026 you pay per match saved β€” platform usage included, nothing else:

Apify planPrice per 1,000 matches
Free$5.00
Starter$4.50
Scale$4.00
Business and higher$3.50

πŸ’‘ On Apify's free plan the monthly $5 platform credit covers about 1,000 matches β€” enough to try the data properly before paying anything.

Every match comes with the odds of all bookmakers and markets you selected, the consensus, the statistics and the events, at no extra cost. Nothing is charged for matches you filter out: Skip matches without odds is on by default, so you only pay for priced matches. Set a spending limit on the run if you want a hard cap β€” the Actor stops as soon as the limit is reached.

FAQ

What is the "closing line"? The last price before kick-off. For finished and live matches the last… fields are the closing odds; for scheduled matches they are the current prices.

Which result do the 1X2 odds settle on? 90 minutes plus stoppage time β€” that is the result field (H/D/A). Extra time and penalties are reported separately (extraTimeScore, penaltiesScore, winner).

How is the consensus calculated? For each bookmaker the margin is removed proportionally, then the median is taken across bookmaker brands. The median keeps one stale or mispriced book from skewing the result.

What is the Asian handicap main line? The line whose consensus is closest to 50/50. ahLine is the main line at the close, ahLineOpening at the open β€” a moved line is a strong market signal.

How far back can I go? In Recent matches mode 7 days back and 7 ahead. In Full seasons mode any season Flashscore lists β€” odds go back to the mid-2000s for major leagues (fewer bookmakers in older seasons, see the table above).

Can I poll it every few minutes without paying for the same matches again? Yes β€” turn on Only new or changed matches (incremental: true). Matches whose score and status did not change since an earlier run with the same settings are skipped, and only the new ones are charged.

Which time zone? All timestamps are UTC.

Is Pinnacle or Betfair Exchange included? No β€” the source does not list them. The consensus of 20–35 bookmaker brands is a solid reference, and the Actor reports the best available price as well. Pinnacle's own prices for soccer, and its closing line of every match since 22 Oct 2026: Pinnacle Odds Scraper.

Where does the data come from? From publicly available match and odds information shown on Flashscore. This Actor is not affiliated with Flashscore or any bookmaker.

More from Min Maxxxer

  • πŸ’Ά Transfermarkt Scraper β€” every player's market value and its history, contract, agent and injuries for any league or club
  • πŸ“ Pinnacle Odds Scraper β€” the sharpest line in betting: Pinnacle moneyline, spread, totals and team totals with no-vig fair odds and stake limits, 17 sports β€” plus Pinnacle's opening and closing line of every past game since October 2026 (closing lines history)
  • βš–οΈ Arbitrage & Value Bets Finder β€” surebets and +EV bets across 30+ bookmakers and 24 sports, with the stake for every leg
  • 🎾 Tennis Betting Odds & Results Scraper β€” every ATP, WTA, Challenger and ITF match: live scores, rankings, odds from 40+ bookmakers back to 2009
  • πŸ€ NBA, NFL, MLB & NHL Odds β€” moneyline, spread and total history back to 2009, DraftKings, FanDuel, BetMGM
  • πŸ“Š Polymarket & Kalshi Scraper β€” prediction market odds, price history and results in one table, full Kalshi archive since 2021
  • ⏱️ Flashscore Scraper: 24 Sports β€” live scores, results and odds of football, basketball, hockey, tennis, volleyball, handball, esports, MMA, cricket, darts and more

⭐ Did this Actor save you time? A short review on this page helps other bettors and analysts find it β€” and tells us what to build next.

Changelog

  • 0.6.3 β€” when the source's league search answers nothing at all (a few-minute outage at Flashscore, seen 28.10), a Full seasons run checks it with a test query, waits up to 2 minutes for the search to come back and, if it does not, says so in its final status instead of "League not found" β€” a misspelt league still gets its answer at once.

  • 0.6.2 β€” a Full seasons run stopped by Max matches says so in its final status, with how to get the whole selection (the form prefills 30 for a quick look at recent matches, and a season cut there looked complete).

  • 0.6 β€” All bookmakers: the odds menus of ~55 countries instead of 10 β€” about 120 listings for a top-league match instead of ~30 (Premier League 2024/25: 68 per match instead of 20), same price, off unless you switch it on; a league renamed by the source still found by its old name (Brazil's Serie A Betano is now Serie A); a league that cannot be found, or filters that match nothing, are named in the run's final status instead of a bare "0 matches saved"; the README now says from when each market has odds (over/under and Asian handicap from 2008/09, BTTS from 2013) and shows the check against football-data.co.uk.

  • 0.5 β€” fixes from a code review: the same filters in another order are the same incremental search; two overlapping runs no longer overwrite each other's memory; a corrected 90-minute score after extra time is delivered again; one match is saved once per run even when its league is listed twice (name and URL); a season typed with an en dash (2024–2025) is understood, and a season filter that cannot be read stops the run instead of falling back to the latest season; the consensus and best prices use prices still quoted (active on every row now β€” a pulled price keeps its old value and is no offer), the Asian handicap main line no longer depends on the order of a bookmaker's licences, and overUnderLines: all gives a consensus for every line offered; an awarded (administrative) score has no result; negative statistics such as goals prevented keep their sign; a season page that cannot be read is reported as incomplete.

  • 0.4 β€” fix: Only new or changed matches no longer charges upcoming matches whose odds did not move. Until now every upcoming match was saved and charged again on each scheduled run; now it comes back only when a price, a line or the kick-off time changes. A match refused by the spending limit is not remembered as delivered.

  • 0.3.9 β€” 3–6Γ— faster (a full Premier League season in about a minute): more parallel requests and 2 GB runs by default, at the same price; a response cut off mid-transfer is retried instead of skipping the match.

  • 0.3 β€” Incremental mode for schedules (only new or changed matches, repeat runs in seconds); faster JSON parsing; inputs above the limits are clamped with a warning instead of failing the run; one unreadable match or league no longer stops a run.

  • 0.2 β€” Full seasons mode: complete seasons of any league with opening/closing odds back to the mid-2000s; season and round fields; Asian handicap main line chosen by bookmaker vote (robust when only a few books quote a match).

  • 0.1 β€” first release (free launch period): 1,000+ competitions; opening/closing odds from up to 42 bookmakers for 1X2, over/under, both teams to score, Asian handicap and double chance; no-vig consensus with line movement; scores incl. extra time and penalties; xG statistics; goal and card events.

  • πŸ“‹ ESPN Scraper: Box Scores & Player Stats β€” every player's box score and every game's score from ESPN for NFL, NBA, MLB, NHL, WNBA, college sports and soccer, whole seasons included