Skip to content
MarketCalendars.com
Sign up

API documentation

REST API v2: trading hours, holidays and settlement days as JSON over HTTPS

Rate limits and quotas

Each plan has a quota of requests per period and a burst limit per minute. Each successful (2xx) response counts as one request, whatever the endpoint. Errors, 429 responses and /openapi.json are not counted.

PlanRequestsBurst limitWhen it resets
Free1,000 in total30 per minuteNever
Starter1,000 per month60 per minuteMonthly, on your billing date
Pro10,000 per month300 per minuteMonthly, on your billing date
EnterpriseCustomCustomMonthly, on your billing date

When you reach a limit

  • Quota used up: 429 with type quota-exceeded. Requests resume when the next period starts, or straight away after an upgrade. There is no overage billing
  • Burst limit reached: 429 with type rate-limited and aRetry-After header. The burst limit is applied per key and per Cloudflare location, so treat it as approximate

Headers

Every counted response carries the state of your quota:

HeaderExampleMeaning
RateLimit-Policy"quota";q=1000;w=2592000Your quota and its window in seconds (IETF draft format)
RateLimit"quota";r=874;t=1209600Requests remaining and seconds until the quota resets
X-Quota-Remaining874Requests remaining in this period

The free trial has no reset, so its headers omit the window and reset time.

Caching

Calendar responses change at most once a week, when we refresh the data, so cache them on your side. A year of holidays for one market is one request. Status responses are marked max-age=5; other responses max-age=60.