SmartRecruiters Jobs API
Pricing
from $0.80 / 1,000 job records
SmartRecruiters Jobs API
Find job postings from SmartRecruiters-powered career sites by country, role, company, salary, posting age, employment type, remote status, and seniority.
Pricing
from $0.80 / 1,000 job records
Rating
0.0
(0)
Developer
Aspen Technology Labs, Inc.
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
SmartRecruiters Job Postings API - JobsIndex by Aspen Tech Labs
SmartRecruiters is an enterprise recruiting platform used by employers across industries and regions. This Actor provides structured access to jobs published through SmartRecruiters-powered career sites.
The JobsIndex API, built by Aspen Tech Labs, collects 230K+ jobs directly from SmartRecruiters-powered sources worldwide. It is part of a broader index aggregating 11M+ active job listings daily from 300K+ employer source sites globally.
Coverage is not limited by posting date. If a job was posted six months ago, a year ago, or longer, as long as it is an actual live job posting, we have it in our index. We actively verify that every position is current and not an abandoned posting. Our database also includes evergreen roles that companies keep open on a rolling basis, which we tag in the system.
What You Can Use It For
This Actor serves two primary use cases: teams that want to publish SmartRecruiters job listings on their platform, and teams that need structured SmartRecruiters ATS data for matching algorithms, AI model training, or tech hiring intelligence.
This Actor can power job boards and careers platforms with live SmartRecruiters postings, and feed matching engines, AI models, and hiring intelligence tools with data filterable by role, location, or posting date.
Need More Or Something Different?
If this Actor is working well for you, we'd love a review. For more data, custom feeds, feedback, or any questions, reach out via our website or email. You can also explore JobMarketPulse, our labor and job market intelligence platform.
Built-In Search Preset
This Actor is fixed internally to SmartRecruiters-powered jobs (ats_name=smartrecruiters). The ATS/source platform preset is not exposed as an input parameter. Users can narrow the search by country, structured location, role keywords, salary, company, category, posting age, employment type, seniority, work arrangement, and pagination fields.
Quick Start
{"what": "@title software engineer","country": "United States","page": 0,"size": 5}
Input Parameters
| Parameter | Description | Example |
|---|---|---|
id | Optional JobsIndex job ID filter. Use this to retrieve a known job record. | 1234567890123456789 |
salary | Salary amount or range filter. | 20h-30h |
what | Main job search query. Supports keywords, boolean logic, exact phrases, and field-targeted search such as @title software engineer or @(title,description) (python). | @title software engineer |
where | Free-text location search. Supports place names, boolean logic, and field-targeted search such as @country United States or @(city,metro_area) (San Francisco). Prefer structured location fields for exact filters. | United States |
country | Country filter. | United States |
region | State, province, or region. | California |
city | City filter. | San Francisco |
postal_code | Postal or ZIP code filter. | 94105 |
metro_area | Metropolitan area filter. | San Francisco-Oakland-Fremont, CA |
title | Job title filter. | Software Engineer |
company_name | Company name filter. | Example Employer |
company_domain | Company website domain. | example.com |
category | Job category. | Information Technology |
sub_category | More specific job function or role. | Software Developer |
industry | Company industry filter. | Software |
remote | Work arrangement filter. Supported values: remote, on-site, hybrid. | remote |
posted | Relative posting age or ISO date. | 1w |
employment_type | Employment type. | Full-Time |
seniority | Seniority level. | Senior |
page | Page number, starting from 0. | 0 |
size | Number of results per page. Default 5, min 1, max 100. | 5 |
Salary Filter Format
Use:
NUMBER[UNIT]
or:
NUMBER[UNIT]-NUMBER[UNIT]
Supported units:
h- per hourd- per dayw- per weekm- per monthy- per year
Examples:
20h-30h- hourly rate between 20 and 3035h- fixed hourly rate20h-200000y- range from hourly to yearly comparison
Advanced Filters
what and where support plain-text search, boolean logic, and field-targeted search.
If no field is provided, the API expands the search across a default set of relevant fields.
Plain keyword examples:
what = front end engineerwhere = United States
Field-specific examples:
what = @title software engineerwhere = @country United States
Multi-field examples:
what = @(title,description) (python)what = @(title,title_raw,description) (engineer OR manager)what = @(title,description) (machine AND learning)where = @(country,region,city,metro_area,county,sub_city) (United States)where = @(city,region,metro_area) (San Francisco OR California)where = @(city,region,metro_area) (California)
Structured Filter Precedence
When using what or where, avoid sending separate structured filters for the same search unless you want those structured filters to take priority.
- For
where, location fields such ascountry,region,city,postal_code, andmetro_areatake priority and can override or narrow the free-text location query. - For
what, structured job filters such astitle,company_name,company_domain,category,sub_category,industry,posted,salary,employment_type,remote, andsenioritytake priority and can override or narrow the keyword query. For example,sub_category = Registered Nursetakes priority overwhat = engineer.
Use what and where as free-text searches when their corresponding structured filters are not set.
Common job/content fields for what:
title,title_raw,description,referencecategory,sub_category,seniority,industry,company_typecompany_name,company_domain,company_name_rawemployment_type,remote,languageposted,posted_raw,expiredurl_source,url_applysalary_value,salary_currency,salary_unitid
Common location fields for where:
country,region,city,metro_area,county,sub_city,postal_code
Location Filtering
For precise location matching, use structured filters exposed for this Actor:
countryregioncitypostal_codemetro_area
Use where only as a free-text location search when the structured location filters above are not set. If where is provided together with structured location filters, the structured filters take priority and where may be ignored or deprioritized.
Limits and Pagination
This Actor uses the JobsIndex jobs API. Results are paginated with page and size.
| Parameter | Default | Min | Max |
|---|---|---|---|
page | 0 | 0 | Depends on size and the item cap |
size | 5 | 1 | 100 |
Individual numeric bounds are checked before a run starts. Query-dependent pagination is checked after the run starts, as explained below.
One Run, One Page
Each run requests one page, not all available pages. size is the requested number of jobs for that page, with an absolute maximum of 100. Company filters can reduce the effective page size to 5 or 20; see Item Caps below.
For searches without company filters, the retrieval window is 1000 jobs: page * size must be less than 1000. The page number is zero-based.
size | Valid page range | First page outside the window |
|---|---|---|
| 100 | 0-9 | 10 |
| 20 | 0-49 | 50 |
| 10 | 0-99 | 100 |
| 1 | 0-999 | 1000 |
The last page can contain fewer jobs than requested. For example, page=12, size=80 starts at job 960 and can return up to 40 jobs. Narrow the search with filters to retrieve a different result set beyond the window; the Actor does not change the requested page or paginate automatically.
The input schema checks page and size individually. It cannot pre-validate their combination: page=10, size=100 passes the individual bounds but is rejected after a run starts, so the run can still finish as FAILED.
Item Caps
The maximum number of retrievable jobs depends on the query shape:
| Query shape | Max items | Effective max size | Over-size behavior |
|---|---|---|---|
| No company filter | 1000 | 100 | Validation error; not silently capped |
| Company filter plus another keyword or filter | 20 | 20 | Silent cap with capping metadata |
| Company filter only | 5 | 5 | Silent cap with capping metadata |
A company filter means company_name, company_domain, or a company field referenced inside what. Another keyword or filter means anything in what other than company_*, or a value in fields such as title, category, sub_category, industry, posted, salary, employment_type, or seniority where available on this Actor.
When a company-filtered request asks for size greater than the effective cap, the API returns up to the capped number of results instead of erroring. The response metadata includes:
size_requested- the original requestedsizesize_capped_by-"company"for the 5-item cap or"company|keywords"for the 20-item cap
On uncapped responses, size_requested and size_capped_by are not present.
No-company-filter requests are not silently capped. If the request exceeds the 1000-item retrieval window, the API can return 400 Item limit reached. Maximum of 1000 items can be retrieved.
Free-Text Query Limits
These limits apply to each available user-entered field and are enforced before the Actor starts.
| Input | Maximum characters | Maximum operator characters |
|---|---|---|
what | 500 | 20 |
where | 500 | 20 |
The operator-character limit counts ?, +, pipe, and @ together within each input. Longer searches should be split into separate requests. Remaining backend syntax and safety checks can still reject an expression after the run starts.
The current JobsIndex API accepts up to 700 characters per effective query parameter. The smaller limits above, where applicable, and the 20-operator-character guard are Actor-side limits, not a claim that the API rejects every longer expression.
Field Validation
Apify validates the input schema before creating a run, including requests made directly through the API. A schema violation returns HTTP 400 with error.type = invalid-input; no run is created. API clients should handle this response when starting the Actor; there is no run ID to poll or run error file to fetch.
| Input | Accepted values / limits |
|---|---|
page | Integer 0-999; the usable maximum also depends on size and query shape. |
size | Integer 1-100; company capping remains upstream. |
company_domain | A domain name only, e.g. example.com; 3-100 raw input characters. No protocol, path, port, or internal spaces. The API trims surrounding ASCII whitespace. |
posted | Recommended windows: 1d, 1w, 1m, 1y, or a real calendar date (YYYY, YYYY-MM, YYYY-MM-DD). Use 2-10 raw input characters. Surrounding ASCII whitespace is trimmed after the raw length check. Relative amounts use 1-4 digits without leading zeros. |
salary | 2-30 raw input characters. 1-9 digits plus h, d, w, m, or y; a range needs units on both ends, e.g. 20h-30h. Surrounding ASCII whitespace is trimmed. Decimals and currency prefixes are not accepted. |
employment_type | 2-50 raw input characters in total. Comma-separated values; 1-31 characters per item after trimming surrounding spaces. No empty items. |
seniority | 2-50 raw input characters in total. Comma-separated values; 1-31 characters per item after trimming surrounding spaces. No empty items. |
remote | remote, on-site, hybrid, or an empty string for no filter. |
id | One numeric JobsIndex job ID; ID lists are not accepted. A correctly formatted but missing ID can still produce an upstream error. |
| Other text fields | Raw input character ranges: country (2-60), region (2-80), city (2-100), postal_code (3-15), metro_area (2-100), title (2-200), company_name (2-150), category (2-100), sub_category (2-100), industry (2-100). Empty optional inputs remain allowed. |
Empty optional text fields are allowed and are omitted from the upstream request. Raw input length means the decoded string including surrounding whitespace, before API trimming, not URL-encoded bytes. The schema checks preliminary formats, list structure, and lengths, not whether a matching location, employer, role, or job exists. The API retains its detailed character checks, including permitted Unicode characters in list values. A valid search with no matching jobs succeeds with an empty dataset.
Query-dependent pagination, combined filters, and other backend-only checks remain upstream or runtime checks. If they reject a request after a run starts, the run can still finish as FAILED. Technical errors are not reported as successful searches.
ID Lookup Shortcut
When id is provided, the search query is bypassed and the API looks up one job record. Use a single numeric JobsIndex job ID, not a comma-separated list. A well-formed ID that does not exist can still return 404 Job not found after the run starts.
Output
Each run stores job records in the default Apify dataset. The dataset schema includes an Overview table for the most useful fields and a Raw data (all fields) table for the complete JobsIndex record.
Example dataset item:
{"id": "1234567890123456789","title": "Software Engineer","company_name": "Example Employer","company_domain": "example.com","category": "Information Technology","sub_category": "Software Developer","country": "United States","region": "California","city": "San Francisco","salary_value": null,"salary_currency": null,"salary_unit": null,"employment_type": "Full-Time","remote": "n/a","posted": "2026-06-22","url_apply": "https://example.com/jobs/software-engineer"}
Field availability depends on the source job posting.