OTJobs.au — Public Read API v1

Free, read-only, no authentication. Returns only currently live occupational therapy job listings. Open CORS for browser and agent clients. Responses are cached for 60 seconds; send If-None-Match with a previously returned ETag to get a 304. Rate limited per IP; exceeding the limit returns 429 with Retry-After. JSON responses are UTF-8; timestamps are ISO 8601.

Rate limits

Every response advertises the current one-minute window: X-RateLimit-Limit (requests allowed), X-RateLimit-Remaining (requests left), and X-RateLimit-Reset (unix epoch seconds when the window ends). Use these to self-throttle before you are blocked; OPTIONS preflights do not consume quota. Because successful responses are cacheable, a response served from a shared cache may report another request's snapshot — treat the values as advisory and always honour a 429.

Terms

Data is provided as-is. You may use it to power search, agents, and aggregations that link back to otjobs.au as the source. Please do not re-host the listings as a competing directory. Listing content belongs to the hiring organisations.

Endpoints

Every listing includes job_posting_jsonld: schema.org JobPosting structured data, identical to the markup embedded in the HTML detail pages. Each listing also carries date_posted and valid_through.

Examples

curl "https://otjobs.au/api/v1/meta"
curl "https://otjobs.au/api/v1/jobs?state=nsw&per_page=5"
curl "https://otjobs.au/api/v1/jobs?category=paediatric&state=vic"
curl "https://otjobs.au/api/v1/jobs?q=newcastle&updated_since=2026-10-01"
curl "https://otjobs.au/api/v1/jobs/123"