TERMMINDER / DATA API

School calendars.
Built on evidence.

Term dates and school holidays across 13 countries, with an official source behind every date. One read-only JSON API for your next product.

Get a free API key Explore the API documentation →

13
countries with eligible data
202
verified jurisdictions
23,262
directory schools in covered areas

Coverage counts are live. School directory coverage does not mean school-specific date verification. Commercial coverage can differ from the public site.

Know where every date came from

Evidence included

Source title, original URL, licence, verification method, review time and calendar version travel with every period.

Honest unknowns

A date window stays a window. “Set by your school” stays visible. An unknown return date stays unknown. End dates are inclusive.

A signal for demand

Find which regions are on holiday on a date, with a share weighted by directory schools where coverage permits, or by jurisdictions.

For products that plan around people

  • Travel and holiday pricing
  • Retail and hospitality demand planning
  • Staff rotas and HR tools
  • Childcare and holiday clubs
  • Family and calendar apps

Your first request

Keep your key on your server. Start with countries, then use a jurisdiction ID from the search endpoint.

curl

curl https://www.termminder.com/api/v1/jurisdictions?country=uk \
  -H "Authorization: Bearer $TERMMINDER_API_KEY"

Python (Pro and above)

import os
import httpx

response = httpx.get(
    "https://www.termminder.com/api/v1/holidays/on/2026-10-28",
    params={"country": "uk"},
    headers={"X-API-Key": os.environ["TERMMINDER_API_KEY"]},
)
response.raise_for_status()
print(response.json())

JavaScript (server-side)

const response = await fetch(
  "https://www.termminder.com/api/v1/countries",
  { headers: { Authorization: `Bearer ${process.env.TERMMINDER_API_KEY}` } }
);
if (!response.ok) throw new Error(`API returned ${response.status}`);
console.log(await response.json());

Start small. Build something useful.

Prices in pounds sterling. No VAT is charged. Monthly or annual subscriptions; cancel renewal any time.

Free

£0

100 calls/month · UK · evaluation and non-commercial use
Per-date provenance

Get your free key →

Pro

£99/month

25,000 calls/month
All countries
Per-date provenance
Daily school-holiday share signal

Business

£249/month

250,000 calls/month
All countries
Bulk country export with annual billing
Daily school-holiday share signal

By subscribing you agree to the API terms. Attribution is required on every plan.

Questions before you build

How accurate are the dates?

Published dates are checked against official sources. Regional calendars may vary by school. We expose verification and uncertainty so you can show the right qualifications; always check the school for consequential decisions.

How often are they updated?

Sources are normally checked every 14 days, and more often during publication periods. Changes pass publication checks before they reach the API. There is no guarantee that a newly changed source is reflected immediately.

What attribution do I need?

Credit TermMinder and retain the source attribution and links returned by the API, including any source-licence attribution requirements.

Which licences are included?

By default we include OGL v3, CC BY 4.0, CC0 and official facts with attribution. Other licences are excluded and counted. The response states the licence for every source. Paid plans allow commercial use inside your products; Free is for evaluation and non-commercial use; raw-data resale or redistribution needs a Data licence.

How do I cancel?

Use the billing portal below. You can cancel renewal at any time; paid access continues until the subscription ends.

What if I reach my quota?

The API returns HTTP 429 and the time until the next UTC monthly reset. There are no automatic overage charges. Upgrade for a higher quota.

Manage your subscription