The free key reads yesterday again: our one-month trial of today on the free key has finished. Read the changelog
Yesterday’s results, every league

A free football API key on yesterday’s matches.

Yesterday, as one whole day, in every one of the 171 countries we cover. The same rows and the same shape a paid key gets. No card, no trial clock, and nothing expires.

0Competitions
0Clubs
0Free endpoints
0Calls a day, free
Sign in with Google Ten seconds · no card · never expires
free key · 200 OK
$ curl "https://api.footballsoccerapi.com\ /v1/results/yesterday?limit=1" \ -H "X-API-Key: $FSAPI_KEY"
{
"data": [{
"match_id": "mt_1SWH4G4",
"league_name": "Serie B",
"kickoff_date": "2026-10-30",
"home_team_name": "Criciuma",
"away_team_name": "Ponte Preta",
"home_goals": 2, "away_goals": 0,
"venue_name": "Estádio Heriberto Hülse",
"best_odds": null,
"held_back": {
"best_odds": "Best odds come with Archive and Live."
}
}],
"meta": { "free_key": {
"reaches": "yesterday, as one whole day",
"allowance": 50, "resets": "00:00 UTC"
}}
}
A price is held back, never dropped: the field is there, with the plan that carries it
What a free key reads, counted just now. Every match settled yesterday, as one whole UTC day, across every league. Today, the fixtures ahead and the in-play feed come with Live.
Yesterday382results, all settled, free/v1/results/yesterday
Today1,576on the card, with Live/v1/fixtures/today
Ahead2,721fixtures, with Live/v1/fixtures/upcoming
What it gives, what it holds back

Yesterday, in full. Today, the prices and the past, on a plan.

A free key reads yesterday as a paid key sees it, with every row and every field in place. What it leaves out is today, the fixtures ahead, the in-play feed, the market and the archive behind yesterday.

What the free key gives 16 of 75 endpoints

  • Every league in every country: 1,381 competitions, no regional tiers
  • Yesterday as one whole UTC day, every result settled and final
  • Scores, half-time scores, grounds and how far the away side travelled
  • 50 calls a day, 60 a minute. Over the limit is a 429, never a bill
Every free response says what it reaches, the allowance and when it resets, in meta.free_key.

What it holds back Archive and Live

  • Today, the fixtures ahead and the in-play feed: these come with Live
  • The prices: best odds, kickoff and half-time exchange prices, matched volume and overround
  • Everything before yesterday: ten seasons and 1,693,258 matches
  • Statistics and events, tables, form and head-to-head
  • Webhooks on kickoff, goals and results
A held-back field comes back as null with a note naming the plan, so your code reads the same shape on every plan. Compare the plans.
Your first call

Three steps, and you are reading matches.

No SDK to install and nothing to configure. A key in a header is the whole setup.

1

Sign in with Google

Your account and your key are made in the same step, and the key is on screen straight away.

# your key, from /account
export FSAPI_KEY=fsa_live_8f3c2b91d4e7...
2

Ask for yesterday’s results

Every league at once, or narrow it with country and league.

curl "https://api.footballsoccerapi.com\
/v1/results/yesterday?country=England" \
  -H "X-API-Key: $FSAPI_KEY"
3

Check what you have left

The usage call shows the calls you have made today, your allowance and when it resets.

curl "https://api.footballsoccerapi.com\
/v1/usage" -H "X-API-Key: $FSAPI_KEY"
# "per_day_limit": 50, "used_today": 2
When you need more

The same key, reaching further.

Upgrading changes nothing in your code. The key you already have reaches more the moment a payment clears.

Archive

$49a month

Every season before yesterday, the exchange price at kickoff and half-time, statistics, tables and backtesting.

Live & Archive

$99a month

Everything in Archive, plus today’s card, the fixtures ahead, the in-play feed, current prices and webhooks.

Cancel any time, from your account. See everything each plan reaches.

Before you sign in

The awkward questions, answered.

Why only yesterday?

A free key is for building and testing, not for running a product on. Yesterday shows you every field and every shape on real, settled matches. For a month the free key also read today and the fixtures ahead, as a trial; that trial has finished, and today is on Live again.

Why is best_odds null?

Prices are held back on a free key rather than removed. The field stays, with a note in held_back naming the plan that carries it.

What happens if I go over the limit?

A 429 telling you how long until it resets at 00:00 UTC. No overage charge, no automatic upgrade, no surprise invoice.

Will you ask for a card later?

No. The free key has no expiry and no card attached. If you want a paid plan, you choose one.

Can I use it commercially?

Yes, within the acceptable use policy. Build on it and show the data to your own users.

Is it really every league?

Yes. There are no coverage tiers or regional add-ons. The smallest league we hold is as reachable as the Premier League.

Yours in ten seconds.

Sign in with Google and your key is on screen, ready for the call at the top of this page.

Continue with Google
We receive your email, name and picture. Nothing is charged, now or later.