Calculate Business Days Across Europe, Holidays, Regions, Deadlines
The problem with business day calculations
Calculating business days sounds simple until you consider:
- Public holidays vary by country: France has 11, Germany has 9-13 (depends on the state), UK has 8
- Regional holidays: Alsace-Moselle in France has 2 extra holidays. Bavaria in Germany has up to 4 extra. Each Spanish region has different ones.
- Weekends differ: most of Europe uses Saturday-Sunday, but some industries use different conventions
- Moving holidays: Easter, Ascension, Whit Monday, these change every year and affect half the countries in Europe
If you're calculating payment deadlines, delivery dates, or SLA timelines across multiple EU countries, you need a reliable source.
Quick example
How many business days between two dates in France?
import httpx
response = httpx.get(
"https://frenchbusinessapi.com/business-days/count",
params={
"country": "FR",
"start_date": "2026-03-01",
"end_date": "2026-03-31"
},
headers={"X-API-Key": "your_api_key"}
)
data = response.json()
print(f"{data['business_days']} working days")
print(f"Holidays: {data['holidays']}")
Adding business days to a date
"This invoice is due in 30 business days", what calendar date is that?
response = httpx.get(
"https://frenchbusinessapi.com/business-days/add",
params={
"country": "FR",
"start_date": "2026-03-15",
"days": 30
},
headers={"X-API-Key": "your_api_key"}
)
print(response.json()["result_date"]) # The calendar date 30 business days later
The calculation skips weekends and all public holidays for the specified country.
Is this day a business day?
Quick check for a specific date:
response = httpx.get(
"https://frenchbusinessapi.com/business-days/is-business-day",
params={"country": "FR", "date": "2026-05-01"},
headers={"X-API-Key": "your_api_key"}
)
data = response.json()
print(data["is_business_day"]) # false, May 1st is Labour Day
print(data["holiday_name"]) # "Fête du Travail"
Listing holidays for a country and year
Get all public holidays for planning:
response = httpx.get(
"https://frenchbusinessapi.com/business-days/holidays",
params={"country": "FR", "year": 2026},
headers={"X-API-Key": "your_api_key"}
)
for h in response.json()["holidays"]:
print(f"{h['date']}, {h['name']}")
12 countries supported
The API covers public holidays and business day calculations for:
- Western Europe: France, Germany, Belgium, Netherlands, Luxembourg
- Southern Europe: Spain, Italy, Portugal
- Northern Europe: UK, Ireland
- Central Europe: Austria, Switzerland
Each country includes national holidays and, where applicable, regional variations.
Regional holidays
This is where most business day libraries fail. The API handles regional specifics:
France
- Alsace-Moselle (departments 57, 67, 68): Good Friday and St. Stephen's Day (December 26) are additional holidays
- DOM-TOM: each overseas territory has specific holidays (abolition of slavery, etc.)
response = httpx.get(
"https://frenchbusinessapi.com/business-days/holidays",
params={"country": "FR", "year": 2026, "region": "alsace-moselle"},
headers={"X-API-Key": "your_api_key"}
)
# Returns 13 holidays instead of 11
Germany
Each of the 16 Bundesländer has different holidays. Bavaria has the most (13), while Berlin and Hamburg have the fewest (9). The API handles all 16 states.
UK
England, Scotland, Wales, and Northern Ireland each have slightly different bank holidays. The API supports all four regions.
Use cases
Payment deadlines
French law sets payment terms at 30 or 60 days from invoice date. But "30 days" means 30 calendar days. If the deadline falls on a non-business day, it extends to the next business day. The API handles this:
# Invoice dated March 15, payment terms: 30 days
response = httpx.get(
"https://frenchbusinessapi.com/business-days/add",
params={"country": "FR", "start_date": "2026-03-15", "days": 30, "calendar_days": True},
headers={"X-API-Key": "your_api_key"}
)
# If day 30 falls on a weekend/holiday, returns the next business day
SLA calculations
"We guarantee a response within 5 business days." The API tells you exactly which calendar date that is, accounting for the customer's country holidays.
Delivery estimates
"Shipping takes 3-5 business days to Germany." Calculate the expected delivery window based on German holidays, not French ones.
Multi-country payroll
If you have employees in multiple EU countries, each country's payday might differ when holidays are involved. Calculate the correct pay dates for each country.
Computing Easter
Most European public holidays are fixed dates (January 1, May 1, December 25). But several depend on Easter, which moves every year:
- Easter Monday (day after Easter)
- Ascension (Easter + 39 days)
- Whit Monday (Easter + 50 days)
- Good Friday (Easter - 2 days, in some countries)
The API uses the computus algorithm to calculate Easter for any year and derives all dependent holidays automatically.
Next steps
- Get your free API key, 100 requests/day
- API documentation
- Related: French company lookup, Validate EU VAT, SEPA payments
Ready to build for Europe?
One API for company lookup, VAT validation, IBAN verification, SEPA payments, and more.
Get your API key