Docs navigation: Quotas and limitsQuotas by plan
Operations

Quotas and limits

Every plan has a monthly quota. Only requests that return a result are counted.

Quotas by plan

#
PlanRequests per monthActive keysWebhooks
Free5003no
Starter25,0005no
Pro250,00010yes, up to 10
Enterpriseby arrangement, up to 5,000,00025yes, up to 10

All plans include every dataset and all four access methods. Prices are on the pricing page.

What counts and what is free

#
CallCounts
Querying a dataset with a result, via API, SDK, CLI or MCPyes, one request
History of a dataset, including as CSVyes, one request
A list as CSVyes, one request
A call that errors (400, 401, 404, 429, 500)no
Catalog, changelog, OpenAPI descriptionno
MCP: initialize, ping, tools/listno
Webhook messages to your serverno, only fetching the new value counts

Checking your usage

#

Every response with a valid key carries two headers:

Header
X-Kontingent-Limit: 1000
X-Kontingent-Verbraucht: 12

In the MCP server, the same state is in the result under _meta. In your account you see the month's usage, and for each key when it was last used.

Monthly reset

#

The quota applies per calendar month and starts over on the first at 00:00 German time. Unused requests expire and do not carry over.

When your quota is used up

#

Further requests get status 429 with the code kontingent_erreicht until the first of the month. No extra costs arise, and nothing is upgraded automatically. If you switch to a larger plan in your account, the new quota applies immediately.

On Starter, Pro and Enterprise there is a buffer of 10% above the quota: the API keeps counting, sends an email when you reach the quota and only responds with 429 after the buffer. If you cancel or move to a smaller plan, the previous quota applies until the end of the month.

Other limits

#
WhatLimit
Webhooks per account10, from the Pro plan
Your server's response time to a webhook8 seconds
Delivery attempts per webhook message5, one per day
Sign-in links3 per email address in 10 minutes
Messages through the contact form5 per hour
Public holidays and working daysYears 2015 to 2035
TablesEffective dates from January 1, 2015

Saving requests

#
  • Cache responses for one day. Most values only change on January 1 or July 1. The API tells you how long itself: every dataset response carries Cache-Control: max-age=… until the next midnight German time.
  • After that, ask again with the stored ETag in the If-None-Match header. If nothing changed, you get status 304 with no body back, and it does not count against your quota. The official SDKs do this automatically, see JavaScript SDK and Python SDK.
  • Import the history once and pick up changes by webhook, instead of polling regularly, or fetch the whole table inventory in a single request with /export.
  • Fetch public holidays once per year and state, and store them locally.
  • In web applications, call the API from the server and keep the result in your hosting's cache, see Using it in Next.js.

We answer questions about higher quotas through the contact form. Quellenkontor bills Business contracts by invoice.

Something missing or unclear? Write to us and we will extend the docs.