Fantasy Football Hub APIfantasyfootballhub.co.uk ↗
Access FPL captain picks, transfer advice, team reveals, and fixture difficulty ratings from Fantasy Football Hub via 4 structured API endpoints.
What is the Fantasy Football Hub API?
The Fantasy Football Hub API gives developers structured access to Fantasy Premier League content and data across 4 endpoints, covering editorial advice articles, gameweek context, and per-team fixture difficulty ratings. The get_fixture_difficulty endpoint returns attack, defence, and overall difficulty scores (1–10) for every Premier League team across a configurable gameweek range, while list_advice_articles lets you paginate and search content streams including captain picks, differentials, and expert team reveals.
curl -X GET 'https://api.parse.bot/scraper/ce2c1e0b-c882-4746-8694-a4eefc0dcf02/list_advice_articles?topic=captain_picks' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fantasyfootballhub-co-uk-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Fantasy Football Hub SDK — bounded, re-runnable."""
from parse_apis.fantasyfootballhub_co_uk_api import (
FantasyFootballHub, Topic, InputNotFound,
)
client = FantasyFootballHub()
# Check which gameweek we're in and when the next deadline falls.
ctx = client.gameweek_context.get()
print(f"Season {ctx.season} — GW{ctx.current_gameweek.number}",
"finished" if ctx.current_gameweek.is_finished else "live")
print(f"Next deadline: GW{ctx.next_gameweek.number} @ {ctx.next_gameweek.deadline_at}")
# Browse the latest captain-pick articles.
for summary in client.article_summaries.list(topic=Topic.CAPTAIN_PICKS, limit=3):
print(f" [{summary.primary_category}] {summary.title}")
# Drill into the newest captain-pick article for full sections and player mentions.
pick = client.article_summaries.list(topic=Topic.CAPTAIN_PICKS, limit=1).first()
if pick is not None:
article = pick.details()
for section in (article.sections or []):
if section.heading:
print(f" ## {section.heading}")
for para in section.paragraphs[:2]:
print(f" {para[:120]}")
for pm in article.players_mentioned:
print(f" Player: {pm.name} ({pm.price})")
if article.members_only_continuation:
print(" (full article requires membership)")
# Point-lookup an article by slug derived from the listing above.
if pick is not None:
try:
full = client.articles.get(slug=pick.slug)
print(f"Fetched article: {full.title} by {full.author}")
except InputNotFound:
print("Article no longer available")
# Fixture difficulty for the next five gameweeks.
fd = client.fixture_difficulty.get()
print(f"Fixtures GW{fd.gameweek_start}–GW{fd.gameweek_end}:")
for team in fd.teams[:3]:
easiest = min(team.fixtures, key=lambda f: f.difficulty_overall)
print(f" {team.team_short}: easiest GW{easiest.gameweek} vs {easiest.opponent_short}"
f" (difficulty {easiest.difficulty_overall})")
print("exercised: gameweek_context.get / article_summaries.list /"
" details / articles.get / fixture_difficulty.get")
Lists advice articles from one of Fantasy Football Hub's FPL content streams, newest first: weekly captain picks, free FPL tips (the weekly 'Buy, hold, sell' transfer articles, best differentials and the gameweek Ultimate Guide), gameweek tips, expert team reveals, Ultimate Guides, differentials and double-gameweek guides. Each row is one article summary with its slug, which get_advice_article consumes unchanged. An optional free-text search narrows the stream by title/body match. Pagination is cursor based: one call returns up to `limit` rows (max 50) and `next_cursor`; pass it back as `cursor` to continue, with `has_more` false at the end. An empty `articles` array is a valid result for a search with no matches.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of articles per page, clamped to 50. |
| topic | string | Which content stream to list. |
| cursor | string | Opaque continuation value from a previous response's next_cursor. Omitted = first page. |
| search | string | Free-text search applied within the chosen stream (e.g. 'buy hold sell' or a player name). Omitted = no text filter. |
{
"type": "object",
"fields": {
"topic": "stream that was listed",
"search": "search text applied, or null",
"articles": "array of article summaries: id (integer), slug (feed into get_advice_article), title, published_at/modified_at (site-local ISO datetimes), excerpt, author, primary_category, categories (slugs; 'members' marks member-gated articles), reading_time_minutes, image_url, url",
"has_more": "true when another page exists",
"next_cursor": "cursor for the next page, null when has_more is false"
},
"sample": {
"data": {
"topic": "captain_picks",
"search": null,
"articles": [
{
"id": 83863,
"url": "https://www.fantasyfootballhub.co.uk/fpl-captain-gameweek-5-article-26-27",
"slug": "fpl-captain-gameweek-5-article-26-27",
"title": "Best FPL captain for Gameweek 5: Can anyone rival Haaland?",
"author": "Chris_Tan",
"excerpt": "Fantasy Football Hub's resident Fantasy Premier League (FPL) captaincy expert Chris Tan takes a close look at the best options for Gameweek 5. [...]",
"image_url": "https://cms.fantasyfootballhub.co.uk/wp-content/uploads/2026/09/Haaland-GW5-1024x683.jpg",
"categories": [
"latest",
"fpl",
"featured",
"fpl-captain",
"fpl-members",
"members"
],
"modified_at": "2026-09-16T14:13:44",
"published_at": "2026-09-17T11:00:20",
"primary_category": "FPL Captain",
"reading_time_minutes": 7
}
],
"has_more": true,
"next_cursor": "YXJyYXljb25uZWN0aW9uOjgxODg4"
},
"status": "success"
}
}About the Fantasy Football Hub API
Advice Articles
list_advice_articles returns paginated article summaries from Fantasy Football Hub's main FPL content streams: weekly captain picks, 'Buy, hold, sell' transfer guides, differential picks, gameweek Ultimate Guides, and expert team reveals. The topic parameter filters to a specific stream; the search parameter applies free-text filtering within that stream — useful for finding articles mentioning a specific player. Each summary includes an id, slug, title, published_at, and modified_at. Pass the slug to get_advice_article to retrieve the full article body, broken into sections (each with a heading, level, paragraphs, and bullets), a list of players named with a price in the public text, the author display name, and the featured image URL. Articles behind a membership paywall surface only what is publicly readable.
Gameweek Context
get_gameweek_context takes no inputs and returns a snapshot of the current FPL season: season, season_status, the current_gameweek and next_gameweek objects (each with number, isFinished, deadlineAt, and lastFixtureKickoffAt in UTC), the player_price_range in £m, and an is_fpl_updating flag that signals when FPL data is mid-refresh. This is a low-cost call to orient any subsequent requests to the right gameweek.
Fixture Difficulty
get_fixture_difficulty returns Fantasy Football Hub's fixture ticker for all Premier League teams. Specify gameweek_start and gameweek_end (each 1–38) to control the range; omitting both defaults to the next five gameweeks. The teams array contains one entry per club, each with a fixtures array. Every fixture includes kickoff_at (UTC), venue (home or away), opponent, opponent_short, and three difficulty scores — difficulty_attack, difficulty_defence, and an overall difficulty — all rated 1 (easiest) to 10 (hardest). These ratings are Fantasy Football Hub's own assessments, not FPL's built-in difficulty figures.
The Fantasy Football Hub API is a managed, monitored endpoint for fantasyfootballhub.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fantasyfootballhub.co.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fantasyfootballhub.co.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a gameweek dashboard that surfaces captain pick articles filtered by the current gameweek deadline from
get_gameweek_context - Aggregate fixture difficulty scores across 5 gameweeks to rank the best team defenders and attackers to target for transfers
- Search 'buy hold sell' articles by player name using
list_advice_articlesto surface recent transfer advice for a specific asset - Pull expert team reveals before each deadline to analyse which FPL assets high-ranking managers are holding
- Display colour-coded fixture ticker widgets for all 20 Premier League teams using attack and defence difficulty scores
- Track how article titles and player mentions change week-over-week using
modified_attimestamps fromget_advice_article - Alert users when
is_fpl_updatingis false, indicating FPL data has refreshed and transfer windows are stable
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Fantasy Football Hub have an official developer API?+
What does `get_fixture_difficulty` actually rate, and how is it different from FPL's built-in difficulty?+
get_fixture_difficulty returns Fantasy Football Hub's own attack, defence, and overall difficulty ratings on a 1–10 scale, where 1 is the easiest fixture. These are distinct from the 1–5 difficulty numbers shown in the official FPL product. Each fixture also includes the kickoff time in UTC and venue (home/away), so you can filter by home fixtures for a fairer difficulty comparison.Does `get_advice_article` return the full article text including members-only sections?+
sections array and players_mentioned field reflect only what is available without a subscription.Can I retrieve historical player price data or FPL squad statistics?+
get_gameweek_context), and editorial article content. Individual player statistics, ownership percentages, and historical price changes are not included. You can fork this API on Parse and revise it to add an endpoint targeting that data.How does pagination work in `list_advice_articles`?+
has_more boolean and a next_cursor string. Pass the next_cursor value as the cursor input on your next request to fetch the following page. When has_more is false, next_cursor is null and you have reached the end of the stream. The limit parameter controls page size up to a maximum of 50 articles.