Grounds
F
GET
/v1/grounds
Every ground, with capacity and surface
Every ground we hold detail for, with its city, capacity and playing surface, and how many of our matches were played there. Ordered by that count, so the grounds you are most likely to want come first. Filter by surface to find the artificial pitches — scoring and card rates differ on them, and few sources tell you which is which.
Plan
This endpoint needs Free key. It works on the free key, which reads yesterday, today and the fixtures ahead.
Parameters
country
string
query
Restrict to one country, by name as returned from
/v1/countries. e.g. England
surface
string
query
Restrict to matches played on a given surface:
grass, artificial_turf or sand_pitch. Read from the ground rather than the match, so a stadium that resurfaces is corrected in one place. e.g. artificial_turf
min_capacity
integer
query
Grounds holding at least this many. e.g.
30000
limit
integer
query
Rows per page, 1–1000. Defaults to 100. e.g.
100
page
integer
query
Page number, 1-based. The response carries
total, total_pages, next_page and prev_page, so a UI pager has everything it needs from one call. If you send both page and cursor, page wins. e.g. 2
Request
curl "https://api.footballsoccerapi.com/v1/grounds?country=England&surface=artificial_turf&min_capacity=30000" \ -H "X-API-Key: $FSAPI_KEY"
const res = await fetch("https://api.footballsoccerapi.com/v1/grounds?country=England&surface=artificial_turf&min_capacity=30000", { headers: { "X-API-Key": process.env.FSAPI_KEY } }); const { data, meta } = await res.json();
import os, requests r = requests.get( "https://api.footballsoccerapi.com/v1/grounds?country=England&surface=artificial_turf&min_capacity=30000", headers={"X-API-Key": os.environ["FSAPI_KEY"]}, ) data = r.json()["data"]
$ch = curl_init("https://api.footballsoccerapi.com/v1/grounds?country=England&surface=artificial_turf&min_capacity=30000"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: {$key}"], ]); $data = json_decode(curl_exec($ch), true)["data"];
Example response
A real row from the archive, fetched when this page rendered. Run it against your own key below.
200 OK
application/json
{
"data": [],
"meta": {
"data_as_of": "2026-09-27T03:47:30Z",
"request_id": "01J9QW3C7M4KX2VB"
}
}
Run it live
Paste your key and fire the real request. The key is kept in this browser only and never sent anywhere but the API.