Flashscore All In One Api avatar

Flashscore All In One Api

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Flashscore All In One Api

Flashscore All In One Api

Unofficial always-on REST API for live FlashScore sports data: live scores, full daily match lists, match detail, lineups, stats, odds, standings, results, news, and search — across football, tennis, and every other sport FlashScore covers. No account or API key needed.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Romy

Romy

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

What does FlashScore All-in-One API do?

FlashScore All-in-One API is a REST endpoint for live FlashScore sports data — live scores, full daily match lists, match detail, lineups, statistics, betting odds, standings, top scorers, tournament draws, results, fixtures, news, and search — across football, tennis, basketball, and every other sport FlashScore covers. All from a single always-on API powered by Apify Standby.

It talks directly to the same internal API the official FlashScore Android app uses, reverse-engineered by capturing and analyzing live traffic from the real app with Frida on a real device, then cross-checked field-by-field against the app's own screens and, where possible, its decompiled source. No FlashScore account, no API key — call the endpoint, get JSON back.

Why use FlashScore All-in-One API?

  • No signature, token, or session needed — confirmed live: a fixed x-fsign header is identical across every request, every sport, every session; replaying a captured URL with plain curl and no device involved returns the same live data
  • Enum parameters, not opaque numberssport and standings type take readable names (SOCCER, OVERALL, AWAY, ...) resolved from the app's own internal identifiers, not guessed
  • One call returns what a competitor's scraper charges per row forGET /matches returns an entire day's schedule (hundreds of matches) in a single request/charge
  • Always-on — Standby mode means no cold start, responds in milliseconds
  • No account needed — every endpoint works fully anonymously
  • Use cases: live scoreboards, sports news aggregation, betting-odds comparison, fantasy sports tools, standings/results dashboards

Endpoints

MethodPathDescription
GET/sportsList of sports with match/live counts
GET/matchesFull match list for one sport/day
GET/matches/liveLive-score delta feed for a whole sport
GET/matches/{id}Match detail (teams, league, round)
GET/matches/{id}/liveCheap live-score check for one match
GET/matches/{id}/oddsBetting odds
GET/matches/{id}/lineupsLineups
GET/matches/{id}/statsMatch statistics
GET/competitionsRaw country/competition tree
GET/leaguesNamed league list
GET/competitions/{tournamentStageId}/seasonsResolve a tournamentId
GET/competitions/{tournamentStageId}/resultsPast results, paginated
GET/competitions/{tournamentStageId}/fixturesUpcoming fixtures, paginated
GET/competitions/{tournamentId}/{tournamentStageId}/standingsPoints table
GET/competitions/{tournamentId}/{tournamentStageId}/topscorersTop scorers list
GET/competitions/{tournamentId}/{tournamentStageId}/drawKnockout tournament draw (bracket)
GET/newsNews list
GET/news/menuNews categories/tags
GET/news/{id}Single article
GET/searchSearch teams and players
GET/search/topDefault search suggestions

How to use FlashScore All-in-One API

  1. Open this Actor's Standby API URL (shown on the Actor's page, under the API tab).
  2. Call any endpoint — for example:
    curl "https://romy--flashscore-all-in-one-api.apify.actor/sports"
    curl "https://romy--flashscore-all-in-one-api.apify.actor/matches?sport=SOCCER"
    curl "https://romy--flashscore-all-in-one-api.apify.actor/matches/4GzyLE2N"
    curl "https://romy--flashscore-all-in-one-api.apify.actor/leagues?sport=SOCCER"
    curl "https://romy--flashscore-all-in-one-api.apify.actor/competitions/SY30SsKF/CfoA8Dmm/standings"
    curl "https://romy--flashscore-all-in-one-api.apify.actor/competitions/SY30SsKF/CfoA8Dmm/topscorers"
    curl "https://romy--flashscore-all-in-one-api.apify.actor/search?q=Barcelona"
    Every call needs your Apify API token, either as Authorization: Bearer <token> or ?token=<token> — the Actor's page API tab has a ready-to-copy version with your token filled in.
  3. Read the JSON response — no setup required.

Parameters

GET /matches, GET /matches/live, GET /leaguessport required: a name (case-insensitive) or numeric id.

NameNameName
SOCCERRUGBY_LEAGUEPESAPALLO
TENNISBADMINTONMOTORSPORT
BASKETBALLWATER_POLOAUTORACING
HOCKEYGOLFMOTORACING
AMERICAN_FOOTBALLFIELD_HOCKEYCYCLING
BASEBALLTABLE_TENNISHORSE_RACING
HANDBALLBEACH_SOCCERESPORTS
RUGBY_UNIONMMAWINTER_SPORTS
FLOORBALLNETBALLSKI_JUMPING
BANDYAUSSIE_RULESALPINE_SKIING
FUTSALBEACH_VOLLEYBALLCROSS_COUNTRY
VOLLEYBALLSNOOKERBIATHLON
CRICKETBOXINGKABADDI
DARTS

GET /matches also takes optional dateOffset (days from today: 0=today, negative=past, positive=future; valid range -7 to 7, omit for today).

GET /matches/{id}, GET /matches/{id}/live, GET /matches/{id}/lineups, GET /matches/{id}/stats — path param id required. Get one from /matches, /matches/live, or /search.

GET /matches/{id}/odds — path param id, plus bookmakerId, betType (e.g. HOME_DRAW_AWAY), and betScope (e.g. FULL_TIME) all required.

