Search Jobs
Jobs API
Search Jobs
Search for jobs using traditional filtering methods
POST
Search Jobs
Search for jobs using common filters such as job titles, experience level, salary range, etc., in the JSON request body. The easiest way to start using our API is to use our
Export button on our Search Page, this allows you to edit the tune the request using our Job Filters UI and easily export as a Javascript or cURL request.
Endpoint
Request Body
Note:
- All request body fields are optional.
- Filter combinations can be mixed and matched.
- Use specific filters to narrow down search results and obtain relevant matches.
Array of job titles to search for (matched against parsed
job_title).Array of keywords to match in job descriptions, techonologies, skills, and benefits
Array of keywords to match in company descriptions, services, and products
Filter by the unique job slug (used for deep linking or targeting specific jobs).
Array of work arrangements. Accepted values:
"Remote", "Hybrid", "In-Person".Predefined geographic region used as a shortcut for common location groupings (e.g.,
"Bay_Area", "NYC_Metro").Array of structured location objects with
city, region, and country.Geographic filtering configuration
Array of experience levels. Accepted values:
"Entry", "Junior", "Mid", "Senior", "Executive".Any other value will return a
422 Unprocessable Entity error.Years of experience range object
Array of job types (e.g.,
"Full Time", "Part Time", "Contract", "Internship").Filter by one or more job category tags (e.g.,
"Engineering Jobs", "Marketing Jobs"). See the full category list.Filter jobs by the hiring company’s headcount bucket. Accepted values:
"1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10000", "10000+". Pass multiple values to combine ranges (e.g., ["11-50", "51-200"]).This parameter is named
company_types for historical reasons but currently filters by company size. A separate classification filter (Public Company / Non-Profit / etc.) will be added in a future API update.Filter by the source job board (e.g., “iCIMS”, “Lever”, “Greenhouse”).
Filter by specific company name
Filter by the unique company slug (used for deep linking or specific company targeting).
Salary range object
Filter by industry sector. Can be a single string or an array of strings. See List Industries for accepted values.
Filter by more specific subindustry category. Can be a single string or an array of strings. See List Subindustries for accepted values.
How many days ago to filter for. Days Ago set to
3 will return jobs posted on and after 3 days ago.Filter by a specific posted date (format:
YYYY-MM-DD). Returns jobs posted on or after this date.Filter jobs posted in a specific month (format:
YYYY-MM, e.g., "2026-03").Currency code to use when applying the
salary filter (e.g., "USD", "EUR", "GBP").Filter for jobs that offer visa sponsorship (
"true" or "false").Filter out recruiter agency repostings (
"true" or "false").Include expired job listings in the results (
"true" or "false", default "false").Include jobs that do not specify a salary (
"true" or "false") when a salary filter is applied.Include jobs that do not specify years of experience (
"true" or "false") when a yoe filter is applied.Omit jobs the current user has already viewed (
"true" or "false"). Requires user_id.Filter out jobs with incomplete listing data (
"true" or "false").Set to
"true" to include the full original HTML description from the ATS source on each job object.Field to sort results by. Accepted values:
"relevance", "date_posted", "salary", "company", "yoe".Invalid values are silently ignored and the default sort (
relevance) is applied.Sort direction (
"asc" or "desc").Page number for pagination
Number of results per page
Note:The pagination (
page and limit) fields control the number of results returned and which subset of results is displayed.Response
Array of job objects
Total number of matching jobs for the query
Number of unique companies represented in the result set
Current page number in the response
Number of job results returned per page
Total number of available pages for the query
Rate limit: 4 requests/second on search endpoints. Exceeding this limit returns a
429 Too Many Requests response. See Error Handling for best-practice retry logic.Example Request
Error Responses
422 Unprocessable Entity Error
422 Unprocessable Entity Error
Returns when the request contains invalid or improperly formatted data. Some possible reasons may include the following:
- When the
industryfield is missing, not a string, or doesn’t match any value from the list of valid industries. - If
sub_industryis not a valid string from the list of allowed sub-industries. JSONdecoding errors, such as malformed JSON or incorrect data types in the request body.
500 Internal Server Error
500 Internal Server Error
Returns when an unexpected error occurs on the server.
- Also occurs during unhandled server-side failures or bugs that prevent the request from being processed.