Public API for AI agents and developers

Ask what a parcel costs to forward from Hungary, where we ship, and what we will not carry — as JSON, without an API key, an account, or a page to scrape.

Try it now

curl "https://shipify.hu/api/quote?country=DE&weight_kg=2"

Endpoints

All GET, all returning JSON. HEAD and OPTIONS work too.

Endpoint What it returns
/api/info Service descriptor — What Shipify is, how a parcel must be addressed, and where every other endpoint lives. Start here.
/api/countries Destinations and starting prices — Every country served, its starting price, EU status and typical transit time.
/api/services Extras and standing fees — Optional per-package extras with stable codes, plus the intake and consolidation fees.
/api/quote Price a forwarding job — Full breakdown for a real shipment: weight curve, consolidation, extras, total.
/api/restrictions Prohibited goods and limits — What may not be shipped, what needs prior approval, and the size and weight limits.
/api/signup-link Hand-off link — Builds a pre-filled sign-up URL to give the customer. Creates nothing on its own.

A real quote, not a starting price

Three parcels of 2 kg each to Germany, insured and marked fragile. They travel as one consignment, so shipping is priced on the combined weight. Add length_cm, width_cm and height_cm for a parcel that is large for its weight: couriers charge the greater of actual and volumetric weight, and without the box size the quote assumes the parcel is not bulky.

curl "https://shipify.hu/api/quote?country=DE&weight_kg=2&packages=3&services=insurance,fragile-label"

{
  "currency": "EUR",
  "destination": { "code": "DE", "name_en": "Germany", "eu": true, "transit_business_days": "2-4" },
  "actual_weight_kg": 6,
  "volumetric_weight_kg": null,
  "chargeable_weight_kg": 6,
  "pricing_basis": "weight_curve",
  "breakdown": {
    "intake_fee_eur": 7.5,
    "shipping_eur": 43.74,
    "consolidation_eur": 5,
    "services_eur": 10.5
  },
  "total_eur": 66.74
}

There is no write API, on purpose

You cannot create an account or book a forwarding through this API, and that is a decision rather than a gap. Signing up carries the acceptance of our Terms and the customs mandate that lets us declare a parcel on someone's behalf. Both have to come from the person, not from software acting for them.

There is a practical reason too: parcel forwarding is a standard vector for card fraud, and effortless automated sign-up is precisely what makes it work. The identity check belongs at the point where a parcel leaves the warehouse.

What an assistant can do instead

Prepare the sign-up and hand it over. Call /api/signup-link with whatever details you already hold, then show the customer the link it returns. They open a form with their data filled in, and do the parts that must be theirs: accept the Terms, choose a password, clear the security check, confirm their email.

curl "https://shipify.hu/api/signup-link\
?first_name=Anna&email=anna%40example.com"

The endpoint creates no account and stores nothing. Please do not submit the form, solve the security check, or read the confirmation email on a customer's behalf.

Good to know

Do I need an API key?
No. Every endpoint is public, unauthenticated and read-only, and cross-origin requests are allowed from any origin. There is nothing to register for and no rate-limit tier to buy.
Why is there no endpoint to create an account or book a forwarding?
Signing up carries the Terms of Service acceptance and the customs mandate, which have to come from the customer themselves, and frictionless automated sign-up is exactly what parcel reshipping fraud relies on. An assistant can prepare everything and hand over a link; the person completes it.
How fresh are the prices?
They come from the same live pricing data the on-page calculator reads, cached for five minutes. A rate change or a newly opened destination appears without any deploy on our side.
Is the quote binding?
It is an accurate estimate from published rates. The binding price is calculated when the parcel is forwarded, from the weight and dimensions measured at the warehouse, and excludes customs duty and destination-country VAT. A box over the package limits (longest side 175 cm, girth 300 cm) gets no price at all — manual_quote_required is true and the forwarding request waits for an individual quote — and a long box (over 150 cm, or a middle side over 76 cm) includes a flat surcharge.
Can I read the site itself as structured text?
Yes. Request any page URL with the header Accept: text/markdown and you get a clean markdown version instead of HTML. The full index is at /llms.txt.

Questions, or something you need that is missing? Write to hello@shipify.hu.