GET /competitions/{tournamentStageId}/seasons — path param tournamentStageId required. Resolves the tournamentId needed for standings/topscorers/draw. /leagues returns both ids directly, so this lookup is usually skippable.

GET /competitions/{tournamentStageId}/results and .../fixtures — path param tournamentStageId required; optional page (default 1). No total-count field — keep incrementing page until you get an empty or short result back.

GET /competitions/{tournamentId}/{tournamentStageId}/standings — both path params required; optional type, one of OVERALL (default), HOME, AWAY, FORM (case-insensitive name or numeric id).

GET /competitions/{tournamentId}/{tournamentStageId}/topscorers and .../draw — both path params required, no other params. draw returns an empty result for competitions without a knockout bracket (plain leagues).

GET /news — optional tagId, sourced from GET /news/menu's tag.id field (hundreds of tags exist — one per sport/tournament/topic — so it's a lookup, not a short list).

GET /news/{id} — path param id required. Get one from /news or /news/menu.

GET /searchq required; optional lang (numeric language id, default 5 = English) that changes the language of localized fields like team/sport names.

GET /search/top — optional lang, same as above. No query needed — returns the default popular suggestions.

Output

Every response is returned directly over HTTP — this Actor does not write to an Apify dataset. Real responses (trimmed for readability):

GET /leagues?sport=SOCCER (trimmed to Premier League):

{
"success": true,
"result": [
{
"name": "Premier League",
"region": "England",
"tournamentId": "SY30SsKF",
"stages": [{ "tournamentStageId": "CfoA8Dmm", "name": "Main", "order": 1 }]
}
]
}

GET /competitions/SY30SsKF/CfoA8Dmm/standings (trimmed to one row):

{
"success": true,
"result": [
{
"rank": 1,
"teamId": "2XrRecc3",
"teamName": "Brighton",
"teamLogo": "https://static.flashscore.com/res/image/data/40juIezB-b92lfEJC.png",
"played": 1,
"won": 1,
"goals": "4:0",
"points": 3,
"qualificationZone": "q1"
}
]
}

GET /competitions/SY30SsKF/CfoA8Dmm/topscorers (trimmed to one row):

{
"success": true,
"result": [
{
"rank": 1,
"playerId": "0IBtygvF",
"playerName": "Hinshelwood J.",
"playerPhoto": "https://static.flashscore.com/res/image/data/v72abmyS-I7W2p2mj.png",
"teamId": "2XrRecc3",
"teamName": "Brighton",
"teamShortCode": "BHA",
"goals": 2,
"assists": 0
}
]
}

GET /search?q=Barcelona (trimmed to key fields of the first result):

{
"success": true,
"result": [
{
"id": "SKbpVP5K",
"name": "Barcelona",
"type": { "id": 2, "name": "Team" },
"sport": { "id": 1, "name": "Football" },
"defaultCountry": { "id": 176, "name": "Spain" }
}
]
}

Data notes

  • The legacy pipe-delimited feed endpoints (/sports, /matches, /competitions, and a few others) return every field the upstream API sends, but only field names verified against the real rendered app screen are given clean names — everywhere else, the raw short codes (e.g. SA, EC) are returned as-is rather than guessed. /leagues, standings, and top scorers are fully field-mapped and cross-checked this way.
  • sport and standings type are resolved from the app's own internal enum identifiers, not inferred from guesswork — so the accepted values above are exact, and standings type deliberately has no 4 (there is no fourth variant upstream).
  • /matches/{id}/live is the cheap endpoint to poll for live score changes — it returns a small version-hash plus a compact summary, instead of the much larger full match detail /matches/{id} returns.
  • No WebSocket or Server-Sent Events exist upstream — the app itself works by polling lightweight delta feeds, which is exactly what /matches/live and /matches/{id}/live expose.
  • Images are served from https://static.flashscore.com/res/image/data/{path}. standings' teamLogo and topscorers' playerPhoto are already returned as full, ready-to-load URLs. Raw passthrough endpoints (match detail, lineups, search) still return bare path fragments under their own images/path fields — prefix those with the same base URL to get a loadable image.

Pricing

Pay-per-event, billed only on a successful call — one event per request, tiered by your Apify plan (Free/Bronze/Silver/Gold/Platinum/Diamond get progressively cheaper rates). See the Actor's Pricing tab for the exact current rate per tier.

EventWhat it charges for
sports-listSport list
matches-listFull match list for one sport/day
matches-live-updatesLive-score delta feed
match-detailFull match detail
match-liveCheap live-score check
match-oddsBetting odds
match-lineupsLineups
match-statsMatch statistics
competitions-listRaw competition tree
leagues-listNamed league list
competition-lookupSeason lookup, or a tournament draw
competition-resultsPast results
competition-fixturesUpcoming fixtures
standingsPoints table
top-scorersTop scorers list
news-listNews list, or the news category menu
articleSingle news article
searchTeam/player search, or the default search suggestions

Known limitations

  • Field names on the legacy pipe-feed endpoints are only mapped where verified against the real app — see Data notes above. Unmapped fields are still returned, just under their raw short codes.
  • lang's values beyond the default aren't individually documented — pass any id and compare results.
  • /competitions/{tournamentId}/{tournamentStageId}/draw returns an empty result for plain leagues — only knockout competitions have a bracket to draw.
  • This is an unofficial, reverse-engineered integration, not affiliated with or endorsed by FlashScore. Behavior may change if FlashScore changes its API.

Found a bug or have a feature request? Use the Issues tab on this Actor's page.