FlashScore Live Scores Scraper
Pricing
from $6.20 / 1,000 match records
FlashScore Live Scores Scraper
Fetch a sport's full match list for any day, live-score deltas, or per-match detail bundles by match id β no login or API key needed. Talks directly to FlashScore's internal app API via reverse-engineered live capture. The live-scores slice of romy/flashscore-all-in-one-api, covering 39 sports.
Pricing
from $6.20 / 1,000 match records
Rating
0.0
(0)
Developer
Romy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Share
What does FlashScore Live Scores Scraper do?
FlashScore Live Scores Scraper fetches a sport's full match list for a given day, its lightweight live-score delta feed, and/or rich per-match detail + live-hash snapshots for specific match ids β one dataset row per match/record, no API key needed.
It talks directly to the same internal feed/GraphQL API the official FlashScore Android app uses, reverse-engineered by live MITM capture against a real device (Frida SSL-pinning bypass, ~960 requests across three separate exploration sessions) and cross-checked against the app's own decompiled source (Jadx). This is the live-scores/match-list slice of FlashScore All-in-One API, split out as its own focused Actor β odds, lineups, stats, standings, news, search, and competitions are separate spin-off Actors.
Why use FlashScore Live Scores Scraper?
- No auth, no API key β the app's own static headers (
x-fsignetc.) are the same on every request, confirmed identical across every endpoint and sport in every capture session - Full day's match list in one call β every match for a sport on one day, across all competitions, in a single response
- Cheap live polling β
live: truehits the same lightweight delta feed the app itself polls repeatedly, instead of re-fetching the full match list - Per-match detail bundle β for any match id, get GraphQL detail (participants, league, round, settings), the cache-invalidation version hash, and the legacy summary feed in one row
- Global coverage β 39 confirmed sports, from soccer and tennis to darts and kabaddi
- Use cases: live-score dashboards, sports data pipelines, odds/results monitoring, match research tools
Input
| Field | Type | Description |
|---|---|---|
sport | string | Sport name (case-insensitive, e.g. SOCCER) or numeric id. Required unless matchIds or includeSportsList is set. |
dateOffset | integer | Days from today: 0=today, negative=past, positive=future. Confirmed live range -7 to 7. Ignored when live is true. Default 0. |
live | boolean | If true, fetch the lightweight live-score delta feed for the sport instead of the full day's match list. Default false. |
matchIds | string[] | For each match id, fetches detail + version hash + summary in parallel and pushes one row per id. Independent of sport/live/dateOffset. |
includeSportsList | boolean | If true, also fetch the full sport list (with match/live counts) and push each sport record as its own row. Default false. |
At least one of sport, matchIds, includeSportsList must be given.
sport accepts any of: SOCCER, TENNIS, BASKETBALL, HOCKEY, AMERICAN_FOOTBALL, BASEBALL, HANDBALL, RUGBY_UNION, FLOORBALL, BANDY, FUTSAL, VOLLEYBALL, CRICKET, DARTS, SNOOKER, BOXING, BEACH_VOLLEYBALL, AUSSIE_RULES, RUGBY_LEAGUE, BADMINTON, WATER_POLO, GOLF, FIELD_HOCKEY, TABLE_TENNIS, BEACH_SOCCER, MMA, NETBALL, PESAPALLO, MOTORSPORT, AUTORACING, MOTORACING, CYCLING, HORSE_RACING, ESPORTS, WINTER_SPORTS, SKI_JUMPING, ALPINE_SKIING, CROSS_COUNTRY, BIATHLON, KABADDI (these are the app's own internal constant names, decompiled from its enum β not localized display text).
Example:
{"sport": "SOCCER","dateOffset": 0}
Output
One dataset row per match record when using sport/live (raw pipe-feed fields, tagged with type: "match" β field names are FlashScore's own short codes, e.g. AE/AF = home/away team name, AG/AH = home/away score; some rows are league/section headers rather than individual matches). Real example, live-tested (Belgian Challenger Pro League, 2026-08-31):
{"type": "match","AA": "CKQq04lL","AD": "1788110100","AE": "Seraing","AF": "K. Lierse S.K.","AG": "1","AH": "1","AW": "1"}
One row per id when using matchIds, real example (4GzyLE2N, Newcastle vs West Brom, EFL Cup):
{"matchId": "4GzyLE2N","detail": {"data": {"findEventById": {"id": "4GzyLE2N","sportId": 1,"leagueNames": { "nameA": "England", "nameC": "EFL Cup" },"eventParticipants": [{ "name": "Newcastle", "type": { "side": "HOME" } },{ "name": "West Brom", "type": { "side": "AWAY" } }]}}},"versionHash": [],"summary": [{ "EA": "Newcastle", "EB": "West Brom", "EE": "England: EFL Cup" }]}
Known limitations
- The legacy pipe-feed endpoints (
sport/livemode) return raw short field codes; only a subset (EA/EB,EE/EF,EG,EH) were individually cross-checked against the rendered UI β score/status fields (DS/DE/DF/DG/DH/DI,DA/DZ) are best-effort, not confirmed. matchIdsversionHashcan be empty for a match that has no cache-invalidation hash currently published (e.g. finished/off-cycle matches) β that's expected, not an error.- Odds, lineups, stats, standings, news, search, and competitions are not covered here β use FlashScore All-in-One API or its other spin-off Actors.
Pricing
Pay per event, billed as match β one charge per match/live-update row pushed to the dataset
(sport list rows, match listings, live updates, and match-detail lookups all count as one match
event each). FREE-tier price: $0.008 per match event. See the Actor's Pricing tab for current
tiered rates.