Football API pricing: pay per match, not per request

A 10,000 request plan covers 4 matches if you poll and 200 if you use webhooks. Size your plan by matches tracked, with the arithmetic.

GOAL API· Engineering

4 min read

You size a football API plan by requests per day. Your users think in matches. The gap between those two numbers decides your bill.

Here is how to price your build around matches instead, with the arithmetic.

Requests per day tells you nothing

A plan quoting 10,000 requests per day sounds concrete. Ask a simple question and the number dissolves: how many matches does 10,000 requests cover?

The answer depends entirely on your transport.

  • Polling every 15 seconds: 10,000 requests cover 4 matches for one 9 hour Saturday.
  • Polling every 60 seconds: the same quota covers 18 matches.
  • WebSockets: the same quota covers every match you subscribe to, because live updates arrive outside the request count.
  • Webhooks: the same quota covers roughly 200 matches, because you receive events instead of asking for them.

One quota, four answers, spanning two orders of magnitude. Requests per day describes your polling habits, not your product.

Work out your cost per match

Start with the number your product already has: matches tracked per day.

For polling, the formula is:

requests = matches x (3600 / poll_interval_seconds) x hours_live

A worked example. You track 20 matches across a 9 hour Saturday, polling every 15 seconds:

20 x (3600 / 15) x 9 = 20 x 240 x 9 = 43,200 requests

Divide by 20 and each match costs 2,160 requests. At GOAL API Pro pricing of 19 dollars for 10,000 requests per day, you exceed the plan before the early kickoffs finish.

Now move to webhooks. A match produces roughly 50 events across goals, cards, substitutions, and state changes like kickoff and full time.

20 matches x 50 events = 1,000 deliveries

Fifty requests per match instead of 2,160. Same 20 matches, same live coverage, 43 times less traffic.

The same match, four transports

Transport Requests per match 20 matches Update lag
Poll every 15s 2,160 43,200 up to 15s
Poll every 60s 540 10,800 up to 60s
Webhooks ~50 ~1,000 under 1s
WebSocket 0 1 connection under 1s

Polling costs more and delivers later. Both columns move the wrong way.

Fit your plan to your matches

Take the four GOAL API tiers and convert each quota into matches tracked, assuming webhooks at roughly 50 events per match:

Plan Price Requests/day Matches/day via webhooks
Free 0 dollars 1,000 ~20
Pro 19 dollars/mo 10,000 ~200
Ultra 29 dollars/mo 100,000 ~2,000
Mega 45 dollars/mo 1,000,000 ~20,000

Roughly 1,500 professional matches happen worldwide on a busy Saturday. Ultra at 29 dollars per month covers every one of them, with quota left for your fixture lists and standings.

Now convert the same tiers assuming 15 second polling:

Plan Requests/day Matches/day via polling
Free 1,000 0
Pro 10,000 4
Ultra 100,000 46
Mega 1,000,000 462

Your transport choice moves you three tiers. Polling 500 matches needs the 45 dollar plan. Webhooking the same 500 matches fits inside the 19 dollar plan.

Budget the rest of your traffic

Live events are the volatile part of your bill. Everything else is predictable and cacheable.

A typical app also serves:

  • Fixture lists. One request per league per day, cached for hours.
  • Standings. One request per league per hour during a season.
  • Team and player profiles. Cached for a day.
  • Historical results. Cached forever, because a finished match never changes.

Twenty leagues with hourly standings and daily fixtures costs about 500 requests per day. Add your webhook deliveries and the total stays well inside a 10,000 request plan.

The pattern holds across vendors. Reference data is cheap. Live data turns expensive the moment you poll.

Three rules

Size your plan with these:

  • Count matches, then multiply by your transport's cost per match. Skip the raw request quota until you have done the multiplication.
  • Cache anything with a known refresh cycle. Standings change hourly, not per page view.
  • Move live data to webhooks or a socket before you upgrade your plan. Upgrading to cover polling costs pays for the wrong thing.

The third rule saves the most money. A team polling 200 matches sits on a 45 dollar plan. The same team on webhooks sits on the 19 dollar plan and gets updates faster.

Read webhooks, WebSockets or polling for the transport decision, then stop polling for goals to register your first endpoint.

Sources: GOAL API pricing and documentation.

Keep reading

Football API pricing: pay per match, not per request | GOAL API