Football API Pricing: Pay Per Match, Not Per Request

Football API pricing per match, explained. Why requests-per-day is misleading, the cost-per-match formula, and how webhooks cut your bill 40x versus polling.

GOAL API· Engineering

5 min read
Football API pricing per match: one match costs 2,160 requests by polling versus about 50 webhook events, 43x less traffic with webhooks

You size a football API plan by requests per day. Your users think in matches. The gap between those two numbers decides your bill — and most surprise invoices come from never converting one into the other.

This is how to price your build around matches, not raw request quotas, with the arithmetic to back it up. If you're still choosing a provider, pair this with the best football API comparison; if you've chosen one, read on to size it.

Requests Per Day Tells You Nothing

A plan quoting 10,000 requests per day sounds concrete. Ask one question and it 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

One match, four transports: polling every 15 seconds consumes 2,160 requests per match, polling every 60 seconds 540, webhooks about 50, and a WebSocket 0 on one connection

Start with the number your product already has: matches tracked per day. For polling, the formula is:

Text
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:

Text
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 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, score changes, and state changes like kickoff, half time and full time:

Text
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. (The full transport decision is in webhooks, WebSockets or polling.)

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 1,000 ~20
Pro $19/mo 10,000 ~200
Ultra $29/mo 100,000 ~2,000
Mega $45/mo 1,000,000 ~20,000

Roughly 1,500 professional matches happen worldwide on a busy Saturday. Ultra at $29/month covers every one of them, with quota left for fixture lists and standings. Now 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 plan; webhooking the same 500 fits inside the $19 plan. See the live numbers on the GOAL API pricing page.

Budget the Rest of Your Traffic

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

  • 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.

How This Compares to Per-League & Add-On Pricing

Per-match sizing is a GOAL-API-style, request-quota model. Two other pricing models dominate the market, and they hide cost in different places:

Per-league tiers (e.g. Sportmonks). You pay for a bundle of leagues, and more leagues means a higher tier — plus per-league and add-on pricing for odds, xG, and historical depth. The trap isn't the headline price; it's the stack of add-ons a production app ends up needing.

Per-request free caps (e.g. API-Football's 100/day). Cheap to start, but the cap is a testing ceiling, not a build budget — see the API-Football alternative breakdown. You hit the wall in development, before real users arrive.

The per-match lens cuts through all three models: whatever the pricing page says, divide the quota by your transport's cost per match and you get the number that actually matters — how many matches you can cover. For the free end of the market specifically, free football API tiers shows where each one stops.

Three Rules

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

The third rule saves the most. A team polling 200 matches sits on a $45 plan; the same team on webhooks sits on the $19 plan and gets updates faster. Read stop polling for goals to register your first endpoint.

FAQ

How much does a football API cost?

It depends on transport, not just the plan price. GOAL API runs from a free tier up to $45/month — but the same quota covers ~4 matches by 15-second polling or ~200 by webhooks. Do the per-match math before reading a headline price.

What is cost per match?

The requests one tracked match consumes: ~2,160 for 15-second polling over a match day, ~50 for webhooks, and 0 for a WebSocket subscription.

How do I lower my bill?

Move live data to webhooks or a socket before upgrading, and cache reference data. That single change typically drops you a plan tier while making updates faster.

Size your plan free → | Start on the free tier | Upgrade only when matches demand it

Keep reading

Football API Pricing: Pay Per Match, Not Per Request | GOAL API