FotMob Leagues List Scraper
Pricing
from $2.00 / 1,000 league results
FotMob Leagues List Scraper
Get the full FotMob directory of football leagues and competitions worldwide — popular, international, and every country's domestic leagues — one clean record per league with its FotMob id, name, country and URL. Discover league ids for the FotMob League and Match scrapers. Failures never billed.
Pricing
from $2.00 / 1,000 league results
Rating
0.0
(0)
Developer
Elena Vance
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
FotMob Leagues List Scraper — Every Football League & Competition ID, in One Run
Turn FotMob's entire competition directory into clean, structured JSON or CSV:
the FotMob leagueId, name, localized name, country, category, and the league
page URL — one tidy record per league. Popular leagues, international
tournaments, and every country's domestic divisions, all flattened into a single
dataset.
This is the discovery Actor of the FotMob family. One signed request returns
roughly 550 leagues, and the leagueIds it emits are exactly what you feed
into the FotMob League Scraper (for seasons, tables, fixtures) and, through
that, the FotMob Match Details Scraper. No login, no account, no HTML
wrangling — and you are never billed for failed requests.
Good to know: this Actor works globally — there is no geo-restriction. It runs through Apify Proxy, and datacenter proxy (the default) is enough — just keep the proxy enabled. A full run is one HTTP request, so it is fast and cheap.
Why this Actor
- The whole league map in one call. A single signed
allLeaguesrequest to FotMob returns every competition it tracks — no pagination, no crawling, no per-country fan-out. One run = the complete directory. - The seed for the rest of your pipeline. Each record carries the stable
leagueIdthat the FotMob League Scraper and FotMob Match Details Scraper take as input. Run this first, then drive everything else off the ids it produces. - Three buckets, one flat schema. Popular leagues, international tournaments,
and per-country domestic leagues are merged into one consistent record shape,
each tagged with a
categoryso you can split them back apart in one filter. - Filter to what you need. Pull everything by default, or restrict to a single category, or list FIFA country codes to get only those countries' domestic leagues.
- Ready-to-use links. Every record includes both the relative
pageUrland a fully-formed absoluteleagueUrl(https://www.fotmob.com/...) — click through or build deep links straight from the dataset. - You never pay for failures. If the directory request fails, it is reported in the run summary — not written to your dataset and not billed.
- Fast and lightweight. One request, hundreds of records, minimal compute.
- Clean, consistent output.
leagueIdas an integer, ISO 8601 timestamps, whitespace-normalized names, JSON-safe values throughout.
Problems this Actor solves
| If you are… | Your problem | How this Actor solves it |
|---|---|---|
| Building a football-data pipeline | The other FotMob scrapers need leagueIds, and there is no clean master list | Run this first; feed its leagueIds into the FotMob League Scraper and Match Details Scraper |
| A data analyst / researcher | You need a complete, normalized reference table of competitions to join against | One dated record per league — export straight to pandas, Sheets, or BI |
| An app / chatbot / agent developer | You want a competition picker or autocomplete without maintaining a hardcoded list | Pull the live directory on a schedule; a stable, normalized schema you can rely on |
| A betting / stats / fantasy project | Mapping internal competitions to FotMob ids is manual and error-prone | Match on name / ccode / countryName and capture the canonical leagueId |
| A content creator / journalist | You need the right league URLs and ids fast | Filter by country code or category and copy the ready-made leagueUrl |
What data you get
Each league becomes one dataset record:
| Field | Description |
|---|---|
leagueId | FotMob's stable numeric league id (the record's unique id). Integer. |
name | League / competition name (e.g. Premier League) |
localizedName | Localized name for the chosen locale; falls back to name |
category | popular, international, or domestic — which FotMob bucket the league came from |
ccode | FIFA country code (e.g. ENG, ESP, GER); INT for international tournaments. May be null |
countryName | Country name for domestic leagues; null for popular / international |
pageUrl | Relative FotMob path (e.g. /leagues/47/overview/premier-league). May be null |
leagueUrl | Absolute FotMob URL built from pageUrl. May be null |
source | Always fotmob-leagues-list-scraper |
scrapedAt | ISO 8601 timestamp of the run |
Example output
{"leagueId": 47,"name": "Premier League","localizedName": "Premier League","category": "popular","ccode": "ENG","countryName": null,"pageUrl": "/leagues/47/overview/premier-league","leagueUrl": "https://www.fotmob.com/leagues/47/overview/premier-league","source": "fotmob-leagues-list-scraper","scrapedAt": "2026-06-18T11:08:55+00:00"}
A league can appear in more than one FotMob bucket (e.g. a popular league is also
a domestic one); records are de-duplicated by leagueId, so you get exactly
one clean record per league. If the directory request cannot be fetched, nothing
is written to the dataset (and nothing is billed) — the failure is listed in the
run's SUMMARY record in the key-value store
({ "failures": [ { "input": "allLeagues", "error": "…" } ] }), and the run's
status message tells you at a glance how many leagues were captured.
How to use it (60 seconds)
- Click Try for free / Start.
- Choose what to return:
- Everything (default): leave Category on
Allto get every league FotMob tracks. - One bucket: set Category to
Popular leagues,, orInternational tournamentsDomestic (country) leagues. - Specific countries: add FIFA codes (e.g.
ENG,ESP,GER) under Country codes to keep only those countries' domestic leagues.
- Everything (default): leave Category on
- Keep the Apify Proxy enabled (datacenter is enough — the default).
- Click Save & Start. Download results as JSON, CSV, Excel, or via API from the Dataset tab; check Key-value store → SUMMARY for run totals and any failures.
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
| Category | select | all | Which leagues to return: all, popular, international, or domestic. |
| Country codes (optional) | list | (empty) | FIFA country codes (e.g. ENG, ESP, GER). Filters the domestic bucket only; empty = all countries. |
| Locale country (advanced) | string | US | Country code FotMob uses to localize ordering and the localizedName. Most users can leave it at US (English names). |
| Proxy configuration | object | Apify Proxy (datacenter) | Routes the request through Apify Proxy. Datacenter is enough — keep it enabled. |
| Max items | integer | 0 | Stop after producing this many records (0 = the full directory). |
Notes on coverage
One run captures FotMob's complete competition directory — popular leagues,
international tournaments, and every country's domestic divisions — typically
around 550 leagues, flattened into a single dataset. The exact count tracks
whatever FotMob currently publishes. Leagues without a usable id are skipped, and
duplicates across buckets are merged by leagueId. The Locale country option
only changes the localized names and ordering; the set of leagues and their ids
is the same worldwide.
Pricing — what a run costs
This Actor uses transparent pay-per-event pricing with a built-in volume discount: a small Actor-start fee, a fixed price per successful league record for the first 10,000 results of a run, and a cheaper rate for every result beyond that. No subscription, no minimums, and failed league records are never charged. The exact rates are shown on the Actor's Pricing tab.
- Failed requests are free. A failed directory fetch is reported in the summary, never billed.
- Bigger runs cost less per item. The discount tier resets per run, so one large run is cheaper than the same job split into many small ones.
- Cheap by design. A full run is a single HTTP request that yields hundreds of records — there is very little to pay for.
- Try it free: an Apify free account includes $5 of monthly platform credit — enough to try the Actor before paying anything.
- Stay in control: set Max items and Apify's maximum charge per run; the Actor stops gracefully at your cap, keeping everything already scraped.
Compared to the alternatives
| This Actor | Build your own scraper | Hardcoded league list | |
|---|---|---|---|
| Complete, normalized directory | Yes | You maintain it | Goes stale |
Stable leagueId for downstream scrapers | Yes | You map it | Manual lookup |
| Popular + international + domestic in one schema | Yes | You merge it | Partial |
| Filter by category / country code | Yes | You build it | – |
| Ready-made absolute league URLs | Yes | You construct them | – |
| Never billed for failures | Yes | – | – |
| Export JSON / CSV / Excel / API | Yes, built-in | DIY | Copy-paste |
| Setup time | ~60 seconds | Days; breaks on site changes | Hours, and out of date |
The FotMob Actor family
This is the discovery Actor that produces the league ids the others consume:
- FotMob Leagues List Scraper (this Actor) — the full directory of leagues
and their
leagueIds. - FotMob League Scraper — takes a
leagueIdand returns a league's seasons, standings/tables, and fixtures. - FotMob Matches Scraper — discovers matches (by date or league).
- FotMob Match Details Scraper — takes a match id and returns deep per-match data.
Typical flow: run this Actor to get leagueIds → feed them into the FotMob
League Scraper → take the match ids from there into the FotMob Match Details
Scraper.
Integrate the data
- Exports: JSON, CSV, Excel, XML from the Dataset tab — or fetch
programmatically:
GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json
- Run on a schedule: use Apify Schedules to refresh the directory weekly or monthly, and webhooks to push finished runs into your pipeline (Sheets, Slack, your backend).
- From code: call the Actor with the Apify API or SDKs (Python / JavaScript) and read the dataset when the run finishes.
- Chain it: pipe the
leagueIds straight into the FotMob League Scraper to build a full football-data pipeline. - Run summary: every run writes a
SUMMARYrecord (key-value store) with totals, successes, failures, and billing counts — ideal for monitoring automated pipelines.
FAQ
Do I need a FotMob account or login? No. There is no account or login required.
Is it geo-restricted? No — this Actor works globally. It runs through Apify Proxy, and datacenter proxy (the default) is enough; just keep the proxy enabled.
What is leagueId for?
It is FotMob's stable numeric id for a competition, and the key input to the
FotMob League Scraper and FotMob Match Details Scraper. Run this Actor
first to discover the ids you need.
Why is countryName sometimes null?
countryName is only set for domestic leagues. Popular leagues and
international tournaments return null for it (use ccode, which is INT for
international tournaments).
How do I get only one country's leagues?
Leave Category on all or set it to domestic, then add the FIFA code(s)
(e.g. ESP) under Country codes.
How many leagues will I get? Roughly 550 in a full run, matching whatever FotMob currently publishes.
How fresh is the data? Each run fetches the live directory, so you get exactly what FotMob lists at that moment. Schedule the Actor to keep your reference table current.
What formats can I export? JSON, CSV, Excel, XML — from the Console or via the Apify API.
Disclaimer
This Actor is intended for personal and research use. You are responsible for ensuring your use complies with FotMob's terms and applicable law. Please scrape responsibly. This project is not affiliated with, endorsed by, or sponsored by FotMob.