Trampoline Park Data
Start free

API

The Trampoline Park Data API

An Investor API key opens every venue, market, compare and report endpoint; the pulse and health endpoints need no key.

Overview

Base URL
https://api.trampolineparkdata.com
Format
JSON (UTF-8); CSV for report downloads
Versions
In the path (/v1); /health and /public/pulse are unversioned
Dates
Chicago local YYYY-MM-DD; instants in UTC ISO 8601
Period
grain (day, the default, or month), from and to (inclusive dates, not before 2026-11-01; to defaults to yesterday). At most 92 days or 24 months.
Money
Integer USD cents (6500 = $65.00)
Unknown
null, never 0
Examples
Illustrative values, long arrays trimmed
Estimates
low (P10), mid (P50 for revenue, the mean otherwise), high (P90), ci: 0.8, an A–D grade, drivers

Figures follow the methodology.

Authentication

Authenticated request
export PARKCHECK_API_KEY="pk_live_…"
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/venues"
  • Investor owners and admins create keys under Account → API keys, up to 5 per account. A key looks like pk_live_<8-character prefix>_<32-character secret>, is shown once and is stored only as a SHA-256 hash; revoking it is immediate.
  • Keys reach /v1/* only. A missing, unknown or revoked key is 401 invalid_api_key; an account no longer on Investor gets 403 plan_required. With an Authorization header, cookies are ignored.
  • The public endpoints need no key and allow any origin (CORS, without credentials). They carry counts, never a venue’s figures.

Endpoints

Endpoints
EndpointReturnsAccess
GET /public/pulseLive counts across every marketPublic, no key
GET /healthService statusPublic, no key
GET /v1/venuesEvery venue with its figuresInvestor API key
GET /v1/venues/{id}One venue in fullInvestor API key
GET /v1/venues/{id}/timelineContraction timeline of one dateInvestor API key
GET /v1/compare2–6 venues side by sideInvestor API key
GET /v1/marketMarket and borough totalsInvestor API key
POST /v1/reportsA new CSV reportInvestor API key
GET /v1/reportsYour account’s reportsInvestor API key
GET /v1/reports/{id}/downloadThe CSV fileInvestor API key

Public endpoints · no key

GET /public/pulse

Live counts across every public market, yesterday’s utilization and one anonymous heat point per venue (heat: null without supply).

Request · GET /public/pulse
curl "https://api.trampolineparkdata.com/public/pulse"
Example response, values illustrative · GET /public/pulse
{
  "venues": 268,
  "slotsTracked": 1840,
  "pollsPerDay": 5904,
  "yesterday": {
    "date": "2026-11-01",
    "utilization": 0.6412,
    "soldUnits": 1312
  },
  "points": [
    {
      "lat": 40.7411,
      "lng": -73.9897,
      "heat": 0.7
    },
    {
      "lat": 40.6782,
      "lng": -73.9442,
      "heat": null
    }
  ]
}

GET /health

200 with the version while the service and database are up; 503 with status: "error" otherwise.

Request · GET /health
curl "https://api.trampolineparkdata.com/health"
Example response, values illustrative · GET /health
{
  "status": "ok",
  "version": "0.1.0"
}

Investor API · Bearer key

GET /v1/venues

Every public venue with its figures for the period and spark, its daily utilization.

Parameters

  • grain, from, to query The period (see Overview).
Request · GET /v1/venues
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/venues?from=2026-10-26&to=2026-11-01"
Example response, values illustrative · GET /v1/venues
{
  "period": {
    "grain": "day",
    "from": "2026-10-26",
    "to": "2026-11-01"
  },
  "access": {
    "plan": "investor",
    "resolution": "exact",
    "window": null,
    "locked": []
  },
  "venues": [
    {
      "venue": {
        "id": "example-park",
        "name": "Example Trampoline Park",
        "brand": "Example",
        "neighborhood": "Uptown",
        "borough": "Dallas",
        "lat": 32.7987,
        "lng": -96.8018,
        "unitLabel": "admission",
        "unitsLabel": "admissions",
        "platform": "roller-haveablast",
        "studied": [
          "90-minute jump session"
        ],
        "listPrice": {
          "minor": 2999,
          "per": "admission",
          "source": "pricing-page"
        }
      },
      "figures": {
        "venueId": "example-park",
        "period": {
          "grain": "day",
          "from": "2026-11-01",
          "to": "2026-11-01",
          "label": "2026-11-01"
        },
        "status": "complete",
        "slots": {
          "offered": 30,
          "completed": 30,
          "stale": 0,
          "open": 0
        },
        "supply": {
          "units": 600,
          "unitHours": 1200
        },
        "sold": {
          "low": 402,
          "mid": 418,
          "high": 431,
          "ci": 0.8,
          "grade": "A",
          "drivers": [
            {
              "factor": "stale-final-states",
              "share": 1
            }
          ]
        },
        "utilization": {
          "low": 0.67,
          "mid": 0.697,
          "high": 0.718,
          "ci": 0.8,
          "grade": "A",
          "drivers": [
            {
              "factor": "stale-final-states",
              "share": 1
            }
          ]
        },
        "coverage": 0.98,
        "leftCensoredUnits": 12,
        "revenue": {
          "low": 2540000,
          "mid": 2790000,
          "high": 3080000,
          "ci": 0.8,
          "grade": "B",
          "drivers": [
            {
              "factor": "mix-price",
              "share": 0.58
            },
            {
              "factor": "sold-share",
              "share": 0.42
            }
          ]
        },
        "revenueReason": null,
        "revPAUH": {
          "low": 181000,
          "mid": 199000,
          "high": 220000,
          "ci": 0.8,
          "grade": "B",
          "drivers": [
            {
              "factor": "mix-price",
              "share": 0.58
            },
            {
              "factor": "sold-share",
              "share": 0.42
            }
          ]
        },
        "guests": null,
        "price": {
          "minMinor": 5500,
          "medianMinor": 6500,
          "maxMinor": 9500
        },
        "modelVersions": {
          "utilization": "utilization/v1",
          "revenue": "revenue/v3"
        },
        "model": {
          "utilization": "v2",
          "revenue": "v3"
        }
      },
      "spark": [
        0.66,
        0.71,
        0.697
      ]
    }
  ]
}

GET /v1/venues/{id}

Profile, figures, a series row per day or month, the start-time heatmap (with sold and capacity) and the next-day forecast.

Parameters

  • id path, required Venue id from /v1/venues.
  • grain, from, to query The period (see Overview).
Request · GET /v1/venues/{id}
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/venues/example-park?from=2026-11-01&to=2026-11-01"
Example response, values illustrative · GET /v1/venues/{id}
{
  "period": {
    "grain": "day",
    "from": "2026-11-01",
    "to": "2026-11-01"
  },
  "access": {
    "plan": "investor",
    "resolution": "exact",
    "window": null,
    "locked": []
  },
  "venue": {
    "id": "example-park",
    "name": "Example Trampoline Park",
    "brand": "Example",
    "neighborhood": "Uptown",
    "borough": "Dallas",
    "lat": 32.7987,
    "lng": -96.8018,
    "unitLabel": "admission",
    "unitsLabel": "admissions",
    "platform": "roller-haveablast",
    "studied": [
      "90-minute jump session"
    ],
    "listPrice": {
      "minor": 2999,
      "per": "admission",
      "source": "pricing-page"
    },
    "description": "Indoor trampoline park: open jump courts, dodgeball, foam pits and a ninja course, sold by timed session",
    "address": {
      "line1": "1 Example Street",
      "city": "Dallas",
      "region": "TX",
      "postalCode": "75201"
    },
    "website": "https://example.com",
    "bookingUrl": "https://example.com/book",
    "services": [
      {
        "id": "jump-90",
        "name": "90-minute jump session",
        "category": "other",
        "prices": [
          {
            "amountMinor": 2999,
            "currency": "USD",
            "per": "person",
            "durationMinutes": 90,
            "source": "pricing-page",
            "observedAt": "2026-11-01"
          }
        ],
        "studied": true,
        "source": "pricing-page"
      }
    ],
    "scope": {
      "unit": "admission",
      "window": "timed jump session",
      "notes": [
        "Timed jump sessions only"
      ],
      "excluded": [
        {
          "what": "Birthday parties and group events",
          "why": "Sold as private packages, not by jump session"
        }
      ]
    },
    "pools": [
      {
        "id": "jump",
        "label": "Jump session entry",
        "kind": "entry-window"
      }
    ],
    "streams": [
      {
        "id": "near",
        "cadenceMinutes": 5,
        "dayOffsets": [
          0,
          2
        ]
      }
    ]
  },
  "figures": {
    "venueId": "example-park",
    "period": {
      "grain": "day",
      "from": "2026-11-01",
      "to": "2026-11-01",
      "label": "2026-11-01"
    },
    "status": "complete",
    "slots": {
      "offered": 30,
      "completed": 30,
      "stale": 0,
      "open": 0
    },
    "supply": {
      "units": 600,
      "unitHours": 1200
    },
    "sold": {
      "low": 402,
      "mid": 418,
      "high": 431,
      "ci": 0.8,
      "grade": "A",
      "drivers": [
        {
          "factor": "stale-final-states",
          "share": 1
        }
      ]
    },
    "utilization": {
      "low": 0.67,
      "mid": 0.697,
      "high": 0.718,
      "ci": 0.8,
      "grade": "A",
      "drivers": [
        {
          "factor": "stale-final-states",
          "share": 1
        }
      ]
    },
    "coverage": 0.98,
    "leftCensoredUnits": 12,
    "revenue": {
      "low": 2540000,
      "mid": 2790000,
      "high": 3080000,
      "ci": 0.8,
      "grade": "B",
      "drivers": [
        {
          "factor": "mix-price",
          "share": 0.58
        },
        {
          "factor": "sold-share",
          "share": 0.42
        }
      ]
    },
    "revenueReason": null,
    "revPAUH": {
      "low": 181000,
      "mid": 199000,
      "high": 220000,
      "ci": 0.8,
      "grade": "B",
      "drivers": [
        {
          "factor": "mix-price",
          "share": 0.58
        },
        {
          "factor": "sold-share",
          "share": 0.42
        }
      ]
    },
    "guests": null,
    "price": {
      "minMinor": 5500,
      "medianMinor": 6500,
      "maxMinor": 9500
    },
    "modelVersions": {
      "utilization": "utilization/v1",
      "revenue": "revenue/v3"
    },
    "model": {
      "utilization": "v2",
      "revenue": "v3"
    }
  },
  "series": [
    {
      "venueId": "example-park",
      "period": {
        "grain": "day",
        "from": "2026-11-01",
        "to": "2026-11-01",
        "label": "2026-11-01"
      },
      "status": "complete",
      "slots": {
        "offered": 30,
        "completed": 30,
        "stale": 0,
        "open": 0
      },
      "supply": {
        "units": 600,
        "unitHours": 1200
      },
      "sold": {
        "low": 402,
        "mid": 418,
        "high": 431,
        "ci": 0.8,
        "grade": "A",
        "drivers": [
          {
            "factor": "stale-final-states",
            "share": 1
          }
        ]
      },
      "utilization": {
        "low": 0.67,
        "mid": 0.697,
        "high": 0.718,
        "ci": 0.8,
        "grade": "A",
        "drivers": [
          {
            "factor": "stale-final-states",
            "share": 1
          }
        ]
      },
      "coverage": 0.98,
      "leftCensoredUnits": 12,
      "revenue": {
        "low": 2540000,
        "mid": 2790000,
        "high": 3080000,
        "ci": 0.8,
        "grade": "B",
        "drivers": [
          {
            "factor": "mix-price",
            "share": 0.58
          },
          {
            "factor": "sold-share",
            "share": 0.42
          }
        ]
      },
      "revenueReason": null,
      "revPAUH": {
        "low": 181000,
        "mid": 199000,
        "high": 220000,
        "ci": 0.8,
        "grade": "B",
        "drivers": [
          {
            "factor": "mix-price",
            "share": 0.58
          },
          {
            "factor": "sold-share",
            "share": 0.42
          }
        ]
      },
      "guests": null,
      "price": {
        "minMinor": 5500,
        "medianMinor": 6500,
        "maxMinor": 9500
      },
      "modelVersions": {
        "utilization": "utilization/v1",
        "revenue": "revenue/v3"
      },
      "model": {
        "utilization": "v2",
        "revenue": "v3"
      }
    }
  ],
  "heatmap": {
    "rows": [
      "2026-11-01"
    ],
    "cols": [
      "18:00",
      "18:30"
    ],
    "cells": [
      [
        0.93,
        null
      ]
    ],
    "offered": [
      [
        true,
        true
      ]
    ],
    "sold": [
      [
        28,
        null
      ]
    ],
    "capacity": [
      [
        30,
        null
      ]
    ]
  },
  "forecast": {
    "venueId": "example-park",
    "date": "2026-11-02",
    "asOf": "2026-11-01T22:00:00.000Z",
    "status": "provisional",
    "method": "additive-pickup-v1",
    "bookedSoFar": {
      "units": 212,
      "share": 0.35
    },
    "sold": {
      "low": 371,
      "mid": 405,
      "high": 438,
      "ci": 0.8,
      "grade": "B",
      "drivers": []
    },
    "revenue": {
      "low": 2330000,
      "mid": 2640000,
      "high": 2990000,
      "ci": 0.8,
      "grade": "B",
      "drivers": []
    },
    "utilization": {
      "low": 0.62,
      "mid": 0.675,
      "high": 0.73,
      "ci": 0.8,
      "grade": "B",
      "drivers": []
    },
    "reason": null
  }
}

GET /v1/venues/{id}/timeline

How each slot of one service date sold down, poll by poll, and the booking pace curve. leftCensored counts units already gone at the first observation.

Parameters

  • id path, required Venue id.
  • date query Service date YYYY-MM-DD; defaults to yesterday on Pro, today on Investor (Chicago). On Pro, today or later is 403 plan_required (intraday).
Request · GET /v1/venues/{id}/timeline
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/venues/example-park/timeline?date=2026-11-01"
Example response, values illustrative · GET /v1/venues/{id}/timeline
{
  "date": "2026-11-01",
  "slots": [
    {
      "time": "18:00",
      "poolId": "jump",
      "capacity": 30,
      "leftCensored": 6,
      "points": [
        {
          "at": "2026-10-30T22:00:00.000Z",
          "unavailable": 6
        },
        {
          "at": "2026-11-01T22:55:00.000Z",
          "unavailable": 28
        }
      ],
      "finalStatus": "completed"
    }
  ],
  "curve": [
    {
      "leadHours": 48,
      "share": 0.21
    },
    {
      "leadHours": 0,
      "share": 0.83
    }
  ],
  "access": {
    "plan": "investor",
    "resolution": "exact",
    "window": null,
    "locked": []
  }
}

GET /v1/compare

Figures and series of 2–6 venues on one period and scale. An unknown id is 404 venue_not_found.

Parameters

  • ids query, required Comma-separated venue ids, 2 to 6.
  • grain, from, to query The period (see Overview).
Request · GET /v1/compare
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/compare?ids=example-park,another-venue&from=2026-11-01&to=2026-11-01"
Example response, values illustrative · GET /v1/compare
{
  "period": {
    "grain": "day",
    "from": "2026-11-01",
    "to": "2026-11-01"
  },
  "access": {
    "plan": "investor",
    "resolution": "exact",
    "window": null,
    "locked": []
  },
  "venues": [
    {
      "venue": {
        "id": "example-park",
        "name": "Example Trampoline Park",
        "brand": "Example",
        "neighborhood": "Uptown",
        "borough": "Dallas",
        "lat": 32.7987,
        "lng": -96.8018,
        "unitLabel": "admission",
        "unitsLabel": "admissions",
        "platform": "roller-haveablast",
        "studied": [
          "90-minute jump session"
        ],
        "listPrice": {
          "minor": 2999,
          "per": "admission",
          "source": "pricing-page"
        }
      },
      "figures": {
        "venueId": "example-park",
        "period": {
          "grain": "day",
          "from": "2026-11-01",
          "to": "2026-11-01",
          "label": "2026-11-01"
        },
        "status": "complete",
        "slots": {
          "offered": 30,
          "completed": 30,
          "stale": 0,
          "open": 0
        },
        "supply": {
          "units": 600,
          "unitHours": 1200
        },
        "sold": {
          "low": 402,
          "mid": 418,
          "high": 431,
          "ci": 0.8,
          "grade": "A",
          "drivers": [
            {
              "factor": "stale-final-states",
              "share": 1
            }
          ]
        },
        "utilization": {
          "low": 0.67,
          "mid": 0.697,
          "high": 0.718,
          "ci": 0.8,
          "grade": "A",
          "drivers": [
            {
              "factor": "stale-final-states",
              "share": 1
            }
          ]
        },
        "coverage": 0.98,
        "leftCensoredUnits": 12,
        "revenue": {
          "low": 2540000,
          "mid": 2790000,
          "high": 3080000,
          "ci": 0.8,
          "grade": "B",
          "drivers": [
            {
              "factor": "mix-price",
              "share": 0.58
            },
            {
              "factor": "sold-share",
              "share": 0.42
            }
          ]
        },
        "revenueReason": null,
        "revPAUH": {
          "low": 181000,
          "mid": 199000,
          "high": 220000,
          "ci": 0.8,
          "grade": "B",
          "drivers": [
            {
              "factor": "mix-price",
              "share": 0.58
            },
            {
              "factor": "sold-share",
              "share": 0.42
            }
          ]
        },
        "guests": null,
        "price": {
          "minMinor": 5500,
          "medianMinor": 6500,
          "maxMinor": 9500
        },
        "modelVersions": {
          "utilization": "utilization/v1",
          "revenue": "revenue/v3"
        },
        "model": {
          "utilization": "v2",
          "revenue": "v3"
        }
      },
      "series": [
        {
          "venueId": "example-park",
          "period": {
            "grain": "day",
            "from": "2026-11-01",
            "to": "2026-11-01",
            "label": "2026-11-01"
          },
          "status": "complete",
          "slots": {
            "offered": 30,
            "completed": 30,
            "stale": 0,
            "open": 0
          },
          "supply": {
            "units": 600,
            "unitHours": 1200
          },
          "sold": {
            "low": 402,
            "mid": 418,
            "high": 431,
            "ci": 0.8,
            "grade": "A",
            "drivers": [
              {
                "factor": "stale-final-states",
                "share": 1
              }
            ]
          },
          "utilization": {
            "low": 0.67,
            "mid": 0.697,
            "high": 0.718,
            "ci": 0.8,
            "grade": "A",
            "drivers": [
              {
                "factor": "stale-final-states",
                "share": 1
              }
            ]
          },
          "coverage": 0.98,
          "leftCensoredUnits": 12,
          "revenue": {
            "low": 2540000,
            "mid": 2790000,
            "high": 3080000,
            "ci": 0.8,
            "grade": "B",
            "drivers": [
              {
                "factor": "mix-price",
                "share": 0.58
              },
              {
                "factor": "sold-share",
                "share": 0.42
              }
            ]
          },
          "revenueReason": null,
          "revPAUH": {
            "low": 181000,
            "mid": 199000,
            "high": 220000,
            "ci": 0.8,
            "grade": "B",
            "drivers": [
              {
                "factor": "mix-price",
                "share": 0.58
              },
              {
                "factor": "sold-share",
                "share": 0.42
              }
            ]
          },
          "guests": null,
          "price": {
            "minMinor": 5500,
            "medianMinor": 6500,
            "maxMinor": 9500
          },
          "modelVersions": {
            "utilization": "utilization/v1",
            "revenue": "revenue/v3"
          },
          "model": {
            "utilization": "v2",
            "revenue": "v3"
          }
        }
      ]
    }
  ]
}

GET /v1/market

Market and borough revenue (the sum of venue estimates), unit-hour-weighted utilization and coverage. An estimate with nothing behind it is null, never zero.

Parameters

  • grain, from, to query The period (see Overview).
Request · GET /v1/market
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/market?from=2026-10-26&to=2026-11-01"
Example response, values illustrative · GET /v1/market
{
  "period": {
    "grain": "day",
    "from": "2026-10-26",
    "to": "2026-11-01"
  },
  "access": {
    "plan": "investor",
    "resolution": "exact",
    "window": null,
    "locked": []
  },
  "figures": {
    "revenue": {
      "low": 41200000,
      "mid": 48900000,
      "high": 58100000,
      "ci": 0.8,
      "grade": "B",
      "drivers": []
    },
    "utilization": {
      "low": 0.61,
      "mid": 0.64,
      "high": 0.67,
      "ci": 0.8,
      "grade": "A",
      "drivers": []
    },
    "coverage": {
      "venues": 13,
      "observed": 19
    }
  },
  "byBorough": [
    {
      "borough": "Manhattan",
      "revenue": {
        "low": 25800000,
        "mid": 31400000,
        "high": 38000000,
        "ci": 0.8,
        "grade": "B",
        "drivers": []
      },
      "utilization": {
        "low": 0.63,
        "mid": 0.66,
        "high": 0.69,
        "ci": 0.8,
        "grade": "A",
        "drivers": []
      },
      "coverage": {
        "venues": 11,
        "observed": 11
      }
    }
  ]
}

POST /v1/reports

Builds a CSV: venue, compare (2–12 venues) or market, by default the 30 days to yesterday. Up to 20 a day per user; the same request on the same day returns the existing report (200, reused: true), for 15 minutes only if it reaches today. Kept 7 days.

Parameters

  • kind body, required venue, compare or market.
  • venueIds body One for venue, 2–12 for compare, none for market.
  • grain, from, to body The period, never clamped: a day range over 92 days is 400 period_too_long.
Request · POST /v1/reports
curl -X POST -H "Authorization: Bearer $PARKCHECK_API_KEY" -H "Content-Type: application/json" \
  -d '{"kind":"market","grain":"day","from":"2026-10-24","to":"2026-11-01"}' \
  "https://api.trampolineparkdata.com/v1/reports"
Example response (201), values illustrative · POST /v1/reports
{
  "report": {
    "id": "rpt_8d1f0c",
    "kind": "market",
    "label": "Market",
    "grain": "day",
    "from": "2026-10-24",
    "to": "2026-11-01",
    "venueIds": [],
    "status": "ready",
    "bytes": 18342,
    "createdAt": "2026-11-02T14:03:11.000Z",
    "expiresAt": "2026-11-09T14:03:11.000Z"
  }
}

GET /v1/reports

Your accounts’ reports, newest first (up to 100), and today’s quota.

Request · GET /v1/reports
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" "https://api.trampolineparkdata.com/v1/reports"
Example response, values illustrative · GET /v1/reports
{
  "reports": [
    {
      "id": "rpt_8d1f0c",
      "kind": "market",
      "label": "Market",
      "grain": "day",
      "from": "2026-10-24",
      "to": "2026-11-01",
      "venueIds": [],
      "status": "ready",
      "bytes": 18342,
      "createdAt": "2026-11-02T14:03:11.000Z",
      "expiresAt": "2026-11-09T14:03:11.000Z"
    }
  ],
  "quota": {
    "used": 1,
    "limit": 20
  }
}

GET /v1/reports/{id}/download

The report as text/csv (UTF-8 with BOM, CRLF), named parkcheck-<kind>-<from>-<to>.csv. Money in USD with cents; unknown values empty, never 0. Expired: 410 report_expired.

Parameters

  • id path, required Report id from /v1/reports.
Request · GET /v1/reports/{id}/download
curl -H "Authorization: Bearer $PARKCHECK_API_KEY" -OJ "https://api.trampolineparkdata.com/v1/reports/rpt_8d1f0c/download"
Example response, values illustrative · GET /v1/reports/{id}/download
venue_id,name,period_from,period_to,status,supply_units,sold_low,sold_mid,sold_high,utilization_low,utilization_mid,utilization_high,revenue_low,revenue_mid,revenue_high,revpauh_mid,price_min,price_median,price_max,coverage,grade

Rate limits

Rate limits
CallerCountedPer dayPer minute
Anonymous, public routesper IP (an IPv6 /48 counts as one)1,00060
Free, signed inper user300—
Pro, signed inper user3,000—
Investor, signed inper user10,000—
Investor API keyper account a day, per key a minute10,00060
Investor CSV reportsnew reports per user20—

Days are Chicago days. /v1 responses carry RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds) for the daily quota. Over a limit: 429 with Retry-After (seconds).

Plans and access

Every /v1 data response carries access: the plan, the resolution (exact or band), the readable date window (null = all) and the locked features. A route outside the plan is 403 plan_required, with feature and requiredPlan.

Access by plan
RouteFreeProInvestor
GET /v1/venues, /v1/venues/{id}, /v1/marketFull shapes, one day (2026-11-01)Full shapes, every day since 2026-11-01Same as Pro
GET /v1/venues/{id}/timelineplan_required✓✓
GET /v1/compareplan_required✓ (2–6 venues)✓ (2–6 venues)
POST /v1/reports, GET /v1/reports, downloadplan_requiredplan_required✓ (20 a day, up to 12 venues)
API keys on /v1/*——✓ (5 keys)

Free (signed in, no key): The same shapes as Pro, for one day only: whatever period is asked, the response covers 2026-11-01 (access.window), with history, forecast and intraday locked, so there is no forecast, no run rate and no other day.

A Free envelope
{
  "access": {
    "plan": "free",
    "resolution": "exact",
    "window": {
      "from": "2026-11-01",
      "to": "2026-11-01"
    },
    "locked": [
      "history",
      "forecast",
      "intraday"
    ]
  }
}

Errors

One envelope, with a matching HTTP status. Branch on error.code; message is for people.

Error envelope
{
  "error": {
    "code": "plan_required",
    "message": "Compare needs the Pro plan",
    "feature": "compare",
    "requiredPlan": "pro"
  }
}
Error codes
StatusCodes
400invalid_request, invalid_json, invalid_period, period_too_long, too_many_venues
401invalid_api_key, unauthenticated
403plan_required (with feature and requiredPlan), forbidden, no_account
404not_found, venue_not_found, report_not_found, market_not_found
410report_expired
415unsupported_media_type: a POST or DELETE without Content-Type: application/json
429quota_exceeded, rate_limited, report_quota_exceeded
503busy (retry shortly)

Licence

The example day on the home page and in its Markdown twin is CC BY 4.0: reuse it, commercially too, crediting “Trampoline Park Data (trampolineparkdata.com)”. The public endpoints carry no venue figures.

App, /v1 and CSV data are for the subscribing account’s internal use; redistribution needs a separate agreement (talk to us).

Get an API key

Investor, an annual agreement (contact us). Write to [email protected] with your company and the data you need.

OpenAPI 3.1 description · llms.txt · Pricing · Methodology · Talk to us about Investor