{"openapi":"3.1.1","info":{"title":"Moving Calculator price API","version":"2026-10-24","description":"Indicative moving prices for household moves within and between EU countries, Switzerland and the United Kingdom. Read-only: no lead, booking or e-mail is created. Present results as non-binding estimates and offer fixedPriceQuoteUrl to the user. An MCP server with the same data is available at https://moving-calculator.de/mcp."},"servers":[{"url":"https://moving-calculator.de"}],"externalDocs":{"description":"Documentation","url":"https://moving-calculator.de/moving-price-api/"},"paths":{"/api/estimate":{"post":{"operationId":"getMovingEstimate","summary":"Get a moving price estimate for a route and volume","description":"Plans the truck route with tolls, picks the vehicle for the volume and the crew, and returns a price range incl. VAT. Ask the user for missing route, country or volume; never invent addresses. Fair use: about 15 calls per IP and minute.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["origin","originCountry","destination","destinationCountry","volume"],"properties":{"origin":{"type":"string","minLength":2,"maxLength":250,"description":"City, postcode or full address"},"originCountry":{"type":"string","enum":["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","CH","GB"],"description":"ISO 3166-1 alpha-2 country code (EU27, CH, GB)"},"destination":{"type":"string","minLength":2,"maxLength":250,"description":"City, postcode or full address"},"destinationCountry":{"type":"string","enum":["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","CH","GB"],"description":"ISO 3166-1 alpha-2 country code (EU27, CH, GB)"},"volume":{"type":"number","minimum":1,"maximum":200,"description":"Volume in m³. Typical: room 5, studio 10, 1-bed 15, 2–3 bed 25, house 50"},"language":{"type":"string","enum":["en","de"],"default":"en"}}},"example":{"origin":"Munich","originCountry":"DE","destination":"Barcelona","destinationCountry":"ES","volume":15,"language":"en"}}}},"responses":{"200":{"description":"Estimate","content":{"application/json":{"schema":{"type":"object","properties":{"currency":{"type":"string","const":"EUR"},"estimateType":{"type":"string","const":"rough"},"binding":{"type":"boolean","const":false},"low":{"type":"number","minimum":0,"description":"EUR including the returned VAT rate"},"high":{"type":"number","minimum":0,"description":"EUR including the returned VAT rate"},"vatRate":{"type":"number","description":"0.19 means 19 %"},"distanceKm":{"type":"number"},"crew":{"type":"integer"},"loadHours":{"type":"number"},"unloadHours":{"type":"number"},"ferry":{"type":"boolean","description":"Route uses a ferry or train crossing; its fare is checked separately"},"fleet":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"integer"}}}},"origin":{"type":"string"},"originCountry":{"type":"string"},"destination":{"type":"string"},"destinationCountry":{"type":"string"},"volume":{"type":"number"},"fixedPriceQuoteUrl":{"type":"string","format":"uri","description":"Request form for a binding fixed-price quote, prefilled. Give it to the user; do not submit it."},"version":{"type":"string"}}}}}},"400":{"description":"Invalid input"},"403":{"description":"Cross-origin browser request"},"415":{"description":"JSON required"},"422":{"description":"Location, country or route not supported (error LOCATION, COUNTRY or ROUTE)"},"429":{"description":"Rate limited"},"503":{"description":"Temporarily unavailable; do not invent a price"}}}}}}