FotMob Scraper - Live Scores, xG, Ratings & Standings avatar

FotMob Scraper - Live Scores, xG, Ratings & Standings

Pricing

from $2.00 / 1,000 match (fixtures / live / result)s

Go to Apify Store
FotMob Scraper - Live Scores, xG, Ratings & Standings

FotMob Scraper - Live Scores, xG, Ratings & Standings

Scrape FotMob football data in one Actor: fixtures, live scores, league standings, match details with lineups/xG/player ratings, team squads, player profiles, transfers, and search. HTTP JSON API alternative — Python, Node.js, MCP.

Pricing

from $2.00 / 1,000 match (fixtures / live / result)s

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Unofficial community Actor. Not affiliated with FotMob.

FotMob scraper and FotMob API alternative for football fixtures, live scores, league standings, match details (lineups, xG, player ratings), team squads, player profiles, transfers, and search — in one Actor. Pull structured JSON with Python, Node.js, cURL, or MCP. Optional locale=de for German URLs and Accept-Language.

Sports data suite

ActorRole
FotMob Scraper ◄── you are hereFootball scores, xG, ratings, standings, transfers
PrizePicks Player Props ScraperUS DFS pick'em lines
Underdog Fantasy Player PropsUnderdog props & odds
DFS Multi-Source Props ScraperCross-platform props board

Suite next step: after FotMob match ratings / xG, run PrizePicks Player Props Scraper or DFS Multi-Source Props Scraper to join player form with live pick'em lines.

When to use

  • Pull today's fixtures, live scores, and final results across all competitions in one run
  • Export Bundesliga / Premier League standings, season fixtures, and top scorers
  • Deep-dive a match: lineups, events, team stats (xG), per-player ratings
  • Load team squads or player profiles by FotMob id / URL
  • Track the transfers feed or search teams and players by name
  • Chain date matches → match details with enrichMatchDetails (no glue Actors)

When not to use: deep market-value / transfer-fee history — this Actor focuses on FotMob scores, ratings, and match analytics.

Key features

  • Eight modesmatches, leagues, league, match, team, player, transfers, search (+ auto)
  • One Actor vs fragmented suites — directory → standings → match details without hopping listings
  • Enrich toggleenrichMatchDetails expands fixtures into full detail records in the same run
  • xG & ratings — team stats and per-player ratings when FotMob publishes them
  • Localeen or de (German site paths / language headers; same global ids)
  • HTTP-firstcurl_cffi Chrome TLS against FotMob /api/data/*; browser not required
  • Failed lookups not written — only successful records land in the dataset

Input

FieldDescription
modeauto / matches / leagues / league / match / team / player / transfers / search
dates / dateFrom / dateToDay buckets for matches (YYYYMMDD)
timezoneDay timezone (e.g. Europe/Berlin)
matchStatusall / finished / live / upcoming
leagueIds / leagueUrlsCompetitions (filter or league mode targets)
seasonsOptional season strings (2025/2026)
matchIds / matchUrlsMatch detail targets
teamIds / teamUrlsTeam profile targets
playerIds / playerUrlsPlayer profile targets
searchQueriesSearch mode terms
transferPagesPages for transfers mode
enrichMatchDetailsAlso fetch match details in matches/league modes
include* togglesStandings, fixtures, lineups, xG stats, shotmap, raw…
localeen or de
maxItemsCap (0 = unlimited)
proxyConfigurationOptional Apify Proxy

Example — today's matches (Berlin timezone)

{
"mode": "matches",
"timezone": "Europe/Berlin",
"matchStatus": "all",
"locale": "de",
"maxItems": 200
}

Example — Bundesliga standings + fixtures

{
"mode": "league",
"leagueIds": ["54"],
"includeStandings": true,
"includeFixtures": true,
"includeTopPlayers": true
}

Example — match details (lineups, xG, ratings)

{
"mode": "match",
"matchIds": ["4506324"],
"includeLineups": true,
"includeTeamStats": true,
"includePlayerStats": true,
"includeEvents": true
}

Example — team squad

{
"mode": "team",
"teamIds": ["9825"],
"includeSquad": true,
"includeFixtures": true
}

Example — transfers feed

{
"mode": "transfers",
"transferPages": 2,
"maxItems": 100
}

Example — search teams / players

{
"mode": "search",
"searchQueries": ["Bayern", "Haaland"],
"maxItems": 50
}

Output

Every dataset item has recordType, source, and scrapedAt. Main shapes:

recordTypeHighlights
matchmatchId, teams, score, status, utcTime, leagueId, matchUrl
leagueDirleagueId, name, category, ccode, leagueUrl
leaguestandings, fixtures, matchIds, top players, season
matchDetaillineups, events, teamStats (xG…), playerStats, venue, H2H
teamsquad, fixtures, standings slice
playerbio, primary team, position, recent matches, career
transferplayer, from/to clubs, fee fields, date
searchHittyped suggest/search hits with ids

Example — match row

{
"recordType": "match",
"matchId": 5903801,
"leagueId": 54,
"leagueName": "Bundesliga",
"ccode": "GER",
"utcTime": "2026-08-04T17:00:00.000Z",
"started": false,
"finished": false,
"homeTeam": { "id": 9823, "name": "Bayern München", "score": null },
"awayTeam": { "id": 9788, "name": "Borussia Dortmund", "score": null },
"matchUrl": "https://www.fotmob.com/de/match/5903801",
"date": "20260804",
"source": "fotmob-scraper",
"scrapedAt": "2026-08-04T16:00:00Z"
}

Use cases

  • Daily football data pipeline: schedule matches → optional enrichMatchDetails
  • Prediction / model features: xG, ratings, lineups from match mode
  • Fantasy / tipster research: upcoming fixtures + team form tables
  • CMS scoreboards: finished results for a date range as CSV/JSON
  • ID discovery: leagues or search to resolve FotMob ids for downstream runs

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/fotmob-scraper').call({
mode: 'matches',
timezone: 'Europe/Berlin',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_TOKEN")
run = client.actor("crawloop/fotmob-scraper").call(run_input={
"mode": "league",
"leagueIds": ["54"],
"includeStandings": True,
"includeFixtures": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("name"), len(item.get("standings") or []))

cURL

curl -s -X POST "https://api.apify.com/v2/acts/crawloop~fotmob-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"match","matchIds":["4506324"],"includePlayerStats":true,"includeTeamStats":true}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name (crawloop/fotmob-scraper).

Example prompts:

  • "Run FotMob Scraper for today's matches in Europe/Berlin and return finished games as JSON"
  • "Scrape Bundesliga league id 54 standings and top scorers with FotMob Scraper"
  • "Get FotMob match details for match id 4506324 with lineups and xG, then summarize player ratings"

FAQ

Do I need a FotMob account?
No. The Actor uses public JSON endpoints — no login required.

Is German /de a different dataset?
No — locale only affects language headers and URL prefix. Competition and match ids are global.

How do I find league or match ids?
Run mode=leagues or mode=search, or start from mode=matches and read matchId / leagueId on each row.

Can I get historical seasons?
Yes — mode=league with seasons like 2024/2025 when FotMob lists that season under availableSeasons.

What about transfers vs Transfermarkt?
This Actor exposes FotMob's transfers feed (recent moves). Deep fee histories belong in a Transfermarkt-focused tool.

Can I use this as a FotMob API alternative in production?
Yes for scheduled pipelines and exports (JSON/CSV). Respect fair use and FotMob terms; endpoints can change.