☰
CompAnalyst
| API
×
Welcome to the Salary.com API Authentication
Data as a Service CompAnalyst and JobArchitect

DATA AS A SERVICE

Introduction & AI Market Data Job Match API
Behavior Request Field Definitions Response Field Definitions Match a Job POST Batch Match Jobs POST Match a Job (Verbose) POST Batch Match Jobs (Verbose) POST
Posting Data Job Match API
Behavior Request Field Definitions Response Field Definitions Match a Job POST Match a Job (Verbose) POST

COMPANALYST

Employees
Get an Employee GET Get Employee List GET Create an Employee POST Update an Employee PUT Delete an Employee DELETE
Company Jobs
Get a Company Job GET Get Company Job List GET Create a Company JobPOST Update a Company Job PUT
Composites
Get Composite ListGET Get Composite by Job CodeGET

JOBARCHITECT

Jobs
Get Job Description List GET Get a Job Description Details GET
Skills
Get Skills GET

REFERENCE

Field Definitions
Employees Company Jobs Salary Plan Competencies Composites JobArchitect Skills
Change Log

Response Field Definitions

Job Posting Data API

    "MatchRating": "Confident",
    "NumberOfPostings": 56179,
    "NumberOfClosedPostings": 56737,
    "NumberOfHiringCompanies": 24029,
    "HistoricalHiringCompanies": 20691,
    "Posting25": 62818,
    "Posting50": 71399,
    "Posting75": 80307,
    "AveragePostingDuration": 30.4,
    "CurrencyCode": "USD",
    "DataScope_IndustryCode": "ALL",
    "DataScope_IndustryName": "All Industries",
    "DataScope_FTERange": "ALL",
    "DataScope_CountryCode": "USA",
    "DateRange_Start": "2024-01-01",
    "DateRange_End": "2024-09-01",
    "OnlyPosted": true 
  • Match Rating: The string field that represents our confidence in the salary ranges and job attributes we returned. We will return as “Confident”/ “Potential” /“NeedsReview” per job title/description you input.
  • NumberOfPostings: The integer field that represents the total number of active job postings (not expired within the requested date range) returned based on the request fields. If no postings, we return “0”.
  • NumberOfClosedPostings: The integer field that represents the total number of non-active job postings (expired within the requested date range) returned based on the request fields. If no postings, we return “0”.
  • NumberOfHiringCompanies: The integer field that represents the total number of unique companies currently hiring within the specified date range, based on the request fields. If no postings, we return “0”.
  • HistoricalHiringCompanies: The integer field that represents the total number of unique companies that had job postings which are now closed (expired) within the specified date range, based on the request fields. If no postings, we return “0”.
  • Posting25-75: The numerical field that represents the percentiles (25th, 50th, and 75th) of the midpoint of base salary found in job postings. This field provides insights into the distribution of salaries within the job postings data. If no postings, we return “0”.
  • AveragePostingDuration: Decimal field that represents the average time frame in which a group of job advertisements is active and accepting applications. The duration is calculated as follows: if the close date is greater than today, the duration is "today – post date"; if the close date is less than or equal to today, the duration is "close date – post date". This calculation is done over a rolling "60-day" period, and the average is computed based on these individual durations. If no postings, we return “0”.
  • CurrencyCode: A three-letter code representing the currency used for monetary values, following ISO 4217 standards.
  • CompanyName: The name of the company passed in the API request. This is returned if there is posting data for the company within the DateRange requested. Please reference the “Behavior” section for more details.
  • DataScope: The data in response corresponds to the DataScope object in the request. It informs the consumer if we were able to find data matching their requested scope.
    • CountryCode/Region/State/City: Geographic info aligned with the request. The finest granularity is city, if the returned data is city level, this will be clear in the DataScope_ fields in the API response.

    • IndustryCode/Name: A standardized numerical representation used to classify businesses and organizations of the returned postings data. We return a 6-digit NAICS code as the industry code along with the corresponding NAICS title as the industry name per North American Industry Classification System.

    • FTERange: Returns a range value based on the provided FTE (Full-Time Equivalent) Value. If the provided value does not match any of our predefined FTE ranges, “ALL” is returned for this field.

  • DateRange_Start: The starting date of the data range as requested. If the format is YYYY, the API will return YYYY-01-01. If the format is YYYY-MM, the API will return YYYY-MM-01. If an invalid date format is provided, the API will default to returning the current date (today) as both DateRange_Start and DateRange_End. If only an end date is provided, the API will set a start date 3 years before the end date.
  • DateRange_End: The ending date of the data range as requested by the client. Similar to the start date, if the format is YYYY, the API will return YYYY-01-01. If the format is YYYY-MM, the API will return YYYY-MM-01. If an invalid date format is provided, the API will default to returning the current date (today) as both DateRange_Start and DateRange_End. If only a start date is provided, the API will default to an end date 100 years in the future.
  • OnlyPosted: Boolean field that mirrors the request. Reinforces if the job postings data in the response includes a posted salary range. See “Behavior” section and read about OnlyPosted.

