Load Pinnacle odds into Excel with Power Query
Answer: Data → Get Data → From Web is not enough (no custom header). Use Blank Query + Advanced Editor, set x-api-key, call GET https://pinnfeed.io/v1/odds, then expand events / markets / outcomes. Shorter note: Excel Power Query answer.
M query (main soccer moneylines)#
let
Key = Excel.CurrentWorkbook(){[Name="PinnfeedKey"]}[Content]{0}[Column1],
Url = "https://pinnfeed.io/v1/odds?sport=soccer&market=moneyline&main=true&limit=40",
Raw = Json.Document(Web.Contents(Url, [
Headers = [#"x-api-key" = Key, Accept = "application/json"]
])),
Events = Table.FromList(Raw[events], Splitter.SplitByNothing(), {"ev"}),
Expand = Table.ExpandRecordColumn(Events, "ev", {"home", "away", "markets", "starts"}),
Markets = Table.ExpandListColumn(Expand, "markets"),
M2 = Table.ExpandRecordColumn(Markets, "markets", {"type", "outcomes"}),
Out = Table.ExpandListColumn(M2, "outcomes"),
O2 = Table.ExpandRecordColumn(Out, "outcomes", {"name", "decimal", "fair", "fairProb"})
in
O2
- Put your key in a named sheet range
PinnfeedKey(or paste into the M code temporarily, then remove it). - Data → Get Data → From Other Sources → Blank Query → Advanced Editor → paste.
- Home → Close & Load. Refresh manually or set a workbook refresh schedule.
Uses OpenAPI path /v1/odds. Free (€0, delayed) works. WebSocket Excel add-ins are out of scope — use Builder (€99/mo) from a proper client. Paid plans: 3-day trial; a card is required and it is charged after day 3 unless you cancel. Educational content for adults (18+).
Related: Power BI REST.
Questions people ask#
Power Query says “access to the resource is forbidden”#
Almost always a missing or wrong x-api-key. Confirm the named range and that the key still exists in the dashboard.
Can I hit /v1/closing from Excel?#
Yes on Builder+ — change the URL to /v1/closing?date=YYYY-MM-DD&sport=soccer&main=true. Free returns 403.