Ashby Job Postings API

Introduction

This API allows you to get data for all currently published jobs for your organization. If you host your own careers page, you can use this data to populate it. Optionally, you can add includeCompensation=true as a query parameter to include compensation data in the response.

Example

Request:

curl https://api.ashbyhq.com/posting-api/job-board/{JOB_BOARD_NAME}?includeCompensation=true

Response:

{
  "apiVersion": "1",
  "jobs": [
    {
      "title": "Product Manager",
      "location": "Houston, TX",
      "secondaryLocations": [
        {
          "location": "San Francisco"
          "address": {
            "addressLocality": "San Francisco",
            "addressRegion": "California",
            "addressCountry": "USA"
          }
        }
      ]
      "department": "Product",
      "team": "Growth",
      "isListed": true,
      "isRemote": true,
      "descriptionHtml": "<p>Join our team</p>",
      "descriptionPlain": "Join our team",
      "publishedAt": "2021-04-30T16:21:55.393+00:00",
      "employmentType": "FullTime",
      "address": {
        "postalAddress": {
          "addressLocality": "Houston",
          "addressRegion": "Texas",
          "addressCountry": "USA"
        }
      },
      "jobUrl": "https://jobs.ashbyhq.com/example_job",
      "applyUrl": "https://jobs.ashbyhq.com/example/apply"
    },
  ],
  "compensation": {
    "compensationTierSummary": "$81K – $87K • 0.5% – 1.75% • Offers Bonus",
    "scrapeableCompensationSalarySummary": "$81K - $87K",
    "compensationTiers": [
      {
        "id": "cedc8928-e850-47e8-a510-e412f61d068a",
        "tierSummary": "Estimated based on experience $81K – $87K • 0.5% – 1.75% • Offers Bonus",
        "title": "Zone A",
        "additionalInformation": null,
        "components": [
          {
            "id": "5d131ad4-6b3a-4f01-938e-511c60bd0398",
            "summary": "0.5% – 1.75%",
            "compensationType": "EquityPercentage",
            "interval": "NONE",
            "currencyCode": null,
            "minValue": 0.5,
            "maxValue": 1.75
          },
          {
            "id": "5c8de1b0-52d6-41d7-8ae3-671ee74c745a",
            "summary": "Estimated based on experience $81K – $87K",
            "compensationType": "Salary",
            "interval": "1 YEAR",
            "currencyCode": "USD",
            "minValue": 81000,
            "maxValue": 87000
          },
          {
            "id": "5f881813-f164-4b91-b652-fd713627e810",
            "summary": "Offers Bonus",
            "compensationType": "Bonus",
            "interval": "1 YEAR",
            "currencyCode": "USD",
            "minValue": null,
            "maxValue": null
          }
        ]
      }
    ],
    "summaryComponents": [
      {
        "compensationType": "EquityPercentage",
        "interval": "NONE",
        "currencyCode": null,
        "minValue": 0.5,
        "maxValue": 1.75
      },
      {
        "compensationType": "Salary",
        "interval": "1 YEAR",
        "currencyCode": "USD",
        "minValue": 81000,
        "maxValue": 87000
      },
      {
        "compensationType": "Bonus",
        "interval": "1 YEAR",
        "currencyCode": "USD",
        "minValue": null,
        "maxValue": null
      }
    ]
  }
}

How to find your jobs page name

Your request must include your organization's Ashby jobs page name in the URL path. To find this name, you can go to your Ashby hosted job board. The final part of the URL path will be the jobs page name. Eg, https://jobs.ashbyhq.com/Ashby - "Ashby" is the jobs page name. To find your Ashby hosted job board, in the app head to 'Admin', then to Theme (Job Board). From there, click on the 'Job Board' button in the top-right corner to be taken to your job board.

API

Request URL

GET https://api.ashbyhq.com/posting-api/job-board/{JOB_BOARD_NAME}?includeCompensation={true/false}

If the request is successful, the response body will be JSON with the following fields. Note that where some piece of this data is missing in Ashby, it will also be missing in this response (for example, if the job's location does not have a country, the country field will be empty).

FieldData typeDescription
apiVersionstringwhich version of the api generated this response (currently "1").
jobslistList of jobs
jobs[].titlestringJob's title
jobs[].locationstringJob's location
jobs[].secondaryLocationslistJob's secondary locations
jobs[].secondaryLocations[].locationstringJob's secondary location
jobs[].secondaryLocations[].addressobject
secondaryLocations[].address.addressLocalitystringCity associated with the job's secondary location
secondaryLocations[].address.addressRegionstringState/province associated with the job's secondary location
secondaryLocations[].address.addressCountrystringCountry associated with the job's secondary location
jobs[].departmentstringJob's department
jobs[].teamstringJob's immediate team
jobs[].isRemotebooleanWhether the job is remote
jobs[].descriptionHtmlstringDescription of the job formatted as html
jobs[].descriptionPlainstringDescription of the job formatted as plain text
jobs[].publishedAtstringISO DateTime when the job was last published
jobs[].employmentTypestringAn enum representing the type of employment, which will be one of the following values: "FullTime", "PartTime", "Intern", "Contract", or "Temporary".
jobs[].addressobject
jobs[].address.postalAddressobject
postalAddress.addressLocalitystringCity associated with the job's location
postalAddress.addressRegionstringState/province associated with the job's location
postalAddress.addressCountrystring
jobs[].jobUrlstringURL of the Ashby hosted page for this job
jobs[].applyUrlstringURL for the Ashby page where candidates can apply for this job
jobs[].isListedbooleanShould this job be listed in the list of postings on your job board. If false, this listing should only be available via direct link.
jobs[].compensationobjectJob's compensation information. Included if includeCompensation query parameter is true
compensation.compensationTierSummarystringSummary of compensation tiers
compensation.scrapeableCompensationSalarySummarystringScrapable salary compensation summary
compensation.compensationTiers[]objectJob's compensation tiers
compensation.summaryComponents[]objectJob 's summary components

If there is additional data you'd like to have included in this response but currently is not, please reach out to us and let us know.