pnclFEED Free key

Quickstart notes

Why your odds query returns an empty board

A 200 with an empty events array is a valid answer, not a bug. The four common causes, and how to prove the board is alive in two calls.

You call the markets endpoint and get back a 200 with an empty events array. That is a valid answer, not a broken feed: the envelope holds events plus the last cursor, as the curl quickstart shows, and an empty array simply means this board has nothing on it right now. The work is finding out why, and there are four usual suspects.

The board is real and quiet

A live soccer board at 6 a.m. can be empty because nothing is playing. A prematch board in the off-season week can be empty because nothing is scheduled. This is the commonest cause and the easiest to confirm: the same call returns events a few hours later when matches exist.

Before you debug anything else, check the time and the calendar against the sport you asked for.

You asked the wrong sport

The endpoint selects by sport ID, and the home page lists the thirteen sport IDs the feed prices. A typo, or an ID copied from a different system's mapping, returns a valid empty board forever. Print the ID you sent and compare it against the documented list before blaming the feed.

You asked the wrong phase

Live and prematch are separate calls with the same shape, and a board can be empty in one phase while full in the other. The prematch side takes the event_type parameter, as the Sheets quickstart uses it, checked 2026-10-10. If your board is empty, call the other phase: the difference between the two answers tells you which board your fixtures are sitting on.

You filtered yourself into empty

If you filter events by league or team in your own code, a filter with a wrong string returns nothing on a full board. Test the unfiltered response first; if it is full, the bug is in your filter, not the API.

Prove it in two calls

The two-call test settles every empty board. First, call a sport you know has matches today, live if it is playing, prematch if not. If events arrive, the API and your key are fine, and the emptiness belongs to the first call's board or timing. Second, check the status codes when things fail: the curl quickstart's notes on what the other statuses mean distinguish a valid empty 200 from an authentication or rate-limit failure, which look completely different.

An empty board is an answer about the board, not about your code. Prove liveliness with a busy sport, then check phase, sport ID and your own filters, in that order.