Jobs Index avatar

Jobs Index

Pricing

from $4.00 / 1,000 job records

Go to Apify Store
Jobs Index

Jobs Index

Jobs Index provides access to 11+ million organically-collected jobs from hundreds of thousands of direct employer company career websites. Data you can trust! JobsIndex is offered by Aspen Tech Labs Inc, which has been making jobs data content available for nearly 20 years.

Pricing

from $4.00 / 1,000 job records

Rating

0.0

(0)

Developer

Aspen Technology Labs, Inc.

Aspen Technology Labs, Inc.

Maintained by Community

Actor stats

0

Bookmarked

39

Total users

1

Monthly active users

2 days ago

Last modified

Share

JobsIndex API - JobsIndex by Aspen Tech Labs

Access fresh job postings from direct employer career sites worldwide through the JobsIndex API, built by Aspen Tech Labs. JobsIndex aggregates 11M+ active job postings daily from 300K+ employer source sites globally. Job data is sourced directly from company career pages and ATS platforms, not scraped from job boards or aggregators.

Use this Actor when you need flexible access to the full JobsIndex jobs API rather than a pre-filtered specialty Actor. You can search by keyword, title, company, location, category, salary, seniority, employment type, work arrangement, posting age, and more.

What You Can Use It For

  • Power job boards, job search features, or backfill workflows with fresh job postings
  • Find jobs by title, keyword, company, location, category, industry, or posting age
  • Monitor hiring activity for specific companies or employer domains
  • Build recruiting, HR analytics, sales intelligence, workforce intelligence, or labor-market products
  • Retrieve structured job data with company, location, salary, category, seniority, remote status, source URL, and application URL fields where available

Why JobsIndex Is Different

  • 11M+ active job postings worldwide
  • 300K+ employer source sites
  • Direct employer career-site and ATS coverage
  • Fresh active jobs, updated daily
  • Direct source and application links where available
  • Salary, location, company, category, seniority, remote, and employment-type fields where available
  • Historical job postings, custom feeds, and bulk delivery available separately

Quick Start

Fresh software jobs in the United States

{
"what": "software engineer",
"country": "United States",
"posted": "1w",
"size": 10
}

Jobs for a specific company domain

{
"company_domain": "ibm.com",
"size": 10
}

Jobs with salary data

{
"country": "United States",
"salary": "20h-30h",
"size": 10
}

Remote jobs

{
"remote": "remote",
"what": "customer success",
"size": 10
}

Input Parameters

ParameterDescriptionExample
idOptional JobsIndex job ID filter. Use this to retrieve a known job record.9343167339286732210
whatMain job search query. Supports keywords, boolean logic, exact phrases, and field-targeted search such as @title engineer or @(title,description) (python).python developer OR junior javascript
whereFree-text location search. Supports place names, boolean logic, and field-targeted search such as @country United States or @(city,metro_area) (Denver). Prefer structured location fields for exact filters.Germany
countryCountry filter.United States
regionState, province, or region.California
cityCity filter.New York
postal_codeZIP or postal code.10001
metro_areaMetropolitan area filter.San Francisco-Oakland-Fremont, CA
titleJob title filter.Sales Representative
company_nameCompany name filter. Company filters reduce the retrievable item cap; see Limits and Pagination.IBM
company_domainCompany website domain in valid DNS form. Company filters reduce the retrievable item cap; see Limits and Pagination.ibm.com
categoryJob category.Healthcare
sub_categoryMore specific job function or role.Physician
industryCompany industry.Food Products
postedRelative posting age or ISO date.1w
salarySalary amount or range filter.20h-30h
employment_typeEmployment type.Full-Time
remoteWork arrangement filter. Supported values: remote, on-site, hybrid.remote
senioritySeniority level.Senior
pagePage number, starting from 0.0
sizeNumber of results per page. Default 20, min 1, max 100.20

Salary Filter Format

Use:

NUMBER[UNIT]

or:

NUMBER[UNIT]-NUMBER[UNIT]

Supported units:

  • h - per hour
  • d - per day
  • w - per week
  • m - per month
  • y - per year

Examples:

  • 20h-30h - hourly rate between 20 and 30
  • 35h - fixed hourly rate
  • 20h-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 = engineer OR manager
