{"openapi":"3.1.0","info":{"title":"Remotely Jobs API","summary":"Remote job listings and hiring-company profiles from tryremotely.com.","description":"The public, read-only Remotely API. It exposes the remote, hybrid and\non-site job listings published on tryremotely.com and the profiles of the\ncompanies hiring for them.\n\nNo authentication or API key is required. Requests are rate limited to\n100 per 1 minute per IP address; over the limit the API\nreturns 429 with the standard error body.\n\nAttribution is a condition of use: link back to the job listing URL on\nRemotely (followed, not nofollow) and name Remotely as the source.\nEvery response repeats these terms in its `usage` field.\n\nListings change on the order of hours, not seconds. Cache responses\nrather than polling; collection responses are served from a two-hour\ncache.\n","version":"1.0.0","termsOfService":"https://tryremotely.com/legal/terms-and-conditions","contact":{"name":"Remotely support","email":"hello@tryremotely.com","url":"https://tryremotely.com/contact"},"x-rate-limit":{"requests":100,"window":"1 minute","scope":"IP address","authentication":"none"}},"servers":[{"url":"https://tryremotely.com","description":"Production"}],"externalDocs":{"description":"Human-readable API documentation","url":"https://tryremotely.com/api"},"tags":[{"name":"Job listings","description":"Published job listings, newest first."},{"name":"Companies","description":"Profiles of companies with at least one published listing."}],"paths":{"/api/v1":{"get":{"operationId":"listJobListingsLegacy","summary":"List published job listings (original path)","description":"Identical to GET /api/v1/job-listings. This is the path the API originally shipped on and it stays supported for existing consumers; new integrations should call /api/v1/job-listings.","tags":["Job listings"],"parameters":[{"name":"offset","in":"query","required":false,"description":"Number of records to skip. Must not exceed the total record count.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","required":false,"description":"Number of records to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"A page of job listings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListingsResponse"}}}},"400":{"description":"A pagination parameter was not an integer or fell outside its range.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/job-listings":{"get":{"operationId":"listJobListings","summary":"List published job listings","description":"Returns published job listings ordered by publication date, newest first, together with the total number available so a client can page through them with offset and limit. Use it to search for remote work by reading the returned categories, tags, locations, work model and salary range.","tags":["Job listings"],"parameters":[{"name":"offset","in":"query","required":false,"description":"Number of records to skip. Must not exceed the total record count.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","required":false,"description":"Number of records to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"A page of job listings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListingsResponse"}}}},"400":{"description":"A pagination parameter was not an integer or fell outside its range.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/job-listings/{slug}":{"get":{"operationId":"getJobListing","summary":"Fetch one job listing","description":"Returns a single published job listing, including its full HTML description and the link to apply. Slugs come from the `slug` field of the list endpoints. A listing that has expired or been unpublished returns 404.","tags":["Job listings"],"parameters":[{"name":"slug","in":"path","required":true,"description":"The listing's slug, e.g. `senior-backend-engineer-at-acme`.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"The job listing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListingResponse"}}}},"404":{"description":"No published listing matches that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/companies":{"get":{"operationId":"listCompanies","summary":"List hiring companies","description":"Returns companies that currently have at least one published listing, ordered by the number of open roles. Use it to research employers hiring remotely, their benefits, size, industries and where they are based.","tags":["Companies"],"parameters":[{"name":"offset","in":"query","required":false,"description":"Number of records to skip. Must not exceed the total record count.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","required":false,"description":"Number of records to return per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"A page of companies.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesResponse"}}}},"400":{"description":"A pagination parameter was not an integer or fell outside its range.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/companies/{slug}":{"get":{"operationId":"getCompany","summary":"Fetch one company profile","description":"Returns a single company profile: description, size, location, industries, benefits and the number of roles it currently has open. Slugs come from the `slug` field of the company and job listing endpoints.","tags":["Companies"],"parameters":[{"name":"slug","in":"path","required":true,"description":"The company's slug, e.g. `acme-inc`.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"The company profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"404":{"description":"No company matches that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"JobListingsResponse":{"type":"object","description":"One page of job listings.","required":["usage","updated_at","offset","limit","total_count","jobs"],"properties":{"usage":{"type":"string","description":"Attribution terms that apply to this data."},"updated_at":{"type":"integer","description":"Unix timestamp of when this response was generated."},"offset":{"type":"integer","description":"The offset that produced this page."},"limit":{"type":"integer","description":"The limit that produced this page."},"total_count":{"type":"integer","description":"Total records available across all pages."},"jobs":{"type":"array","description":"The listings on this page, newest first.","items":{"$ref":"#/components/schemas/JobListing"}}}},"JobListingResponse":{"type":"object","description":"The job listing.","required":["usage","updated_at","job"],"properties":{"usage":{"type":"string","description":"Attribution terms that apply to this data."},"updated_at":{"type":"integer","description":"Unix timestamp of when this response was generated."},"job":{"$ref":"#/components/schemas/JobListing"}}},"JobListing":{"type":"object","description":"A published job listing.","required":["slug","title","companyName","applicationLink"],"properties":{"slug":{"type":"string","description":"Stable identifier, and the path segment of the listing URL."},"title":{"type":"string","description":"Job title as advertised."},"mainCategory":{"type":"string","description":"Category, e.g. Engineering, Sales, Design."},"companyName":{"type":"string","description":"Name of the hiring company."},"companyLogo":{"type":"string","description":"Absolute URL of the company logo, or an empty string."},"jobType":{"type":"string","description":"Employment type, e.g. Full time, Contract."},"workModel":{"type":"string","description":"Remote, Hybrid or On site."},"seniorityLevel":{"type":"string","description":"Seniority, e.g. Junior, Mid level, Senior."},"minSalary":{"type":["number","null"],"description":"Bottom of the advertised salary range, null when not advertised."},"maxSalary":{"type":["number","null"],"description":"Top of the advertised salary range, null when not advertised."},"currency":{"type":["string","null"],"description":"ISO currency code for the salary range."},"locations":{"type":"array","description":"Countries or regions candidates must be located in.","items":{"type":"string"}},"tags":{"type":"array","description":"Skills and technologies attached to the listing.","items":{"type":"string"}},"description":{"type":"string","description":"Full job description as HTML."},"pubDate":{"type":["integer","null"],"description":"Unix timestamp of publication."},"expiryDate":{"type":["integer","null"],"description":"Unix timestamp of expiry."},"applicationLink":{"type":"string","description":"Canonical listing URL to send applicants to."},"guid":{"type":"string","description":"Globally unique identifier; same value as applicationLink."}}},"CompaniesResponse":{"type":"object","description":"One page of companies.","required":["usage","updated_at","offset","limit","total_count","companies"],"properties":{"usage":{"type":"string","description":"Attribution terms that apply to this data."},"updated_at":{"type":"integer","description":"Unix timestamp of when this response was generated."},"offset":{"type":"integer","description":"The offset that produced this page."},"limit":{"type":"integer","description":"The limit that produced this page."},"total_count":{"type":"integer","description":"Total records available across all pages."},"companies":{"type":"array","description":"The companies on this page, most open roles first.","items":{"$ref":"#/components/schemas/Company"}}}},"CompanyResponse":{"type":"object","description":"The company profile.","required":["usage","updated_at","company"],"properties":{"usage":{"type":"string","description":"Attribution terms that apply to this data."},"updated_at":{"type":"integer","description":"Unix timestamp of when this response was generated."},"company":{"$ref":"#/components/schemas/Company"}}},"Company":{"type":"object","description":"A company with at least one published listing.","required":["slug","name","profileUrl"],"properties":{"slug":{"type":"string","description":"Stable identifier, and the path segment of the profile URL."},"name":{"type":"string","description":"Company name."},"tagline":{"type":["string","null"],"description":"One-line positioning statement."},"description":{"type":["string","null"],"description":"Longer company description."},"website":{"type":["string","null"],"description":"The company's own website."},"profileUrl":{"type":"string","description":"Company profile on Remotely."},"jobsUrl":{"type":"string","description":"The company's open roles on Remotely."},"jobsFeedUrl":{"type":"string","description":"RSS feed of the company's open roles."},"logo":{"type":"string","description":"Absolute URL of the company logo, or an empty string."},"size":{"type":["string","null"],"description":"Headcount band, e.g. 11-50."},"location":{"type":["string","null"],"description":"Headquarters location as published by the company."},"foundedDate":{"type":["string","null"],"format":"date","description":"Founding date."},"ycCompany":{"type":"boolean","description":"Whether the company went through Y Combinator."},"linkedinUrl":{"type":["string","null"],"description":"LinkedIn company page."},"industries":{"type":"array","description":"Industries the company operates in.","items":{"type":"string"}},"benefits":{"type":"array","description":"Benefits the company advertises.","items":{"type":"string"}},"openJobsCount":{"type":"integer","description":"Number of currently published listings."}}},"Error":{"type":"object","description":"Error body returned by every failing API request.","required":["error","error_code","message","status"],"properties":{"error":{"type":"string","description":"Human-readable message. Present since v1; same value as `message`."},"error_code":{"type":"string","description":"Stable machine-readable code to branch on.","enum":["invalid_parameter","not_found","unknown_endpoint","rate_limit_exceeded"]},"message":{"type":"string","description":"Human-readable message."},"hint":{"type":"string","description":"How to resolve the error."},"status":{"type":"integer","description":"HTTP status code, repeated in the body."},"documentation_url":{"type":"string","description":"Human-readable API documentation."},"openapi_url":{"type":"string","description":"This specification."}}}}}}