A season is too short for the stats to settle, so most of what moves a fantasy decision is what analysts say: who is getting the snaps, which coach changed the scheme, who they are all fading. That lives in podcasts: the ten biggest fantasy shows put out about 70 episodes a week in season. Nobody listens to all of it.
With Spoken, those podcasts become text you can query. One call lists every episode of a show that has a transcript, for free. Another returns an episode as Markdown with each analyst named, for one credit. Collect a few weeks of your shows, pull out every passage that mentions a player, and ask an LLM what the consensus is.
The shows
The main fantasy football podcasts all have transcripts:
- FantasyPros Fantasy Football Podcast
- Fantasy Football Today
- Fantasy Football Today Beyond the Box Score
- Fantasy Focus Football
- The Late-Round Fantasy Football Podcast
- Fantasy Football Happy Hour with Matthew Berry
- Dynasty Nerds Podcast
- The Ringer Fantasy Football Show
- Establish The Run
- Fantasy Footballers
Others are a free search away: dynasty, DFS and single-team shows included.
No code: ask Claude or ChatGPT
Connect Spoken to Claude or ChatGPT (how to connect), then ask in plain words: "Get this week's FantasyPros and Fantasy Football Today episodes and tell me what they said about Puka Nacua." The assistant finds the episodes and reads the transcripts itself. Each new episode costs one credit, the same as through the API.
That works for a handful of episodes at a time. For every episode of six shows across a season, use the script below and keep the files.
How the script fits together
- 1
List episodes
Every episode of a show with a transcript. Free.
GET /podcasts/{id}/episodes - 2
Fetch text
Markdown, analysts named. One credit, first fetch only.
GET /transcripts/{id} - 3
Find the player
Every turn that mentions them, with show and date.
grep - 4
Ask
Role, usage, outlook, and where the analysts disagree.
LLM
Step 1: collect the last three weeks
The show ids come from /search or from the show links above. Files already on disk are skipped, so the same script is also the daily update.
import pathlib, time, requests
from datetime import datetime, timedelta, timezone
API = "https://spoken.md"
HEADERS = {"x-api-key": "YOUR_KEY"}
SHOWS = {
"1138942145": "FantasyPros",
"261735167": "Fantasy Football Today",
"260537420": "Fantasy Focus Football",
"1224965828": "Late-Round",
"1523722173": "The Ringer",
"1473055758": "Establish The Run",
}
since = datetime.now(timezone.utc) - timedelta(days=21)
root = pathlib.Path("ff")
for show_id in SHOWS:
episodes = requests.get(f"{API}/podcasts/{show_id}/episodes", headers=HEADERS).json()["episodes"]
for ep in episodes:
if datetime.fromisoformat(ep["date"].replace("Z", "+00:00")) < since:
continue
path = root / show_id / f"{ep['date'][:10]}-{ep['id']}.md"
if path.exists():
continue
r = requests.get(f"{API}/transcripts/{ep['id']}", headers=HEADERS)
if r.status_code == 402: # out of credits: top up, then re-run
raise SystemExit("out of credits")
if not r.ok: # no transcript, or upstream error: skip
continue
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(r.text, encoding="utf-8")
time.sleep(0.34) # about 3 requests a secondFor those six shows, three weeks in season is about 150 episodes, so 150 credits. Change days=21 to reach further back; before the draft, last season and the offseason episodes are the useful part.
Step 2: ask about a player
Every speaker turn starts with a bold name and a timestamp, so a transcript splits cleanly into turns. Keep the turns that mention the player, label each with show and date, and hand only those to the model. Three weeks of six shows is far too much text for one prompt; the turns about one player are a few thousand words.
import re
from anthropic import Anthropic
def mentions(*names):
found = []
for path in sorted(root.glob("*/*.md")):
show, date = SHOWS[path.parent.name], path.stem[:10]
for turn in re.split(r"\n\n(?=\*\*)", path.read_text(encoding="utf-8")):
if any(n.lower() in turn.lower() for n in names):
found.append(f"[{show}, {date}]\n{turn}")
return found
excerpts = "\n\n".join(mentions("Puka Nacua", "Nacua"))
msg = Anthropic().messages.create(
model="claude-sonnet-5-5",
max_tokens=1500,
messages=[{"role": "user", "content":
"These are excerpts from fantasy football podcasts from the last three weeks, "
"each labelled with show and date. What do the analysts say about Puka Nacua: "
"role, usage, injury news, outlook? Where do they disagree? Cite show, date and "
f"analyst for each point.\n\n{excerpts}"}],
)
print(msg.content[0].text)Pass the surname as well as the full name: hosts say "Nacua" far more often than the whole name, and a less common name can be spelled more than one way in a transcript.
Other questions the same files answer
- Waivers: "Which players were recommended as pickups this week, by how many shows, and at what FAAB bid?"
- Start/sit: "For these two players, collect every start/sit call from this week's episodes."
- Usage: "Who do the analysts say is gaining snap share or target share, and on what evidence?"
- Trades: "Which players are being called buy-low or sell-high this week, and by whom?"
- Handcuffs: "If this running back misses time, who do the shows say takes over?"
- Trends: "Which players are mentioned much more this week than in the previous two?" (count mentions per week first, then ask)
- Draft prep: "Summarise the sleepers, busts and ADP risers each show named in August."
Keeping it current
Once your key has fetched from a show, GET /new lists that show's episodes released since the newest one you hold, with a transcript URL for each, for free. Run step 1 every morning, or poll /new and fetch what it lists.
curl -H "x-api-key: YOUR_KEY" https://spoken.md/newWhat it costs
One credit per episode, charged on the first fetch only. Searching, listing and polling /new are free.
| What you collect | Episodes | Pack |
|---|---|---|
| Six shows, one in-season month | about 210 | 500 credits, $50 |
| Ten shows, one in-season month | about 290 | 500 credits, $50 |
| Ten shows, a whole season (August to the Super Bowl) | about 1,500 | 2,000 credits, $160 |
Credits don't expire, so what is left in February carries over to next August. Prices exclude VAT.
FAQ
Which fantasy football podcasts have transcripts?
Spoken has transcripts for most of the big fantasy football shows, among them FantasyPros, Fantasy Football Today, Fantasy Focus Football, The Late-Round Fantasy Football Podcast, Fantasy Footballers, The Ringer Fantasy Football Show, Establish The Run, Dynasty Nerds and Fantasy Football Happy Hour with Matthew Berry. Search for any other show for free: if its episodes come back, they can be fetched.
How much does a fantasy football season of transcripts cost?
With Spoken, one episode is one credit. Ten of the main fantasy football shows published about 1,500 episodes between August 2025 and the Super Bowl, so a full season of all ten fits in the 2,000-credit pack at $160. Six shows for the current month is around 200 credits. Listing episodes is free, and credits never expire.
How soon after release is an episode's transcript available?
Usually the same day. Spoken's /new endpoint lists the episodes your shows have published since your last fetch, for free, so a job that runs every morning picks up the night's episodes before waivers and lineup locks.
Are the analysts named in the transcript?
Yes. Every speaker turn in a Spoken transcript starts with the speaker's name and a timestamp, so you can tell one analyst's take from another's and weigh them differently. Where a speaker cannot be identified from the episode, the label stays generic instead of guessing.
Can I try it before buying credits?
Yes. Spoken's demo key pt_demo needs no signup: it searches and lists the episodes of any show, and fetches one demo episode in full, so you can check which of your shows are covered before you spend anything.
TL;DR: Fetch the fantasy podcasts you trust as text with the analysts named, keep the turns that mention a player, and ask an LLM for the consensus. Six shows for a month of the season fits in the $50 pack, with credits left over.
Thousands of transcripts fetched by developers building summarizers, RAG pipelines, and podcast tools
Free with the key pt_demo: it lists the episodes of any show.
Credits never expire.