Flashscore Hockey Scraper - Live Scores, Periods & Stats avatar

Flashscore Hockey Scraper - Live Scores, Periods & Stats

Pricing

from $1.00 / 1,000 games

Go to Apify Store
Flashscore Hockey Scraper - Live Scores, Periods & Stats

Flashscore Hockey Scraper - Live Scores, Periods & Stats

Scrape ice hockey games from Flashscore: fixtures, live scores, final results, period-by-period scores, overtime and shootout outcomes, and match statistics. NHL, KHL, SHL and every domestic league. No proxy, no login.

Pricing

from $1.00 / 1,000 games

Rating

0.0

(0)

Developer

Nada Hanad

Nada Hanad

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Ice hockey results from Flashscore as clean JSON: fixtures, live scores, final results, the score in every period, and whether a game was settled in regulation, overtime or a shootout. NHL, KHL, SHL, Liiga and the leagues below them. No login, no API key and no proxy. $0.001 per game.

What data you get

  • Period-by-period scores that reconcile with the final score, asserted on every finished game in the tests.
  • How the game was decided. decidedBy is regulation, overtime or shootout, and regulation carries the score after three periods. This matters more than it sounds: a shootout win adds one goal to the published total that belongs to no period, so a naive sum is off by one on exactly those games. Anything you build on goal totals, from a model to a league table, needs that distinction.
  • Status from Flashscore's own stage codes, so a game in the second period reads as live, with stageDetail naming the stage such as SECOND_PERIOD or AFTER_PENALTIES.
  • Teams and competition with IDs, three-letter codes, logos and the Flashscore URL.
  • raw: all 47 original feed fields.

Output example

A game decided in a shootout. Note that the periods total 3-3 while the published score is 4-3:

{
"matchId": "GQSdbs3B",
"url": "https://www.flashscore.com/match/GQSdbs3B/",
"sport": "hockey",
"status": "finished",
"stage": "finished",
"stageDetail": "AFTER_PENALTIES",
"stageCode": 3,
"stageDetailCode": 11,
"startTime": "2026-09-04T16:30:00.000Z",
"lastUpdate": "2026-09-04T18:49:55.000Z",
"note": null,
"tournament": {
"name": "ELJ",
"fullName": "CZECH REPUBLIC: ELJ",
"country": "Czech Republic",
"phase": null,
"id": "tKYKpUho",
"stageId": "jNPXsCBq",
"path": "/hockey/czech-republic/elj/",
"url": "https://www.flashscore.com/hockey/czech-republic/elj/"
},
"home": {
"name": "Poruba U20",
"fullName": "Poruba U20",
"id": "nufW9uwp",
"slug": "poruba",
"url": "https://www.flashscore.com/team/poruba/nufW9uwp/",
"code": "POR",
"image": "https://static.flashscore.com/res/image/data/lUNc497k-8M2BM1rJ.png"
},
"away": {
"name": "Kladno U20",
"fullName": "Kladno U20",
"id": "Khhv8J7d",
"slug": "kladno",
"url": "https://www.flashscore.com/team/kladno/Khhv8J7d/",
"code": "KLA",
"image": "https://static.flashscore.com/res/image/data/bFkieS7k-GvfgbSG9.png"
},
"score": {
"home": 4,
"away": 3,
"periods": [
{
"period": "P1",
"home": 0,
"away": 0
},
{
"period": "P2",
"home": 1,
"away": 3
},
{
"period": "P3",
"home": 2,
"away": 0
},
{
"period": "OT",
"home": 0,
"away": 0
}
],
"regulation": {
"home": 3,
"away": 3
},
"decidedBy": "shootout"
},
"winner": "home",
"inPlay": false,
"ok": true,
"dayOffset": -1,
"scrapedAt": "2026-09-05T19:25:33.348Z"
}

Input

FieldTypeDefaultDescription
modestringmatchesmatches for fixtures, live scores and results; matchDetails for period scores, statistics and head to head.
daysarray["0"]Day offsets from today, from -7 to 7. A North American evening game lands on the following UTC day.
statusarrayallscheduled, live, finished, postponed, cancelled or interrupted.
countriesarrayallFor example USA, Canada, Sweden, Finland, Russia.
tournamentFilterstringCase-insensitive regular expression on the competition name, e.g. nhl.
matchIdsarrayDetails mode: match IDs or full flashscore.com/match/... URLs.
detailsarrayall threeDetails mode: summary, statistics, h2h.
maxItemsinteger0Stop after this many rows; 0 means no limit.
maxConcurrencyinteger5Parallel requests in details mode.
timeoutSecsinteger30Per-request timeout.
proxyConfigurationobjectoffOptional. Not needed in normal use.

Pricing

$0.001 per game, and $0.01 per game in details mode however many sections you request. Games that fail or have no data are free.

Use cases

  • Modelling: period-level scoring rates, and overtime and shootout frequency, with the shootout goal kept out of the run of play where it belongs.
  • Live scoreboards and bots: poll for in-progress scores and push updates.
  • Fantasy and prediction games: fixtures in, results out, including the games that go past regulation.
  • Media: daily digests with the period breakdown.
  • AI agents: a tool that answers "which games went to overtime last night".

Integrations

curl -X POST "https://api.apify.com/v2/acts/clearfetch~flashscore-hockey-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"days": ["-1"], "countries": ["USA", "Canada"]}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("clearfetch/flashscore-hockey-scraper").call(run_input={"days": ["-1"]})
for game in client.dataset(run["defaultDatasetId"]).iterate_items():
periods = " ".join(f'{p["period"]} {p["home"]}-{p["away"]}' for p in game["score"]["periods"] or [])
print(game["home"]["name"], game["score"]["home"], "-", game["score"]["away"],
game["away"]["name"], f'({game["score"]["decidedBy"]})', periods)

Works with the Apify integrations for n8n, Make, Zapier, Google Sheets, Slack and webhooks, with scheduled runs, and with AI agents through the Apify MCP server.

FAQ

Why do the periods not add up on some games? Because it went to a shootout, and the winner's published total includes the shootout point, which belongs to no period. decidedBy tells you which games those are, and the tests assert the difference is exactly one goal.

Do I need a proxy? No. A proxy input exists for completeness.

Is this legal? It reads the same public endpoints a browser reads, with no login and no personal data. Scores are facts. What you do with the data, including redistribution, is your responsibility.

Changelog

  • 1.0.0 (2026-09) — first release: games mode with day ranges and filters, period scores with regulation and overtime separated, shootout outcomes identified, details mode with statistics and head to head.