espn_s2 and SWID: what they are, and how to avoid needing them

espn_s2 and SWID are the two browser cookies that identify you to ESPN Fantasy. Private ESPN leagues have no clean public API token, so most third-party tools ask you to copy these cookies out of your browser, or install an extension that harvests them. They function as credentials: anyone holding a valid pair can read your ESPN fantasy account until they expire. FantasyBot does not ask for them. You sign in on ESPN's own login page inside the app and the session is established there, which is why setup works from a phone and needs no extension.

Open in ChatGPTAdd to ClaudeiOS appWeb app

What each cookie is

SWID is a stable identifier for your ESPN account, a GUID in braces. espn_s2 is a long opaque session token. Together they are what ESPN's fantasy endpoints check when deciding whether you are allowed to see a private league.

There is no OAuth flow and no scoped read-only token for ESPN Fantasy in the way Yahoo provides one. That absence is the entire reason this problem exists, and it is why so many fantasy tools end up asking you for cookies.

Why copying them around is worth thinking about

These are not scoped credentials. A valid pair does not grant read access to one league; it identifies you to ESPN. Pasting them into a third-party form, a GitHub issue, or a chat window hands over more than you probably intend, and they remain valid until they expire or you sign out everywhere.

Browser extensions that harvest them are a related consideration. An extension with permission to read data on ESPN's domain is a meaningful grant, and it is the mechanism several hosted fantasy connectors use for ESPN. That is not necessarily wrong, but it is worth knowing it is what you are agreeing to.

How to connect ESPN without handling cookies

FantasyBot opens ESPN's own OneID login inside the app. You authenticate with ESPN directly, the session is established against ESPN's page, and FantasyBot never sees or asks for your password. There is nothing for you to copy and no extension to install, which is also why the whole flow works on a phone rather than requiring a desktop browser.

Private leagues work for the same reason: you actually signed in, so ESPN returns your leagues.

Questions

What are espn_s2 and SWID?

They are browser cookies that identify you to ESPN Fantasy. SWID is a stable account identifier; espn_s2 is a session token. ESPN Fantasy has no public OAuth token for private leagues, so third-party tools commonly ask for these instead.

Is it safe to share espn_s2 and SWID?

Treat them as credentials. They are not scoped to a single league; a valid pair identifies you to ESPN and stays valid until it expires. Avoid pasting them into forms, chat windows or public issues.

Do I need espn_s2 and SWID for FantasyBot?

No. You sign in on ESPN's own login page inside the FantasyBot app, so there are no cookies to copy and no browser extension to install. Setup works from a phone, and private leagues are supported.

Why do other fantasy AI tools ask for them?

Because private ESPN leagues expose no clean API token, a self-hosted connector generally needs the cookies, and several hosted tools use a desktop Chrome extension to collect them. It is a real constraint of ESPN's platform rather than a flaw in those tools.

How do I connect ESPN to ChatGPT without an extension?

Link ESPN in the FantasyBot app by signing in on ESPN's page, then add FantasyBot in ChatGPT. No extension, no cookies, and it works from a phone.

Related

Connect your league and ask.

Read-only, no browser extension, free to start.

Open in ChatGPT