# iCIMS Jobs API (`fantastic-jobs/icims-jobs-api`) Actor

The perfect iCIMS Job Scraper API! Direct postings from thousands of company career sites. Enriched with AI and LinkedIn company data, with up to 60 fields per job! Powered by Fantastic.jobs

- **URL**: https://apify.com/fantastic-jobs/icims-jobs-api.md
- **Developed by:** [Fantastic.jobs](https://apify.com/fantastic-jobs) (community)
- **Categories:** Jobs, Automation
- **Stats:** 24 total users, 8 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 1000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

The perfect actor for job boards requiring backfill of high quality jobs for this ATS!
We scrape data from career sites using this ATS, covering thousands of companies. Jobs are stored in our database and enriched with AI and LinkedIn company profiles. Expired jobs are removed once per day.

The maximum number of jobs per run is 5,000. If you wish to go over this number, please reach out to us!

**Looking for jobs from multiple ats? Please check out our [Career Site Job Listing API](https://apify.com/fantastic-jobs/career-site-job-listing-api)**

- Do you love this Actor? Please leave a review!
- Any issues or feedback? [Please create an issue!](https://apify.com/fantastic-jobs/career-site-job-listing-api/issues/open)
- Missing an organization? Please let us know and we might be able to add it to the database

### Also available: the Fantastic.jobs API

> Some features of our new API are not available on Apify. Also, if you're retrieving more than 5,000 jobs per month, the API will likely be a better deal:
>
> - ATS, LinkedIn, Y Combinator, and Wellfound jobs combined under a single plan
> - An endpoint for modified jobs
> - Expired jobs endpoints with hourly refresh, compared to daily refresh on Apify
> - Advanced company details with Glassdoor, Crunchbase, and news articles
> - Endpoints to count the number of jobs before retrieving them
> - Advanced filtering parameters with Boolean search for job title, location, and description
> - Much faster response times
>
> If you're interested, start building with the new API: [developer.fantastic.jobs](https://developer.fantastic.jobs)
> If not, please carry on below!

### Technical Details

- This Actor calls a database that includes career site jobs from this ATS, posted during the last 6 months.

- Our scrapers run continuously and new jobs are added to the database twice per hour after enrichment is complete

- Expired jobs are removed once per day

- All jobs in the database are unique based on their URL. However, organizations occasionally create duplicates themselves. More commonly, organizations sometimes create the same job listing for multiple cities or states. If you wish to create a rich and unique dataset, we recommend further deduplication on title + organization, or title + organization + locations

- We extract useful job details from the description with an LLM. We are currently enriching over 99.9% of all jobs. Please note that our enrichment is a simple one-shot prompt on each job description, so there might be some errors.

- We attempt to map every job to a LinkedIn Company profile, bringing in useful data like the number of employees, industry, and more. Please note that this enrichment is AI assisted, so there might be some errors. We've measured accuracy at 99%. Over 95% of jobs include LinkedIn Company data.

- We're currently building out our systems to identify jobs that have been changed after posting. Some ATS are already being checked and new ones are being added every week. Jobs that have been changed can be identified by the 'date\_modified' and 'modified\_fields' fields.

- Domain Derived. Since ATS platforms don't always include the domain or homepage of the company, we've developed a system to identify the company's domain. This can be very helpful to do further analysis and enrichments. The accuracy is ~98%

### FAQ

**Wait, this isn't a scraper?**\
Technically, no, or yes?
We scrape all jobs in the backend, and you're accessing our database with scraped jobs with a small delay. This is a much more reliable system since we're targeting over 200,000 company career sites across multiple ATS platforms. This also allows us to enrich and derive data before sharing it with you, adding more value per job!

**I wish to retrieve only new jobs, is this possible?**\
Please check out our [Career Site Job Listing API](https://apify.com/fantastic-jobs/career-site-job-listing-api)

**Can I see how many jobs will be returned for my query**
Not at the moment, please test with the free plan or create an issue and we'll have a look for you! Make sure to include all parameters.

**How can I retrieve a XML with the jobs from my latest run?**

- Follow the documentation to create a saved task: https://docs.apify.com/platform/actors/running/tasks
- Create a schedule for the task: https://docs.apify.com/platform/schedules
- Copy the following endpoint to access the latest succesfull run from your scheduled task:
  - Replace *task-id* with the the id of your task, which is the last string of characters in the task's url:
    ![Screenshot showing task ID location](https://mhiqwtehsmorqwewxvqx.supabase.co/storage/v1/object/public/Fantastic-Jobs//Screenshot%202025-06-20%20110947.png)

  - Replace *apiKey* with your api key. You can find your API key at 'Settings' --> 'API & Integrations'

`https://api.apify.com/v2/actor-tasks/*task-id*/runs/last/dataset/items?token=*apiKey*&format=xml&status=SUCCEEDED`

You can export in several formats, not just XML. Please see the documentation for more information:

https://docs.apify.com/api/v2/actor-task-runs-last-get

https://docs.apify.com/api/v2/dataset-items-get

### Input Parameters

#### Maximum Jobs

The maximum number of jobs that can be retrieved in a single run. Must be between 200 and 5,000.

Please set the memory to 512 for runs above 2,000 jobs!

#### Search Parameters

Our search parameters allow you to include or exclude jobs based on keywords. You may include :\* for prefix matching (e.g., 'Soft:\*' will match 'Software', 'Softball', etc.)

Location search uses phrase matching, so you must use the exact 'City, State/Region, Country' format. All locations use English names (e.g., 'Munich' not 'München', 'Bavaria' not 'Bayern'). For the UK, use the constituent country as the state (e.g., 'London, England, United Kingdom', 'Edinburgh, Scotland, United Kingdom'). For the US, use the full state name (e.g., 'New York, New York, United States', 'San Francisco, California, United States'). You can also search by just a country (e.g., 'United Kingdom') or a city (e.g., 'London'). Do not use abbreviations (NY, US, UK). If anything is unclear or you're unsure about the correct format for a location, please [create an issue](https://apify.com/fantastic-jobs/career-site-job-listing-api/issues/open).

WARNING. The description searches are VERY intensive and at risk of time-out. Please be very specific, limit your searches to a handful of keywords, and combine with one of the other searches, preferably titleSearch. If you receive errors while using descriptionSearch or descriptionExclusionSearch, please reach out to us. We're here to

- `titleSearch`: Terms to search in job titles
- `titleExclusionSearch`: Terms to exclude from job titles
- `locationSearch`: Terms to search in job locations
- `locationExclusionSearch`: Terms to exclude from job locations
- `descriptionSearch`: Terms to search in job descriptions (includes title)
- `descriptionExclusionSearch`: Terms to exclude from job descriptions (includes title)
- `organizationSearch`: Terms to search in organization names
- `organizationExclusionSearch`: Terms to exclude from organization names

#### Domain Filter

Alternative for organizationSearch. Allows filtering on company domain instead of searching on name. Requires an exact match.

- `domainFilter`: Domains to include
- `domainExclusionFilter`: Domains to exclude

#### Has No Location

- `hasNoLocation`: Return only jobs with no normalized location (`locations_derived` is null). Useful for surfacing jobs whose source feed didn't include structured location data. Don't combine with location search, which would always return zero rows.

#### Description Type

Type of description to fetch. Options:

- `text`: Plain text description
- `html`: HTML formatted description

#### Remote (deprecated, use AI Work Arrangement)

The `remote only (legacy)` parameter is deprecated. When set to true it is translated to `aiWorkArrangementFilter` = `Remote OK,Remote Solely`, and it is ignored if you set `aiWorkArrangementFilter` explicitly. Use the AI Work Arrangement filter directly for more precise results.

#### Remove Agency Jobs

- `removeAgency`: Filter out recruitment agencies

#### AI Filters

> AI-enriched fields are now included by default. The `includeAi` parameter has been removed.

- `aiEmploymentTypeFilter`: Filter by employment type. Available options: `FULL_TIME`, `PART_TIME`, `CONTRACTOR`, `TEMPORARY`, `INTERN`, `VOLUNTEER`, `PER_DIEM`, `OTHER`

- `aiWorkArrangementFilter`: Filter by work arrangement. Remote OK = remote with an office available. Remote Solely = remote with no office available. Include both to include all remote jobs. Available options: `On-site`, `Hybrid`, `Remote OK`, `Remote Solely`

- `hasSalary`: Filter for jobs with salary information only. Set to false to include all jobs. Results include jobs that have either an AI enriched salary or a raw salary (discovered in the job posting schema). *(Previously `aiHasSalary`, which still works as a deprecated alias.)*

- `aiExperienceLevelFilter`: Filter by years of experience. Available options: `0-2`, `2-5`, `5-10`, `10+`

- `aiVisaSponsorshipFilter`: Filter for jobs offering visa sponsorship only. Set to false to include all jobs.

- `aiTaxonomiesFilter`: Filter by AI taxonomies. This filter is quite broad.
  Available options: Technology, Healthcare, Management & Leadership, Finance & Accounting, Human Resources, Sales, Marketing, Customer Service & Support, Education, Legal, Engineering, Science & Research, Trades, Construction, Manufacturing, Logistics, Creative & Media, Hospitality, Environmental & Sustainability, Retail, Data & Analytics, Software, Energy, Agriculture, Social Services, Administrative, Government & Public Sector, Art & Design, Food & Beverage, Transportation, Consulting, Sports & Recreation, Security & Safety

- `aiTaxonomiesPrimaryFilter`: Filter by primary AI taxonomy. This filter will select jobs based on their primary AI Taxonomy

- `aiTaxonomiesExclusionFilter`: Exclude jobs by AI taxonomies.

- `aiLanguageFilter`: Filter by the AI-detected language of the job description (e.g. `English`, `French`, `German`, `Spanish`). Matches the `ai_job_language` field.

#### LinkedIn Filters

- `includeCompanyDetails`: Include basic company data fields (LinkedIn, Crunchbase, logo). We use AI to map each job to a LinkedIn organization. We map over 95% of all jobs with 99% accuracy. *(Previously `includeLinkedIn`, which still works as a deprecated alias.)*

- `liIndustryFilter`: Filter by LinkedIn industries. You can find an overview on our website: [LinkedIn Industries](https://fantastic.jobs/article/linkedin-industries)

- `liIndustryExclusionFilter`: Exclude jobs from specific LinkedIn industries. Same exact, case-sensitive matching as `liIndustryFilter`.

- `liOrganizationEmployeesLte`: Maximum number of employees in the company. Must be greater than or equal to 0.

- `liOrganizationEmployeesGte`: Minimum number of employees in the company. Must be greater than or equal to 0.

- `liOrganizationSizeFilter`: Filter by LinkedIn company-size bucket (matches the `org_linkedin_size` field). Available options: `1`, `2-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`

### Output Schema

#### **Output Fields**

| Name | Description|Type|
| -------- | ------- | ------- |
|id| The job's internal ID, also used for expiration. **Now returned as an integer** (previously a stringified number). | number |
|title| Job Title| text |
|organization| Name of the hiring organization | text
|organization\_url| URL to the organization's page | text
|organization\_logo| *Deprecated:* ATS-supplied logo URL that may break or expire. Prefer `org_logo_permalink`. | text
|date\_posted| Date & Time of posting | timestamp
|date\_created| Date & Time of indexing in our systems | timestamp
|date\_valid\_through| Date & Time of the future expiry date. Null in most cases. | timestamp
|locations| Source-supplied location objects per the [Google JobPosting schema](https://developers.google.com/search/docs/appearance/structured-data/job-posting#job-posting-definition). Use the `*_derived` fields for normalized, geocoded values. | json\[]
|locations\_alt| Fallback location string used when the source ATS doesn't supply structured location data. | text
|locations\_derived| Derived location data, matched with a database. This is the field you search locations on. | text\[] \[{city, admin (state), country}]
|location\_type| To identify remote jobs: 'TELECOMMUTE' per the [Google JobPosting schema](https://developers.google.com/search/docs/appearance/structured-data/job-posting#job-posting-definition) | text
|location\_requirements| Location requirement to accompany remote (TELECOMMUTE) jobs per the [Google JobPosting schema](https://developers.google.com/search/docs/appearance/structured-data/job-posting#job-posting-definition). | json\[]
|salary| Source-supplied salary object per the [Google JobPosting schema](https://developers.google.com/search/docs/appearance/structured-data/job-posting#job-posting-definition). Often partial; prefer the `ai_salary_*` fields. | json
|employment\_type| Types like 'Full Time', 'Contract', 'Internship'. Usually a single value; prefer `ai_employment_type`. | text\[]
|url| The URL of the job, can be used to direct traffic to apply for the job | text
|source| the source ATS or career site | text
|source\_type| always 'ats' for this Actor | text
|source\_domain| the domain of the career site. Not present for all ATS; use `domain_derived`. | text
|description\_text| plain text job description - if included | text
|description\_html| raw HTML job description - if included | text
|cities\_derived| All cities from locations\_derived |json\[]
|regions\_derived| All regions/states/provinces from locations\_derived| json\[]
|countries\_derived| All countries from locations\_derived | json\[]
|timezones\_derived| Timezones derived from locations\_derived | json\[]
|lats\_derived| lats derived from locations\_derived | json\[]
|lngs\_derived| lngs derived from locations\_derived | number\[]
|counties\_derived| All counties from locations\_derived. Only present when cities\_derived is not. | text\[]
|date\_modified| Date & Time of job modification being discovered and parsed in our database | timestamp
|modified\_fields| The fields that have been modified during our job modification checks | text\[]
|domain\_derived| We use AI to discover the domain of the employer's main website. The accuracy of this field is ~98% | text

#### **AI Output Fields**

These AI-enriched fields are included by default (the deprecated `includeAi` parameter has been removed).
These fields are derived from the text with an LLM and might contain mistakes.

| Name | Description|Type|
| -------- | ------- | ------- |
ai\_salary\_currency | The salary currency |text
ai\_salary\_value | The salary value, if there's a single salary with no salary range | numeric
ai\_salary\_min\_value | The minimum salary in a range | numeric
ai\_salary\_max\_value | The maximum salary in a range | numeric
ai\_salary\_unit\_text | If the salary is per HOUR/DAY/WEEK/MONTH/YEAR | text
ai\_benefits | An array with other non-salary benefits mentioned in the job listing | text\[]
ai\_experience\_level | years of experience required, one of: 0-2, 2-5, 5-10, or 10+ | text
ai\_work\_arrangement | Remote Solely/Remote OK/Hybrid/On-site. Remote solely is remote without an office available, Remote OK is remote with an optional office. |text
ai\_work\_arrangement\_office\_days | when work\_arrangement is Hybrid, returns the number of days per week in office | bigint
ai\_remote\_location | When remote but only in a certain location, returns the location | text\[]
ai\_remote\_location\_derived | Derived remote location data, which is the raw data (ai\_remote\_location) matched with a database of locations. This is the same database as the locations\_derived field. | text\[]
ai\_key\_skills | An array of key skills mentioned in the job listing | text\[]
ai\_hiring\_manager\_name | If present, the hiring manager name | text
ai\_hiring\_manager\_email\_address | If present, the hiring manager's email address | text
ai\_core\_responsibilities | A 2-sentence summary of the job's core responsibilities | text
ai\_requirements\_summary | A 2-sentence summary of the job's requirements | text
ai\_working\_hours | The number of required working hours. Defaults to 40 if not mentioned | bigint
ai\_employment\_type | One or more employment types as derived from the job description: FULL\_TIME/PART\_TIME/CONTRACTOR/TEMPORARY/INTERN/VOLUNTEER/PER\_DIEM/OTHER | text\[]
ai\_job\_language | The language of the job description | text
ai\_visa\_sponsorship  | Returns true if the job description mentions Visa sponsorship opportunities | boolean
ai\_keywords | An array of AI extracted keywords from the job description | text\[]
ai\_taxonomies\_a | Up to 5 AI-assigned taxonomies ordered by relevancy; the first item is the primary taxonomy | text\[]
ai\_education | An array of AI extracted education requirements from the job description | text\[]

#### **Company Output Fields**

Set `includeCompanyDetails` to true to include the fields in this table (the old `includeLinkedIn` name still works as a deprecated alias).
These fields are matched to the job company with AI and might contain mistakes.

| Name | Description|Type|
| -------- | ------- | ------- |
org\_linkedin\_name | The company's full name from LinkedIn | text
org\_linkedin\_headcount | the number of employees within the job's company according to LinkedIn | int
org\_linkedin\_website | url to the company's main website | text
org\_linkedin\_size | the employee count range according to the company | text
org\_linkedin\_slogan | the company's slogan | text
org\_linkedin\_industry | the company's industry. This is a fixed list that the company can choose from, so could be useful for classification. Keep in mind that this is in the language of the company's HQ | text
org\_linkedin\_followers | the company's followers on LinkedIn | int
org\_linkedin\_headquarters | the company's HQ location | text
org\_linkedin\_type | the company's type, like 'Privately Held', 'Public', etc | text
org\_linkedin\_founded\_date | the company's founded date | text
org\_linkedin\_specialties | the company's specialties | text\[]
org\_linkedin\_locations | the full address of the company's locations | text\[]
org\_linkedin\_description | the description of the company's LinkedIn page | text
org\_linkedin\_recruitment\_agency\_derived | If the company is a recruitment agency or job board, true or false (AI-identified). The accuracy may vary. | bool
org\_linkedin\_slug | The company-specific part of the LinkedIn URL (e.g. 'tesla-motors' in https://www.linkedin.com/company/tesla-motors/). **Always returned**, regardless of this flag, so jobs can be joined to organization data. | text
org\_crunchbase\_categories | List of Crunchbase categories the company is tagged with | text\[]
org\_crunchbase\_total\_investment | Total investment in USD raised by the company according to Crunchbase | int
org\_logo\_permalink | Stable hosted URL for the company's logo | text

# Actor input Schema

## `limit` (type: `integer`):

Maximum number of jobs to return per run. The minimum is 200 and the maximum is 5,000. Please set the memory to 1GB for runs above 2,000 jobs.

## `includeCompanyDetails` (type: `boolean`):

Include basic company data fields (LinkedIn, Crunchbase, logo). We use AI to map each job to a LinkedIn organization. We map over 95% of all jobs with 99% accuracy.

## `titleSearch` (type: `array`):

Array of job titles to search for. Use :\* for prefix matching (e.g., 'Soft:\*' will match 'Software', 'Softball', etc.)

## `titleExclusionSearch` (type: `array`):

Array of job titles to exclude. Use :\* for prefix matching (e.g., 'Soft:\*' will match 'Software', 'Softball', etc.)

## `locationSearch` (type: `array`):

Array of locations to search for. Location search uses phrase matching, so you must use the exact 'City, State/Region, Country' format. All locations use English names (e.g., 'Munich' not 'München', 'Bavaria' not 'Bayern'). For the UK, use the constituent country as the state (e.g., 'London, England, United Kingdom', 'Edinburgh, Scotland, United Kingdom'). For the US, use the full state name (e.g., 'New York, New York, United States', 'San Francisco, California, United States'). You can also search by just a country (e.g., 'United Kingdom') or a city (e.g., 'London'). Do not use abbreviations (NY, US, UK). Use :\* for prefix matching (e.g., 'New:\*' will match 'New York', 'New Jersey', etc.). If anything is unclear, please create an issue.

## `locationExclusionSearch` (type: `array`):

Array of locations to exclude. Location search uses phrase matching, so you must use the exact 'City, State/Region, Country' format. All locations use English names. For the UK, use the constituent country as the state (e.g., 'London, England, United Kingdom'). Do not use abbreviations (NY, US, UK). Use :\* for prefix matching (e.g., 'New:\*' will match 'New York', 'New Jersey', etc.). If anything is unclear, please create an issue.

## `descriptionSearch` (type: `array`):

Warning, this search is very intensive. Please be very specific, limit your searches to a handful of keywords, and combine with one of the other searches, preferably titleSearch. Array of terms to search in job title & description. Use :\* for prefix matching (e.g., 'Python:\*' will match 'Python', 'Pythonic', etc.)

## `descriptionExclusionSearch` (type: `array`):

Warning, this search is very intensive. Please be very specific, limit your searches to a handful of keywords, and combine with one of the other searches, preferably titleSearch. Array of terms to exclude from job title & description. Use :\* for prefix matching (e.g., 'Python:\*' will match 'Python', 'Pythonic', etc.)

## `organizationSearch` (type: `array`):

Array of organization names to search for. Use :\* for prefix matching (e.g., 'Google:\*' will match 'Google', 'Google Cloud', etc.) Getting several companies with the same name? Use the domainFilter to filter by company domains.

## `organizationExclusionSearch` (type: `array`):

Array of organization names to exclude. Use :\* for prefix matching (e.g., 'Google:\*' will match 'Google', 'Google Cloud', etc.) Getting several companies with the same name? Use the domainExclusionFilter to filter by company domains.

## `domainFilter` (type: `array`):

Array of company domains to search for. Requires an exact match.

## `domainExclusionFilter` (type: `array`):

Array of company domains to exclude. Requires an exact match.

## `descriptionType` (type: `string`):

Format of the job description

## `aiEmploymentTypeFilter` (type: `array`):

Filter by employment type

## `aiWorkArrangementFilter` (type: `array`):

Filter by work arrangement. Remote OK = remote with an office available. Remote Solely = remote with no office available. Include both to include all remote jobs.

## `hasSalary` (type: `boolean`):

Filter for jobs with salary information only. Set to false to include all jobs. Results include jobs that have either an AI enriched salary or a raw salary (discovered in the job posting schema).

## `aiExperienceLevelFilter` (type: `array`):

Filter by years of experience

## `aiVisaSponsorshipFilter` (type: `boolean`):

Filter for jobs offering visa sponsorship only. Set to false to include all jobs.

## `aiTaxonomiesFilter` (type: `array`):

Filter by AI taxonomies

## `aiTaxonomiesPrimaryFilter` (type: `array`):

Filter by primary AI taxonomy

## `aiTaxonomiesExclusionFilter` (type: `array`):

Exclude jobs by AI taxonomies. Warning: this filter is very broad and will exclude jobs that are not in any of the selected taxonomies. For example, 'Healthcare' might exclude Software Engineer job in Healthcare. Use inclusive filters to avoid this.

## `removeAgency` (type: `boolean`):

Filter out recruitment agencies

## `liIndustryFilter` (type: `array`):

Filter by LinkedIn industries

## `liOrganizationEmployeesLte` (type: `integer`):

Maximum number of employees in the company

## `liOrganizationEmployeesGte` (type: `integer`):

Minimum number of employees in the company

## `liIndustryExclusionFilter` (type: `array`):

Exclude jobs from these LinkedIn industries. Same exact, case-sensitive matching as LinkedIn Industries.

## `liOrganizationSizeFilter` (type: `array`):

Filter by LinkedIn company-size bucket (matches the org\_linkedin\_size field).

## `aiLanguageFilter` (type: `array`):

Filter by the AI-detected language of the job description (e.g. English, French, German, Spanish). Matches the ai\_job\_language field.

## `hasNoLocation` (type: `boolean`):

When true, returns only jobs with no normalized location (locations\_derived is null). Do not combine with location search, which would always return zero rows.

## `includeLinkedIn` (type: `boolean`):

Deprecated alias of includeCompanyDetails with the same functionality. Include basic company data fields. We use AI to map each job to a LinkedIn organization. We map over 95% of all jobs with 99% accuracy.

## `remote only (legacy)` (type: `boolean`):

Deprecated in favor of AI Work Arrangement (aiWorkArrangementFilter). When set to true, this is translated to ai\_work\_arrangement=Remote OK,Remote Solely. If you set AI Work Arrangement explicitly, this parameter is ignored. Set to false to include all jobs.

## `aiHasSalary` (type: `boolean`):

Deprecated alias of hasSalary with the same functionality. Filter for jobs with salary information only. Set to false to include all jobs. Results include jobs that have either an AI enriched salary or a raw salary (discovered in the job posting schema).

## Actor input object example

```json
{
  "limit": 200,
  "descriptionType": "text",
  "hasNoLocation": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("fantastic-jobs/icims-jobs-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("fantastic-jobs/icims-jobs-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call fantastic-jobs/icims-jobs-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fantastic-jobs/icims-jobs-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NSyH1rtONeF065Ajj/builds/yhhZR3iujLm2UfGCN/openapi.json
