Snooker Scraper & API: Live Scores and Results from Flashscore
Under maintenancePricing
from $8.00 / 1,000 match results
Snooker Scraper & API: Live Scores and Results from Flashscore
Under maintenanceSnooker 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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
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?
| Field | Example |
|---|---|
tournament | CHINA: Shenzhen Open |
home | Yuan S. |
away | Wu Y. |
status | finished, live, scheduled or other |
statusText | Finished, Live Frame 7, Delayed, ... |
homeFrames | 5 |
awayFrames | 10 |
bestOfFrames | 19 |
startTime | 2026-10-04T11:30:00.000Z |
matchId | AoTMYqjC |
matchUrl | link 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: liveto 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
- Click Try for free (or open the Actor in Apify Console).
- 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. - Pick a Match status if you only want live, finished or scheduled matches. The default returns all of them.
- Set Maximum results if you want to cap the run. The default is 500 matches.
- Click Start. A run usually finishes in well under a minute.
- 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.
| Field | Type | Default | Description |
|---|---|---|---|
days | array | [-1, 0, 1] | Day offsets from today. 0 today, -1 yesterday, 1 tomorrow. Accepted range is -7 to 7. |
status | string | all | One of all, live, finished, scheduled. all also includes postponed and cancelled matches. |
maxItems | integer | 500 | Stop after this many matches. 0 means no limit. |
proxyConfiguration | object | Apify proxy disabled | Optional. 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
| Field | Type | Description |
|---|---|---|
matchId | string | Flashscore's match id. Stable across days and reruns, so use it as your primary key. |
sport | string | Always snooker. |
tournament | string | Category and competition, e.g. UNITED KINGDOM: British Open. |
startTime | string | null | Scheduled start, ISO 8601 in UTC. |
status | string | scheduled, live, finished, or other for delayed, postponed and cancelled matches. |
statusText | string | Flashscore's own stage label, e.g. Finished, Live Frame 7, Delayed. Empty when scheduled. |
home | string | Home player. |
away | string | Away player. |
homeFrames | number | null | Frames won by the home player. Empty before the match starts. |
awayFrames | number | null | Frames won by the away player. |
bestOfFrames | number | null | The match format: 7 means best of 7 frames. Published before the match starts too. |
matchUrl | string | null | Link to the match page on Flashscore. |
scrapedAt | string | When 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.
| Run | Matches | Cost |
|---|---|---|
| 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 played | 0 | $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 ApifyClientclient = 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: liveand a smallmaxItems. You are only charged for matches that are actually pushed, so a quiet moment costs one actor start. - One run covers many days.
daysswitches days inside a single browser session, so[-3, -2, -1, 0]costs one actor start, not four. - Deduplicate across runs.
matchIdis 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
startTimeif 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.
Related Actors
- Flashscore Darts Scraper: the same output for darts, with legs won and the best-of format.
- Flashscore Table Tennis Scraper: the same for table tennis, with the points of every set.
- Sports Odds Scraper: pre-match betting odds bookmaker by bookmaker for football, tennis, basketball and four more sports.