{"openapi":"3.1.0","info":{"title":"Off the Floor jobs API","version":"1.0.0","summary":"Free, read-only nurse job data: the free preview listings in full, and counts for the rest.","description":"Our public API and MCP endpoint are free to use, including inside commercial AI tools and assistants, with attribution: cite Off the Floor (offthefloornurse.com) and link back to the listing or the site. No sign-up, no key. About 60 requests a minute per IP. No warranty.\n\nOnly the free preview listings are returned in full. A listing outside it is counted, never described, and no apply link is returned. Off the Floor (offthefloornurse.com). Free to use with a link back to the source_url.\n\nDocs: https://offthefloornurse.com/developers","contact":{"name":"Off the Floor","email":"ryan@sarvixo.co","url":"https://offthefloornurse.com/developers"}},"servers":[{"url":"https://offthefloornurse.com"}],"tags":[{"name":"Jobs"},{"name":"Spec"}],"paths":{"/api/v1/jobs":{"get":{"operationId":"search_jobs","summary":"Search nurse jobs","description":"Search remote, hybrid and non-bedside nurse jobs on Off the Floor (https://offthefloornurse.com). Filter by role family, US state, fully remote and license. Returns counts for every match (total_matching, free_preview_matching, locked_matching) and the free preview listings that match, in full: title, employer, posted pay, work mode, location, states and a link to the listing page. Listings outside the free preview are counted only; a plan on the site shows their employer, pay and apply link. Data is re-read from employers' own career sites (Workday, Greenhouse, Lever, Ashby) when the board is rebuilt; each result gives data_updated_at.\n\nThe MCP tool of the same name returns the same object as `data`.","tags":["Jobs"],"parameters":[{"name":"role","in":"query","required":false,"description":"Role family. One of: utilization-review (Utilization review), case-management (Case management), telehealth (Telehealth), triage (Phone triage), documentation (Documentation and coding), quality (Quality), informatics (Informatics), education (Education), other (Other off-the-floor).","schema":{"type":"string","enum":["utilization-review","case-management","telehealth","triage","documentation","quality","informatics","education","other"]}},{"name":"state","in":"query","required":false,"description":"A US state as a 2-letter code (\"TX\") or full name (\"Texas\"), any case. Matches listings that name the state, plus remote listings open across the US.","schema":{"type":"string","minLength":2,"maxLength":40}},{"name":"remote_only","in":"query","required":false,"description":"Only fully remote listings (work mode remote). Default false.","schema":{"default":false,"type":"boolean"}},{"name":"license","in":"query","required":false,"description":"License the listing accepts: RN, LPN (LPN/LVN) or NP.","schema":{"type":"string","enum":["RN","LPN","NP"]}},{"name":"limit","in":"query","required":false,"description":"How many free preview listings to return, 1 to 20. Default 10. Counts always cover every match.","schema":{"default":10,"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"The result, in the API envelope.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SearchJobsResult"},"meta":{"$ref":"#/components/schemas/Meta"},"errors":{"type":"null"}},"required":["data","meta","errors"],"additionalProperties":false}}}},"400":{"description":"Invalid input. Every problem is listed at once, each with its parameter in `field`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over about 60 requests a minute per IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until the window ends."}}},"500":{"description":"Something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/roles":{"get":{"operationId":"list_roles","summary":"List nurse job roles","description":"List the role families on Off the Floor (https://offthefloornurse.com) with how many listings each has and how many are fully remote, plus listing counts by license (RN, LPN, NP) and by work mode. Counts only, from the board's current data file. Data is re-read from employers' own career sites (Workday, Greenhouse, Lever, Ashby) when the board is rebuilt; each result gives data_updated_at.\n\nThe MCP tool of the same name returns the same object as `data`.","tags":["Jobs"],"parameters":[],"responses":{"200":{"description":"The result, in the API envelope.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RolesResult"},"meta":{"$ref":"#/components/schemas/Meta"},"errors":{"type":"null"}},"required":["data","meta","errors"],"additionalProperties":false}}}},"429":{"description":"Over about 60 requests a minute per IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until the window ends."}}},"500":{"description":"Something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/employers":{"get":{"operationId":"employer_counts","summary":"Employers hiring nurses","description":"Which employers have nurse jobs on Off the Floor (https://offthefloornurse.com) and how many open listings each has, optionally for one US state. Returns employer names with counts, and a link to the employer's page on the site where there is one. Names and counts only: no titles, pay or links to listings. Data is re-read from employers' own career sites (Workday, Greenhouse, Lever, Ashby) when the board is rebuilt; each result gives data_updated_at.\n\nThe MCP tool of the same name returns the same object as `data`.","tags":["Jobs"],"parameters":[{"name":"state","in":"query","required":false,"description":"A US state as a 2-letter code (\"TX\") or full name (\"Texas\"), any case. Matches listings that name the state, plus remote listings open across the US.","schema":{"type":"string","minLength":2,"maxLength":40}}],"responses":{"200":{"description":"The result, in the API envelope.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmployersResult"},"meta":{"$ref":"#/components/schemas/Meta"},"errors":{"type":"null"}},"required":["data","meta","errors"],"additionalProperties":false}}}},"400":{"description":"Invalid input. Every problem is listed at once, each with its parameter in `field`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over about 60 requests a minute per IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until the window ends."}}},"500":{"description":"Something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/board":{"get":{"operationId":"job_board_info","summary":"About Off the Floor","description":"About Off the Floor (https://offthefloornurse.com): what the job board is, where its data comes from, totals (listings, employers, remote, hybrid, listings with posted pay, free preview size), what is free and what a plan adds, the plan prices and refund rule as the pricing page prints them, and the links to the developer docs, MCP URL and OpenAPI spec. Data is re-read from employers' own career sites (Workday, Greenhouse, Lever, Ashby) when the board is rebuilt; each result gives data_updated_at.\n\nThe MCP tool of the same name returns the same object as `data`.","tags":["Jobs"],"parameters":[],"responses":{"200":{"description":"The result, in the API envelope.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BoardInfoResult"},"meta":{"$ref":"#/components/schemas/Meta"},"errors":{"type":"null"}},"required":["data","meta","errors"],"additionalProperties":false}}}},"429":{"description":"Over about 60 requests a minute per IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until the window ends."}}},"500":{"description":"Something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/openapi.json":{"get":{"operationId":"openapi","summary":"This document","tags":["Spec"],"responses":{"200":{"description":"The OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Over about 60 requests a minute per IP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}},"components":{"schemas":{"Meta":{"type":"object","properties":{"api_version":{"type":"string"},"docs_url":{"type":"string"}},"required":["api_version","docs_url"],"additionalProperties":false},"Error":{"type":"object","properties":{"code":{"type":"string","enum":["VALIDATION_ERROR","NOT_FOUND","RATE_LIMITED","METHOD_NOT_ALLOWED","INTERNAL_ERROR"]},"message":{"type":"string"},"field":{"type":"string","description":"The query parameter at fault, for validation errors."}},"required":["code","message"],"additionalProperties":false},"ErrorEnvelope":{"type":"object","properties":{"data":{"type":"null"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}},"required":["data","errors"],"additionalProperties":false},"Pay":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"unit":{"type":"string","enum":["hour","year"]},"qualifier":{"anyOf":[{"type":"string","enum":["up-to","from"]},{"type":"null"}]}},"required":["min","max","unit","qualifier"],"additionalProperties":false},"AgentJob":{"type":"object","properties":{"title":{"type":"string"},"employer":{"type":"string"},"role":{"type":"string","description":"Role family id."},"role_label":{"type":"string"},"work_mode":{"type":"string","enum":["remote","hybrid","field","onsite"]},"location":{"type":"string"},"states":{"type":"array","items":{"type":"string"}},"nationwide":{"type":"boolean"},"pay":{"anyOf":[{"$ref":"#/components/schemas/Pay"},{"type":"null"}]},"pay_text":{"anyOf":[{"type":"string","description":"Pay as the site prints it, for example \"$38-$52/hr\"."},{"type":"null"}]},"posted_at":{"type":"string","description":"YYYY-MM-DD."},"url":{"type":"string","description":"The listing's page on the site."},"licenses":{"type":"array","items":{"type":"string","enum":["RN","LPN","NP"]}}},"required":["title","employer","role","role_label","work_mode","location","states","nationwide","pay","pay_text","posted_at","url","licenses"],"additionalProperties":false},"SearchJobsResult":{"type":"object","properties":{"query":{"type":"object","properties":{"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"remote_only":{"type":"boolean"},"license":{"anyOf":[{"type":"string"},{"type":"null"}]},"limit":{"type":"integer"}},"required":["role","state","remote_only","license","limit"],"additionalProperties":false},"total_matching":{"type":"integer","description":"Every listing that matches, free preview or not."},"free_preview_matching":{"type":"integer"},"locked_matching":{"type":"integer","description":"Matching listings outside the free preview. Counted, never described."},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/AgentJob"}},"locked_note":{"type":"string"},"browse_url":{"type":"string"},"source_url":{"type":"string","description":"Most relevant page on the site. Link to it when you use this data."},"attribution":{"type":"string","description":"Credit line to show."},"data_updated_at":{"type":"string","description":"ISO time the board data was built."}},"required":["query","total_matching","free_preview_matching","locked_matching","jobs","locked_note","browse_url","source_url","attribution","data_updated_at"],"additionalProperties":false},"RolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"listings":{"type":"integer"},"remote_listings":{"type":"integer"},"url":{"type":"string"}},"required":["id","label","listings","remote_listings"],"additionalProperties":false}},"total_listings":{"type":"integer"},"licenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"listings":{"type":"integer"}},"required":["id","label","listings"],"additionalProperties":false}},"work_modes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"listings":{"type":"integer"}},"required":["id","label","listings"],"additionalProperties":false}},"source_url":{"type":"string","description":"Most relevant page on the site. Link to it when you use this data."},"attribution":{"type":"string","description":"Credit line to show."},"data_updated_at":{"type":"string","description":"ISO time the board data was built."}},"required":["roles","total_listings","licenses","work_modes","source_url","attribution","data_updated_at"],"additionalProperties":false},"EmployersResult":{"type":"object","properties":{"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"employers":{"type":"array","items":{"type":"object","properties":{"employer":{"type":"string"},"open_listings":{"type":"integer"},"url":{"type":"string","description":"The employer's page on the site, where there is one."}},"required":["employer","open_listings"],"additionalProperties":false}},"employer_count":{"type":"integer"},"total_listings":{"type":"integer"},"source_url":{"type":"string","description":"Most relevant page on the site. Link to it when you use this data."},"attribution":{"type":"string","description":"Credit line to show."},"data_updated_at":{"type":"string","description":"ISO time the board data was built."}},"required":["state","employers","employer_count","total_listings","source_url","attribution","data_updated_at"],"additionalProperties":false},"BoardInfoResult":{"type":"object","properties":{"name":{"type":"string"},"tagline":{"type":"string"},"url":{"type":"string"},"description":{"type":"string"},"data_source":{"type":"string"},"totals":{"type":"object","properties":{"listings":{"type":"integer"},"employers":{"type":"integer"},"remote":{"type":"integer"},"hybrid":{"type":"integer"},"with_posted_pay":{"type":"integer"},"free_preview":{"type":"integer"}},"required":["listings","employers","remote","hybrid","with_posted_pay","free_preview"],"additionalProperties":false},"free_vs_paid":{"type":"object","properties":{"free":{"type":"string"},"plan":{"type":"string"},"through_this_api":{"type":"string"}},"required":["free","plan","through_this_api"],"additionalProperties":false},"pricing":{"type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"price_usd":{"type":"number"},"interval":{"type":"string"},"price_text":{"type":"string"}},"required":["id","name","price_usd","interval","price_text"],"additionalProperties":false}},"summary":{"type":"string"},"refund":{"type":"string"},"cancel":{"type":"string"},"launch_offer":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricing_url":{"type":"string"}},"required":["plans","summary","refund","cancel","launch_offer","pricing_url"],"additionalProperties":false},"developers_url":{"type":"string"},"mcp_url":{"type":"string"},"openapi_url":{"type":"string"},"contact":{"type":"string"},"source_url":{"type":"string","description":"Most relevant page on the site. Link to it when you use this data."},"attribution":{"type":"string","description":"Credit line to show."},"data_updated_at":{"type":"string","description":"ISO time the board data was built."}},"required":["name","tagline","url","description","data_source","totals","free_vs_paid","pricing","developers_url","mcp_url","openapi_url","contact","source_url","attribution","data_updated_at"],"additionalProperties":false}}}}