Live REST API · free tier, no signup

Turn messy business hours into structured data

Your listings say "Mon-Fri 9-5, Sat 10-2, closed Sun". Your database needs intervals, your site needs schema.org JSON-LD, and your map needs OSM opening_hours. One POST does all three — deterministic, no LLM, no hallucinated hours.

Try it right now

Click "Parse hours" to see the JSON response.

What you get back

FieldUse it for
daysPer-weekday open/close intervals in minutes — drop straight into your DB or booking logic.
schema_orgopeningHoursSpecification JSON-LD. Paste into your page and Google can show hours in the rich result.
osm_opening_hoursCanonical OpenStreetMap syntax for map/POI pipelines.
confidence + unparsed_segmentsKnow exactly which rows need a human. No silent wrong answers.

API

curl -X POST https://smeltworks.com/openhours/v1/parse \
  -H 'content-type: application/json' \
  -d '{"text":"Mon-Fri 9am-5pm, Sat 10-2, closed Sunday"}'

POST /openhours/v1/parse — one string → structured hours
POST /openhours/v1/open-now — add timezone, get open/closed + next transition
POST /openhours/v1/bulk — up to 500 strings per call
GET /openhours/pricing · GET /openhours/health · interactive docs at /docs

Send your key as the X-API-Key header. Anonymous use is free up to 100 requests/day.

Pricing

PlanIncludedPrice
Free100 requests/day, no signup$0
Starter10,000 requests/month, API key$9/mo
Growth100,000 requests/month, bulk endpoint, priority email$29/mo
Subscribe — Starter $9/mo Subscribe — Growth $29/mo

After checkout, email your Stripe receipt number to [email protected] and your API key is issued by reply. Cancel any time from the Stripe receipt link.

Free browser tools — no signup

Same parser, one output format each. Handy for a one-off conversion.

Why not just regex it yourself

Because real hours strings contain "Tues thru Sat", "11:30a-2p & 5-10", "closed Mon", "open 24 hours", en-dashes, split shifts, and midnight wraps. This parser handles those and, critically, tells you when it didn't understand something instead of guessing. 18 regression tests cover the messy cases.