where = United States

Field-specific examples:

what = @title engineer OR manager
where = @country United States

Multi-field examples:

what = @(title,description) (python)
what = @(title,title_raw,description) (engineer OR manager)
what = @(title,description) (python AND developer)
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 as country, region, city, postal_code, and metro_area take priority and can override or narrow the free-text location query.
  • For what, structured job filters such as title, company_name, company_domain, category, sub_category, industry, posted, salary, employment_type, remote, and seniority take priority and can override or narrow the keyword query. For example, sub_category = Registered Nurse takes priority over what = 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, reference
  • category, sub_category, seniority, industry, company_type
  • company_name, company_domain, company_name_raw
  • employment_type, remote, language
  • posted, posted_raw, expired
  • url_source, url_apply
  • salary_value, salary_currency, salary_unit
  • id

Common location fields for where:

  • country, region, city, metro_area, county, sub_city, postal_code

Location Filtering

For precise location matching, use structured filters when possible:

  • country
  • region
  • city
  • postal_code
  • metro_area

Use where as a free-text location search when structured location filters are not set. If where is provided together with structured location filters, the structured filters take priority and where may be ignored or narrowed.

Limits and Pagination

This Actor uses the JobsIndex jobs API. Results are paginated with page and size.

ParameterDefaultMinMax
page00Depends on size and the item cap
size51100

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.

sizeValid page rangeFirst page outside the window
1000-910
200-4950
100-99100
10-9991000

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 shapeMax itemsEffective max sizeOver-size behavior
No company filter1000100Validation error; not silently capped
Company filter plus another keyword or filter2020Silent cap with capping metadata
Company filter only55Silent 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, remote, or seniority.

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 requested size
  • size_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.

InputMaximum charactersMaximum operator characters
what50020
where50020

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.

InputAccepted values / limits
pageInteger 0-999; the usable maximum also depends on size and query shape.
sizeInteger 1-100; company capping remains upstream.
company_domainA 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.
postedRecommended 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.
salary2-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_type2-50 raw input characters in total. Comma-separated values; 1-31 characters per item after trimming surrounding spaces. No empty items.
seniority2-50 raw input characters in total. Comma-separated values; 1-31 characters per item after trimming surrounding spaces. No empty items.
remoteremote, on-site, hybrid, or an empty string for no filter.
idOne numeric JobsIndex job ID; ID lists are not accepted. A correctly formatted but missing ID can still produce an upstream error.
Other text fieldsRaw 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 returned by the JobsIndex API in the default Apify dataset and metadata in meta.json in the default key-value store.

The dataset schema exposes the raw JobsIndex job fields returned by the API. Common fields include:

  • id
  • title, title_raw
  • category, sub_category, seniority
  • reference, industry, company_type
  • company_name, company_name_raw, company_domain
  • posted, posted_raw, expired
  • url_source, url_apply
  • country, region, city, metro_area, county, sub_city, postal_code
  • salary_value, salary_currency, salary_unit
  • employment_type, remote, language
  • description

meta.json includes:

  • page
  • size
  • total
  • pages
  • returned_count
  • query
  • status_code
  • size_requested and size_capped_by, when company-filter capping is applied

Example dataset item:

{
"id": "3956505510037809027",
"title": "Software Engineer",
"company_name": "Example Company",
"category": "Information Technology",
"sub_category": "Software Development",
"country": "United States",
"region": "California",
"city": "San Francisco",
"salary_value": "120000.00-160000.00",
"salary_currency": "USD",
"salary_unit": "YEAR",
"employment_type": "Full-Time",
"remote": "hybrid",
"posted": "2026-04-20",
"url_apply": "https://example.com/apply"
}

Field availability depends on the source job posting. Missing or unavailable values may appear as an empty string, "n/a", or null, depending on the field and source data.

Empty Results

If no jobs match your query, the API returns a successful response with total: 0 and an empty data array. The Actor run still succeeds and writes an empty dataset plus metadata.

Custom Jobs Data

For custom job data needs, bulk downloads, or tailored job feeds, contact us via JobsIndex or by email. You can also explore JobMarketPulse, our next-generation labor and job market intelligence platform.