Job Posting Data API (Verbose)

    "MatchRating": "Confident", 
    "NumberOfPostings": 19851, 
    "NumberOfClosedPostings": 93065, 
    "NumberOfHiringCompanies": 9642, 
    "HistoricalHiringCompanies": 32689, 
    "Posting25": 64921, 
    "Posting50": 72900, 
    "Posting75": 81396, 
    "AveragePostingDuration": 28.9, 
    "PercentRemote": 0.0413, 
    "PercentSignOnBonus": 0.0053, 
    "GrowthRates": { 
        "PostingMedianRate": 0.0007, 
        "NumberOfPostingRate": 0.3994, 
        "HiringCompanyRate": 0.4565, 
        "AverageDurationRate": -0.3312 
    }, 
    "BaseDistribution": [ 
      { 
        "BaseDistributionId": 1, 
        "RangeMin": 0, 
        "RangeMax": 14579.9248, 
        "NumberOfPostings": 0, 
        "NumberOfHiringCompanies": 0 
      }, 
      { 
        "BaseDistributionId": 2, 
        "RangeMin": 14579.9248, 
        "RangeMax": 29159.8496, 
        "NumberOfPostings": 0, 
        "NumberOfHiringCompanies": 0 
      }, 
      { 
        "BaseDistributionId": 3, 
        "RangeMin": 29159.8496, 
        "RangeMax": 43739.7734, 
        "NumberOfPostings": 347, 
        "NumberOfHiringCompanies": 266 
      }, 
      { 
        "BaseDistributionId": 4, 
        "RangeMin": 43739.7734, 
        "RangeMax": 58319.6992, 
        "NumberOfPostings": 2335, 
        "NumberOfHiringCompanies": 1380 
      }, 
      { 
        "BaseDistributionId": 5, 
        "RangeMin": 58319.6992, 
        "RangeMax": 72899.625, 
        "NumberOfPostings": 7207, 
        "NumberOfHiringCompanies": 4291 
      }, 
      { 
        "BaseDistributionId": 6, 
        "RangeMin": 72899.625, 
        "RangeMax": 87479.5469, 
        "NumberOfPostings": 6658, 
        "NumberOfHiringCompanies": 3811 
      }, 
      { 
        "BaseDistributionId": 7, 
        "RangeMin": 87479.5469, 
        "RangeMax": 102059.4766, 
        "NumberOfPostings": 1428, 
        "NumberOfHiringCompanies": 1004 
      }, 
      { 
        "BaseDistributionId": 8, 
        "RangeMin": 102059.4766, 
        "RangeMax": 116639.3984, 
        "NumberOfPostings": 591, 
        "NumberOfHiringCompanies": 376 
      }, 
      { 
        "BaseDistributionId": 9, 
        "RangeMin": 116639.3984, 
        "RangeMax": 131219.3281, 
        "NumberOfPostings": 404, 
        "NumberOfHiringCompanies": 238 
      }, 
      { 
        "BaseDistributionId": 10, 
        "RangeMin": 131219.3281, 
        "RangeMax": 353600, 
        "NumberOfPostings": 881, 
        "NumberOfHiringCompanies": 334 
      } 
    ], 
    "CurrencyCode": "USD", 
    "DataScope_IndustryCode": "ALL", 
    "DataScope_IndustryName": "All Industries", 
    "DataScope_FTERange": "ALL", 
    "DataScope_CountryCode": "USA", 
    "DateRange_Start": "2024-08-01", 
    "DateRange_End": "2024-09-01", 
    "OnlyPosted": true

    This endpoint returns all of the fields previously defined as well as the following.

  • PercentRemote: The percentage or prevalence of postings that do not require work at a location designated by the company. If no postings, we return “0”.
  • PercentSignOnBonus: The prevalence of a sign-on bonus across a group of job advertisements. A group of job postings can vary based on query criteria such as industry, geography, company, etc. Sign-on bonus is a one-time payment to a new hire as an incentive to join a company. If no postings, we return “0”.
  • GrowthRates: Object returning 4 place decimal fields for each of the below rates. If no postings, “0” is returned.
    • PostingMedianRate: Represents the percentage change in the median value of job postings (Posting50) for the requested period.

      If requested a date range other than today, the rate is calculated as

      ( Diff Value Median Value of Selected Date Range Data ) × 100

      If requested to show today’s data, the rate is calculated as

      ( Diff Value Median Value of Last 30 Days' Data ) × 100
    • NumberOfPostingRate:Represents the percentage change in the number of job postings compared to the average number of postings over the specified date range.

      The calculation is as follows:

      NumberOfPostingRate = ( Today's Posting Count − Average Posting Count of Date Range Average Posting Count of Date Range ) × 100

      Average Posting Count Calculation:

      For date ranges of 14 days or less, daily counts are used. For date ranges between 15 days and 6 months, bi-weekly averages are used. For date ranges over 6 months, monthly or quarterly averages are applied. If the date range does not align perfectly with these periods, the averages are adjusted by combining them with additional days.

    • HiringCompanyRate: Represents the percentage change in the number of unique hiring companies compared to the average number of hiring companies over the specified date range. The calculation is as follows:

      HiringCompanyRate = ( Today's Company Count − Average Company Count of Date Range Average Company Count of Date Range ) × 100
    • AverageDurationRate: Represents the percentage change in the average duration of job postings compared to the average duration over the specified date range. It is calculated using the formula:

      ( Today's Average Duration − Average Duration of Date Range Data Average Duration of Date Range Data ) × 100
  • BaseDistribution: The base distribution for the postings data refers to the method or criteria used to distribute job postings into specific groups, allowing visibility into ranges, posting numbers, and company counts. The number of base distribution groups is determined by how many postings with salary data are returned by the API. If no postings, we return “0” for each fields under base distribution.

    For 1 posting, only 1 distribution group is shown, with the range representing the posting’s salary min-max.

    For 2 to 5 postings, there are always 2 distribution groups displayed.

    For more than 5 postings, an additional distribution group is added for every 5 postings, up to a maximum of 10 distribution groups.

    • BaseDistributionId: An integer field that represents the number of distribution groups allocated based on the returned postings data. The value of BaseDistributionId is determined by the number of postings with salary data, and it ranges from 1 to a maximum of 10.

    • RangeMin: The minimum value of the salary range for a specific distribution group. Each distribution group represents a portion of the salary data, and RangeMin defines the lowest salary within that group. This field is dynamically calculated based on the salary data returned and varies depending on the number of postings and groups created. 4 decimal places.

    • RangeMax: The maximum value of the salary range for a specific distribution group. This field represents the upper limit of salaries within that distribution group. The RangeMax value, along with RangeMin, helps define the boundaries of the salary distribution for each group. It is dynamically determined based on the salary data of the returned postings and varies according to the number of postings and the corresponding distribution groups created. 4 decimal places.

    • NumberOfPostings: The total number of postings counted within each distribution group. If multiple companies posted the same job title, it is counted multiple times.

    • NumberOfHiringCompanies: This field represents the total number of unique hiring companies within each distribution group. Even if a single company has multiple postings in the same salary range distribution group, it will only be counted once.

© Copyright Salary.com 2025. All Rights Reserved. Privacy Policy | Legal