Snooker Scraper & API: Live Scores and Results from Flashscore avatar

Snooker Scraper & API: Live Scores and Results from Flashscore

Under maintenance

Pricing

from $8.00 / 1,000 match results

Go to Apify Store
Snooker Scraper & API: Live Scores and Results from Flashscore

Snooker Scraper & API: Live Scores and Results from Flashscore

Under maintenance

Snooker live scores, results and fixtures from Flashscore for betting models and score apps, covering World Snooker Tour events: tournament, players, frames won, best-of format, live frame, status, UTC start time. No login, no API key, no proxy. JSON, CSV, Excel or API.

Pricing

from $8.00 / 1,000 match results

Rating

0.0

(0)

Developer

Michal Pšenčík

Michal Pšenčík

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

What does Flashscore Snooker Scraper do?

This Actor scrapes snooker live scores, finished results and upcoming fixtures from Flashscore and returns them as clean JSON, CSV or Excel. For every match you get the tournament, both players, the match status, the frames won by each side, the best-of format the match is played over (e.g. best of 19 frames), the frame currently being played on live matches, the exact start time in UTC, Flashscore's match id and a link to the match page.

It covers whatever Flashscore lists for snooker, which means the World Snooker Tour ranking events and their qualifying rounds. No login, no API key and no proxy needed. Use it from the Apify Console, on a schedule, or as a snooker live score API from your own code, Make, Zapier, n8n or an AI agent through the Apify MCP server.

Try it from the Input tab: leave everything at its default and hit Start to get yesterday's results, today's matches and tomorrow's fixtures.

What snooker data can you get?

FieldExample
tournamentCHINA: Shenzhen Open
homeYuan S.
awayWu Y.
statusfinished, live, scheduled or other
statusTextFinished, Live Frame 7, Delayed, ...
homeFrames5
awayFrames10
bestOfFrames19
startTime2026-10-04T11:30:00.000Z
matchIdAoTMYqjC
matchUrllink to the match on flashscore.com

The full field list is under Output.

Why use Flashscore Snooker Scraper?

  • Snooker betting and odds models. The frame score plus the best-of format gives frames remaining, match situation and in-play state, which a plain win/loss feed cannot. Results and fixtures come back in one run.
  • Live score apps, dashboards and bots. Run it on a schedule with status: live to drive a scoreboard, a Telegram or Discord bot, or an internal alert. Live rows carry the running frame score and the frame being played.
  • Sports media and stats sites. Fill fixture pages and result tables for ranking events such as the British Open and the Shenzhen Open, including the early rounds, all from one run.
  • Player and tournament history. Every item carries a stable matchId, so daily runs stitch into a results history you can group per player or per tournament.
  • A cheap alternative to a snooker data API contract. You pay per match returned, with no subscription.

How to use Flashscore Snooker Scraper

  1. Click Try for free (or open the Actor in Apify Console).
  2. On the Input tab, set Days to the day offsets you want. The default [-1, 0, 1] is yesterday through tomorrow; [0] is today only.
  3. Pick a Match status if you only want live, finished or scheduled matches. The default returns all of them.
  4. Set Maximum results if you want to cap the run. The default is 500 matches.
  5. Click Start. A run usually finishes in well under a minute.
  6. Open the Output tab and export as JSON, CSV, Excel or HTML, or pull the dataset through the Apify API.

To keep the data fresh, use Schedules in Apify Console: every few minutes for live scores, or once a morning for yesterday's results and today's fixtures.

Input

All fields are optional; the defaults return yesterday, today and tomorrow.

FieldTypeDefaultDescription
daysarray[-1, 0, 1]Day offsets from today. 0 today, -1 yesterday, 1 tomorrow. Accepted range is -7 to 7.
statusstringallOne of all, live, finished, scheduled. all also includes postponed and cancelled matches.
maxItemsinteger500Stop after this many matches. 0 means no limit.
proxyConfigurationobjectApify proxy disabledOptional. Flashscore serves these pages without an anti-bot challenge, so no proxy is needed.

The default window is three days because the snooker calendar has gaps: between tournaments a single day can hold no matches at all.

A whole week of results, to backfill a database:

{
"days": [-7, -6, -5, -4, -3, -2, -1],
"status": "finished",
"maxItems": 0
}

Only the matches being played right now, for a live scoreboard:

{
"days": [0],
"status": "live",
"maxItems": 50
}

Output

Each match is one dataset item. These are real records from runs on 3 September and 5 October 2026.

A finished match:

{
"matchId": "AoTMYqjC",
"sport": "snooker",
"tournament": "CHINA: Shenzhen Open",
"startTime": "2026-10-04T11:30:00.000Z",
"status": "finished",
"statusText": "Finished",
"home": "Yuan S.",
"away": "Wu Y.",
"homeFrames": 5,
"awayFrames": 10,
"bestOfFrames": 19,
"matchUrl": "https://www.flashscore.com/match/snooker/sijun-yuan-QHLlxVX0/yize-wu-vJEMCABl/?mid=AoTMYqjC",
"scrapedAt": "2026-10-05T09:07:46.076Z"
}

A live match carries the running frame score and the frame being played:

{
"matchId": "AsspqOhc",
"sport": "snooker",
"tournament": "UNITED KINGDOM: British Open",
"startTime": "2026-09-03T12:00:00.000Z",
"status": "live",
"statusText": "Live Frame 7",
"home": "Higgins J.",
"away": "Thirapongpaiboon T.",
"homeFrames": 3,
"awayFrames": 3,
"bestOfFrames": 7,
"matchUrl": "https://www.flashscore.com/match/snooker/higgins-john-SEI1iLWm/thirapongpaiboon-thanawat-nyR2uVsi/?mid=AsspqOhc",
"scrapedAt": "2026-09-03T14:44:25.247Z"
}

