Job search API parameters: Best practices (v3)

Configuring the API

Factors affecting search results

Together, "Featured Jobs", "Enable Broadening", and "Disable Keyword Match" have a significant impact on the number and relevance of jobs returned to the job seeker. The most appropriate configuration of these three factors depends on your business needs. The best method for determining your optimal configuration is to apply different test scenarios and evaluate the outcomes during a testing phase.

  1. Featured Jobs: You can use Featured Jobs to assign promotional values to individual jobs, which allows you to highlight jobs that are important to your business needs. See the Featured jobs documentation for best practices and implementation details.

  2. disableKeywordMatch: This parameter allows the API to return keyword matches in addition to the relevant results determined by the ML algorithm. The default setting is false. Keeping the default setting means the CTS Job search API returns jobs that were not returned as relevant by the ML algorithm, but there is a keyword match in the title or job description with the job seeker's query string. Setting this parameter to true disables the keyword match, so fewer jobs (only those determined to be relevant by the ML feature) are returned.

  3. enableBroadening: This parameter allows you expand the job seeker's query by relaxing their stated restrictions on location and job categories. It's set to false by default and enabled when set to true. It's used to increase the number of search results returned.

Search configuration outcomes

To return only the most relevant jobs: Set disableKeywordMatch to true and enableBroadening to false. This improves the API's performance metrics related to search relevance since only the relevant jobs are returned. However, fewer jobs overall are returned in the search results.

To return a higher number of jobs including both relevant and keyword matched results: Set disableKeywordMatch to false and enableBroadening to false. The keyword-matched results are listed after the relevant jobs in the results, but query expansion results are not returned.

To return a higher number of jobs including both relevant and query expanded jobs: Set disableKeywordMatch to true and enableBroadening to true. The job seeker's query is expanded to include related job categories and nearby locations, listed after the relevant results. Keyword based matches are not returned.

To return the highest possible number of jobs: Set disableKeywordMatch to false and enableBroadening to true. The Job Search API returns the most relevant jobs at the top of the search results, followed by keyword matched jobs and query expanded jobs (by location, job category, etc). This maximizes the total number of jobs returned.

diasableKeywordMatch enableBroadening Outcome
- - Returns a higher number of jobs including both relevant and keyword matched results (but assume featured jobs is set to `false`).
+ + Returns a higher number of jobs including both relevant and query expanded jobs (but assume featured jobs is set to `false`).
- + Returns the highest number of jobs (but assume featured jobs is set to `false`).
+ - Returns only the most relevant jobs (but assume featured jobs is set to `false`).


For best performance and to avoid latency, set up the results page to display 20 or fewer jobs at a time.


customAttributes gives you the flexibility to assign additional values to your jobs according to your business needs (for example, GPA scores) and use these values to filter the results.

Location field

A detailed overview of the Location field can be found on the Location fields page. Providing the job's street address instead of GPS coordinates in the address field helps the API improve location detection and search relevance.


Use the regionCode if a single company has multiple job openings located in different geographic regions. Assigning a regionCode to each listing ensures that a search query returns jobs only in the job seeker's desired location rather than the global results for that company. For example, a search on the location keyword "Cambridge" without a regionCode in place returns results from both Cambridge, UK and Cambridge, MA, USA. This decreases search relevance.

Region_code and Language_code

Set request.filters.location_filters.region_code to match the geographic location that the user is searching (such as the United Kingdom). Set request.filters.language_code to the appropriate language code for that region (en_GB in this case) so that the API can use localised search logic (for example, "lorry driver" in en_GB as opposed to "truck driver" in the United States).


This parameter sets a radius (in miles) around a job seeker's indicated location. The API returns results inside this geographic range. How this distance is applied to the geography of the search results depends on the type of location information entered. If the job seeker enters a street address, the radiusInMiles distance is set from a single point. If the job seeker enters a city, the API applies a bounding box around the city limits and calculates distance from the box edges. If the user enters only a state or country, radiusInMiles is ignored.

Make sure that the mileage radius is as small as possible. Setting the mileage to a larger range returns results that may be outside the job seeker's desired location, decreasing relevance. For example, searching for jobs in New York city with radiusInMiles set to 100 miles returns results in both upstate New York and New Jersey. Keeping the radius as small as possible increases the relevance of the results.


This parameter sets the length of time that the job posting is active before it is removed from search results. The default is 30 days after the job creation time in the UTC time zone.


This is not a required field, however using Job_employment_type increases the relevance of job search results.

Configuring the API: Custom Ranking

Featured Jobs gives you the ability to influence search results and highlight jobs based on a single variable (promotionValue). See the Featured Jobs documentation for details. Custom Ranking gives you the ability to influence the results based on multiple variables, offering more control over the rankings regardless of relevance. This feature is useful to applications that require balancing relevance with economic interests, such as a multi-tiered Cost-per-Click (CPC) subscriber system. Influence on how jobs are ranked on top of the existing relevance score is based on two variables: rankingExpression and importanceLevel.

  • rankingExpression: This variable controls how jobs are ranked based on their existing relevance scores (as determined by the API algorithm). 'rankingExpression' must be set to 'filterable' in order for the API to index the parameter.

  • importanceLevel: This parameter sets the importance level of a job's ranking position when it is returned in searches. There are six different levels: Unspecified, NONE, LOW, MID, HIGH and EXTREME. Setting the value to EXTREME means that all other API-generated relevance factors are ignored, so use this value sparingly. Jobs set to EXTREME are returned at the top of the job seeker's query instead of the most relevant jobs.

  • Featured Jobs versus Custom Ranking: Featured Jobs is most useful for promoting a single category of jobs (for example, jobs at a certain company) above the relevance ranking. If you need to rank jobs according to multi-level CPC (Cost Per Click) variables in addition to the relevance ranking, Custom Ranking is a better choice.

Commute search helps job seekers search for jobs based on commute time. To enable it, include an additional CommuteFilter object in the JobQuery.commuteFilter field. This object allows the job seeker to select commuteMethod, travelDuration, and startCoordinates. The job seeker can also select options such as roadTraffic (TRAFFIC_FREE or BUSY_HOUR) and departureTime when calculating the commute time. See the Commute Search implementation and how-to pages for details.

Data management & error handling

Data integrity

  1. Uploading jobs: Data issues can prevent jobs from being uploaded to the API. Please see the HTTP Response Codes page for more information. Some common examples:

    • Job locations are incorrect, so the request can't be resolved.
    • Company or Job fields do not exist, which returns a bad request.

    There are three main options for troubleshooting job uploading issues:

  2. Indexing jobs: The Job search API is designed to index all of your uploaded jobs in a set period of time. However, you may have quota restrictions on your end. Be sure to check your system for restrictions on indexing requests before sending jobs to CTS.

Error handling mechanisms

Error handling is crucial to avoid a self-inflicted DDoS attack that results in job seekers being locked out. API services provided via the internet can also have intermittent connection failure, a prolonged outage, sudden service maintenance and other events that require a client application to retry the API request. This retry must be designed with network friendly behavior, for example exponential backoff.


Duplicate jobs negatively impact a job seeker's search experience. The Job search API includes two features to minimize duplicates:

  1. Create jobs: If you try to create 2+ jobs with the following criteria, the record will be rejected and you will encounter a 4xx error:

    • same companyName, AND
    • same job_req_id, AND
    • same location/languageCode
  2. Search for jobs: The CTS Job search API surfaces jobs that are relevant to job seeker's search query. A built-in feature of the relevance algorithm makes sure that any returned jobs are diversified, preventing nearly identical jobs from showing up next to each other in search results.