Action Network API
Read-only live access to Action Network's public sports navigation, league metadata, dated event listings, event details, and bookmaker moneyline, spread, and total odds. Coverage follows the markets the source publishes for each sport; paid picks, account operations, and authenticated features are not served.
Endpoint health
Loading verification…
Connect your agent
Connect through MCP so your agent can find this API, read its docs, and call its endpoints.
Add the server from your terminal.
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcpIn Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.
Then ask your agent to use the Action Network API for your task.
Call it over HTTP
Get an API keySign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.
curl --request GET --get 'https://api.agent-data.dev/actionnetwork-com/v1/events' \
--header "Authorization: Bearer $AGENT_DATA_API_KEY" \
--data-urlencode 'league=mlb' \
--data-urlencode 'date=2026-09-22'Endpoints
Inputs and response fields for every endpoint in this API.
GETEvents/v1/events
List dated events for a league
Input
leagueRequiredQuery · stringAction Network league slug
Example: mlb
dateRequiredQuery · stringSource scoreboard date in YYYY-MM-DD; use date navigation to request another day
Example: 2026-09-22
pageOptionalQuery · integer, min: 1, max: 100, default: 1One-based page over the source events returned for the date
Example: 1
limitOptionalQuery · integer, min: 1, max: 100, default: 20Maximum events per response
Example: 20
Response
dataobjectdata.datestringdata.pageintegerdata.itemsobject[]data.items[].teamsobject[]data.items[].teams[].namestringdata.items[].teams[].team_idintegerdata.items[].teams[].location?string | nulldata.items[].teams[].abbreviation?string | nulldata.items[].leaguestringdata.items[].statusstringdata.items[].event_idintegerdata.items[].start_timestringdata.items[].status_displaystringdata.items[].markets_availablestring[]data.items[].source_updated_at?string | nulldata.limitintegerdata.leaguestringdata.sourcestringdata.next_page?integer | nulldata.fetched_atstringtransport?string, default: curl_cffi_residentialrequest_idstringFields marked ? are optional.
GETSports/v1/sports
Return public league odds pages linked by Action Network's navigation.
Input
No input parameters.
Response
dataobjectdata.itemsobject[]data.items[].slugstringdata.items[].nav_label?string | nulldata.items[].odds_pathstringdata.sourcestringdata.fetched_atstringtransport?string, default: curl_cffi_residentialrequest_idstringFields marked ? are optional.
GETLeagues by league/v1/leagues/{league}
Read a supported league's metadata
Input
leagueRequiredPath · stringAction Network league slug, for example mlb or nba
Example: mlb
Response
dataobjectdata.namestringdata.slugstringdata.sport?string | nulldata.league_id?integer | nulldata.updated_at?string | nulldata.description?string | nulldata.source_pathstringdata.current_season?string | integer | nulldata.current_season_type?string | nulltransport?string, default: curl_cffi_residentialrequest_idstringFields marked ? are optional.
GETEvents by event id/v1/events/{event_id}
Retrieve an event and its public odds
Input
event_idRequiredPath · integerEvent identifier returned by the events endpoint
Example: 296099
leagueRequiredQuery · stringLeague containing the event
Example: mlb
dateRequiredQuery · stringDate on which Action Network lists the event, in YYYY-MM-DD
Example: 2026-09-22
Response
dataobjectdata.oddsobject[]data.odds[].line?number | nulldata.odds[].oddsintegerdata.odds[].market"moneyline" | "spread" | "total"data.odds[].is_livebooleandata.odds[].bookmakerstringdata.odds[].selectionstringdata.odds[].outcome_idstringdata.odds[].captured_atstringdata.odds[].odds_formatstringdata.odds[].bookmaker_idintegerdata.odds[].source_updated_at?string | nulldata.teamsobject[]data.teams[].namestringdata.teams[].team_idintegerdata.teams[].location?string | nulldata.teams[].abbreviation?string | nulldata.leaguestringdata.statusstringdata.event_idintegerdata.start_timestringdata.status_displaystringdata.markets_availablestring[]data.source_updated_at?string | nulltransport?string, default: curl_cffi_residentialrequest_idstringFields marked ? are optional.
GETEvents by event id odds/v1/events/{event_id}/odds
Read bookmaker odds for an event
Input
event_idRequiredPath · integerEvent identifier returned by the events endpoint
Example: 296099
leagueRequiredQuery · stringLeague containing the event
Example: mlb
dateRequiredQuery · stringDate on which Action Network lists the event, in YYYY-MM-DD
Example: 2026-09-22
marketOptionalQuery · "moneyline" | "spread" | "total" | nullOptional market filter
Example: moneyline
Response
dataobjectdata.eventobjectdata.event.teamsobject[]data.event.teams[].namestringdata.event.teams[].team_idintegerdata.event.teams[].location?string | nulldata.event.teams[].abbreviation?string | nulldata.event.leaguestringdata.event.statusstringdata.event.event_idintegerdata.event.start_timestringdata.event.status_displaystringdata.event.markets_availablestring[]data.event.source_updated_at?string | nulldata.itemsobject[]data.items[].line?number | nulldata.items[].oddsintegerdata.items[].market"moneyline" | "spread" | "total"data.items[].is_livebooleandata.items[].bookmakerstringdata.items[].selectionstringdata.items[].outcome_idstringdata.items[].captured_atstringdata.items[].odds_formatstringdata.items[].bookmaker_idintegerdata.items[].source_updated_at?string | nulldata.market?string | nulldata.sourcestringdata.fetched_atstringtransport?string, default: curl_cffi_residentialrequest_idstringFields marked ? are optional.
Don’t see the endpoint you need?
Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.
An account is required to submit an extension. Prepare your request, then sign in to build.