A scheduled match has empty frame counts, but the best-of format is already known:

{
"matchId": "Y9HfPvrJ",
"sport": "snooker",
"tournament": "UNITED KINGDOM: British Open",
"startTime": "2026-09-03T18:00:00.000Z",
"status": "scheduled",
"statusText": "",
"home": "Boiko I.",
"away": "Selby M.",
"homeFrames": null,
"awayFrames": null,
"bestOfFrames": 7,
"matchUrl": "https://www.flashscore.com/match/snooker/boiko-iulian-W20gkEIg/selby-mark-61B1YwrO/?mid=Y9HfPvrJ",
"scrapedAt": "2026-09-03T14:44:25.247Z"
}

A delayed or postponed match lands in status: other, with Flashscore's label in statusText (here Delayed).

Data fields

FieldTypeDescription
matchIdstringFlashscore's match id. Stable across days and reruns, so use it as your primary key.
sportstringAlways snooker.
tournamentstringCategory and competition, e.g. UNITED KINGDOM: British Open.
startTimestring | nullScheduled start, ISO 8601 in UTC.
statusstringscheduled, live, finished, or other for delayed, postponed and cancelled matches.
statusTextstringFlashscore's own stage label, e.g. Finished, Live Frame 7, Delayed. Empty when scheduled.
homestringHome player.
awaystringAway player.
homeFramesnumber | nullFrames won by the home player. Empty before the match starts.
awayFramesnumber | nullFrames won by the away player.
bestOfFramesnumber | nullThe match format: 7 means best of 7 frames. Published before the match starts too.
matchUrlstring | nullLink to the match page on Flashscore.
scrapedAtstringWhen this run read the page, ISO 8601 in UTC.

How much does it cost to scrape Flashscore snooker data?

This Actor uses pay per event pricing: $0.008 per match returned ($8 per 1,000 matches), plus $0.005 per run start. Platform usage is included, so those two numbers are the whole bill.

RunMatchesCost
One day of a ranking event (British Open, 2 Sep 2026)19$0.16
Three days during the British Open (2-4 Sep 2026)32$0.26
Three days between tournaments (4-6 Oct 2026)1$0.01
A live-only check when nothing is being played0$0.005

The Apify free plan comes with $5 of monthly platform credit, which covers a daily run for a long time. To cap spending, set maxItems or a maximum cost per run in the run options.

Use it as an API or from an AI agent

Run the Actor and get the matches back in one HTTP call:

curl -X POST "https://api.apify.com/v2/acts/thatmike1~flashscore-snooker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"days": [0], "status": "live", "maxItems": 50}'

Or from Python with the official client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("thatmike1/flashscore-snooker").call(run_input={"days": [-1, 0], "status": "finished"})
for match in client.dataset(run["defaultDatasetId"]).iterate_items():
print(match["tournament"], match["home"], match["homeFrames"], "-", match["awayFrames"], match["away"])

AI agents (MCP). Add https://mcp.apify.com/?actors=thatmike1/flashscore-snooker to Claude, Cursor or any MCP client to let the agent fetch snooker results on demand. Results also flow into Google Sheets, Make, Zapier, n8n, Slack and webhooks through Apify integrations.

Tips and advanced options

  • Cut the bill on live runs. Set status: live and a small maxItems. You are only charged for matches that are actually pushed, so a quiet moment costs one actor start.
  • One run covers many days. days switches days inside a single browser session, so [-3, -2, -1, 0] costs one actor start, not four.
  • Deduplicate across runs. matchId is stable, so upsert on it rather than appending. A match scraped while live and again after it finished keeps the same id.
  • Filter by competition on your side. Every item carries tournament, so keep only the events you follow.
  • Order is Flashscore's order. Items come back grouped by tournament in the order the site lists them, not sorted by start time. Sort on startTime if you need chronological output.

FAQ, disclaimers and support

Which snooker competitions are covered? Whatever Flashscore lists in its snooker day list. Test runs in September and October 2026 returned the British Open and the Shenzhen Open, early rounds included. Majors such as the UK Championship, the Masters and the World Championship at the Crucible show up the same way when they are on.

Why did a run return no matches? Snooker is not played every day. Between tournaments Flashscore's snooker list can be empty for several days in a row, and a run over only empty days returns nothing and costs one actor start. Widen days to reach the last or the next tournament.

Does it return the points in each frame, breaks or century counts? No. Those live on Flashscore's match detail page, not on the day list this Actor reads. Open an issue if you need them.

Does this Actor need a Flashscore login or API key? No. It reads public pages, with no login and no account of any kind.

Is scraping Flashscore legal? This Actor reads only publicly available pages and collects match facts (players, scores, times), not personal data. Scraping publicly accessible information is generally legal in the EU and the US, but you are responsible for how you use the output, including Flashscore's Terms of Service and any database rights that apply where you operate. Talk to a lawyer if you plan to redistribute the data commercially.

Do I need a proxy? No. Flashscore does not challenge these pages and every test run went direct. Turn on Apify Proxy only if you run it very often from one address.

Found a bug, or need something else? Open an issue on the Issues tab of this Actor. If you need a custom version, another sport, or a field that is not covered here, say so in the issue.