# Indeed Job Listing (`truefetch/indeed-job-listing`) Actor

Scrape Indeed job listings by keyword, country, location, remote, distance, job type, and recency with structured job, salary, company, and contact fields.

- **URL**: https://apify.com/truefetch/indeed-job-listing.md
- **Developed by:** [TrueFetch](https://apify.com/truefetch) (community)
- **Categories:** Jobs, Social media, News
- **Stats:** 348 total users, 14 monthly users, 100.0% runs succeeded, 12 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.38 / 1,000 results

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

> **Affiliate disclosure:** TrueFetch may earn a commission if you sign up through an Apify link on this page, at no extra cost to you.

**Search public Indeed job listings across 61 countries and receive a normalized 41-field dataset for recruiting research, salary analysis, and job-data workflows.**

- **61 Indeed markets** selectable in the current local input schema.
- **41 normalized fields** covering jobs, compensation, companies, applications, and public contact signals.
- **9 public inputs, with only 3 required**, so location and filters stay optional.
- **Public Store snapshot: 342 users and a 5.0 rating on July 21, 2026; deployed Store content may reflect an earlier release.**

[**Run a one-result test**](https://apify.com/truefetch/indeed-job-listing?fpr=aiagentapi) · [**View API**](https://apify.com/truefetch/indeed-job-listing/api?fpr=aiagentapi)

With `max_results: 1`, one FREE-tier result costs **$0.01375**: $0.01000 for Actor Start plus $0.00375 for one published result.

### What does Indeed Job Listing do?

Indeed Job Listing is a TrueFetch Actor and Indeed jobs API for collecting public vacancy data from one selected country at a time. Give it a keyword, country, and result limit; optionally add a location, distance, work-mode or job-type filter, posting-time filter, or salary currency. Each accepted listing is delivered through one stable Dataset structure.

The Actor is useful when a team needs source-attributed job data without maintaining a separate integration for every Indeed market. A result can include the listing URL, employer application URL, role description, location, work mode, dates, salary, company profile details, and public contact signals when Indeed or the employer publishes them.

Indeed Job Listing is independent of Indeed and is not an official Indeed API. It does not submit applications, collect resumes, rank candidates, access private accounts, or guarantee that every optional field is available. Search relevance and listing availability remain source-dependent.

### How do I run Indeed Job Listing?

1. Open [Indeed Job Listing on Apify](https://apify.com/truefetch/indeed-job-listing?fpr=aiagentapi).
2. Enter the required `keyword`, `country`, and `max_results` values.
3. Add only the optional filters that match the search you actually want.
4. Start with one result, inspect the Dataset item, and then increase volume.

This README uses one scenario throughout: search for one remote, full-time Data Engineer role in Germany, centered on Berlin, and convert usable salary values to EUR.

```json
{
  "keyword": "Data Engineer",
  "country": "Germany",
  "max_results": 1,
  "remote_only": true,
  "job_type": "fulltime",
  "location": "Berlin",
  "distance": 50,
  "currency": "EUR"
}
```

`max_results` is the maximum number of Indeed jobs published by this single-platform run. It is not a promise that the source will have that many relevant, accessible listings.

### What data does Indeed Job Listing return?

The default Dataset exposes **41 fields**. Values that Indeed or an employer does not publish remain empty rather than being inferred.

| Field group | Fields |
| --- | --- |
| Processing | `processor`, `processed_at` |
| Source and application | `platform`, `platform_url`, `official_url`, `easy_apply` |
| Role details | `title`, `description`, `job_type`, `job_level`, `job_function`, `listing_type`, `skills`, `experience_range` |
| Location and work mode | `location`, `is_remote`, `work_from_home` |
| Dates and volume | `posted_date`, `valid_through`, `applicant_count`, `vacancy_count` |
| Compensation | `salary_minimum`, `salary_maximum`, `salary_currency`, `salary_period` |
| Company | `company_name`, `company_type`, `company_founded`, `company_industry`, `company_url`, `company_website`, `company_logo`, `company_addresses`, `company_revenue`, `company_description`, `company_rating`, `employee_count`, `review_count` |
| Public contacts | `emails`, `phones`, `social_links` |

This abbreviated, illustrative item uses the same Berlin Data Engineer scenario:

```json
{
  "platform": "Indeed",
  "platform_url": "https://de.indeed.com/viewjob?jk=example123",
  "official_url": "https://careers.example.com/jobs/data-engineer",
  "title": "Data Engineer",
  "company_name": "Example Data GmbH",
  "location": {
    "raw": "Berlin, Germany",
    "locality": "Berlin",
    "region": "Berlin",
    "country": "Germany",
    "country_code": "DE"
  },
  "is_remote": true,
  "job_type": "fulltime",
  "salary_minimum": 70000,
  "salary_maximum": 90000,
  "salary_currency": "EUR",
  "emails": [],
  "phones": [],
  "processor": "https://apify.com/truefetch/indeed-job-listing",
  "processed_at": "2026-07-21T12:00:00.000Z"
}
```

See the live [Output schema](https://apify.com/truefetch/indeed-job-listing/output-schema?fpr=aiagentapi) for field types and examples.

### What inputs can I configure?

Indeed Job Listing has **9 public inputs** in the current local schema. Only the first three are required.

| Input | Required | What it controls |
| --- | :---: | --- |
| `keyword` | Yes | Job title, skill, employer, or search phrase. |
| `country` | Yes | One of the 61 supported Indeed markets. |
| `max_results` | Yes | Maximum published jobs, from 1 to 10,000. |
| `remote_only` | No | Remote-friendly results when the recency filter is not taking precedence. |
| `distance` | No | Radius from 50 to 10,000 miles around a supplied location. |
| `location` | No | City, region, postcode, or other local search text; omit it for a country-wide search. |
| `posted_since` | No | Absolute or relative posting time; when supplied, this recency filter takes precedence over remote and job-type filters. |
| `job_type` | No | `all`, `fulltime`, `parttime`, `internship`, or `contract`. |
| `currency` | No | Target currency for numeric salary conversion when usable source salary data exists. |

Optional inputs have no documented prefill or example in the schema. Omit a filter instead of assuming a visible default. Use the [Input schema](https://apify.com/truefetch/indeed-job-listing/input-schema?fpr=aiagentapi) for the accepted values.

### What platforms and markets does Indeed Job Listing cover?

The Actor is intentionally single-platform: every search targets **Indeed**. The current schema supports 61 countries:

Argentina, Australia, Austria, Bahrain, Belgium, Brazil, Canada, Chile, China, Colombia, Costa Rica, Denmark, Ecuador, Egypt, Finland, France, Germany, Greece, Hong Kong, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Kuwait, Luxembourg, Malaysia, Mexico, Morocco, Netherlands, New Zealand, Nigeria, Norway, Oman, Pakistan, Panama, Peru, Philippines, Poland, Portugal, Qatar, Romania, Saudi Arabia, Singapore, South Africa, South Korea, Spain, Sweden, Switzerland, Taiwan, Thailand, Turkey, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Venezuela, and Vietnam.

Choose the exact country label from the schema. A country-wide search is possible because `location` is optional. When location is provided, the Actor validates and normalizes it before requesting local results; unsupported or mismatched locations can be rejected rather than silently redirected.

### Why use Indeed Job Listing?

| Capability | Practical benefit |
| --- | --- |
| One Indeed-focused request | Keep the workflow narrow when a multi-board search is unnecessary. |
| One normalized 41-field schema | Load repeat runs into analytics, databases, alerts, or AI tools without remapping columns. |
| Source and official URLs | Review the Indeed listing and employer destination separately when both exist. |
| Optional country-wide or local search | Compare a national market or focus on a city and radius without inventing a location. |
| Salary conversion | Normalize populated numeric salaries into a chosen currency when exchange-rate data is available. |
| Low-volume first test | Verify relevance and field coverage before increasing result volume. |

The main trade-off is source depth versus breadth: this Actor focuses on Indeed and preserves its source behavior. Choose a multi-platform Actor if coverage across several job boards matters more than a single-source workflow.

### Who is Indeed Job Listing for?

| Team | Typical use |
| --- | --- |
| Developers | Add Indeed vacancy search to a product, internal tool, or alerting workflow. |
| Data engineers | Collect repeatable, source-attributed records for a warehouse or pipeline. |
| Labor-market researchers | Compare role demand, work mode, and populated salary ranges across countries. |
| Recruiting operations | Monitor current openings by title, employer, and location. |
| Sales intelligence teams | Treat public hiring activity as one optional company signal. |

The Actor is a poor fit for candidate sourcing, resume extraction, automated applications, guaranteed salary coverage, or historical vacancy archives. Those goals require different data and user permissions.

### How can I use Indeed Job Listing through the API or MCP?

The stable Actor ID is **`truefetch/indeed-job-listing`**. This synchronous HTTP request runs the one-result Berlin scenario and returns Dataset items directly:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/truefetch~indeed-job-listing/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "Data Engineer",
    "country": "Germany",
    "max_results": 1,
    "remote_only": true,
    "job_type": "fulltime",
    "location": "Berlin",
    "distance": 50,
    "currency": "EUR"
  }'
```

For MCP clients, this Streamable HTTP configuration follows the current [Apify MCP documentation](https://docs.apify.com/integrations/mcp):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=truefetch/indeed-job-listing",
      "headers": {
        "Authorization": "Bearer <APIFY_TOKEN>"
      }
    }
  }
}
```

After connecting, ask for the same Berlin Data Engineer search. Use the [API page](https://apify.com/truefetch/indeed-job-listing/api?fpr=aiagentapi) for asynchronous runs, SDK snippets, and OpenAPI details.

### How much does Indeed Job Listing cost?

The Actor uses pay-per-event pricing: one Actor Start event per run and one result event for each normalized job written to the default Dataset.

| Apify tier | Actor Start | Per result | Per 1,000 results |
| --- | ---: | ---: | ---: |
| FREE | $0.01000 | $0.00375 | $3.75 |
| BRONZE | $0.01000 | $0.00363 | $3.63 |
| SILVER | $0.01000 | $0.00350 | $3.50 |
| GOLD / PLATINUM / DIAMOND | $0.01000 | $0.00338 | $3.38 |

One FREE-tier run that publishes one result costs **$0.01375**. A run with no result still incurs Actor Start. Check the live [Pricing tab](https://apify.com/truefetch/indeed-job-listing/pricing?fpr=aiagentapi) before a large or scheduled run because Store prices can change.

### How does Indeed Job Listing compare with alternatives?

| Decision factor | Indeed Job Listing | Multi-board Job Search | Manual or custom integration |
| --- | --- | --- | --- |
| Source scope | Indeed only | Several compatible job boards | Team-defined |
| Output | Normalized 41-field job record | Same normalized family across sources | Whatever the team designs |
| Best first test | One keyword, country, and result | One platform among many | Requires the integration to be ready |
| Source-specific focus | Strong | Balanced against cross-board consistency | Potentially deepest with ongoing ownership |
| Maintenance | Managed Actor | Managed Actor | Team owns failures, changes, and normalization |

Choose Indeed Job Listing when Indeed is the required source and a narrow contract is valuable. Choose [Job Search](https://apify.com/truefetch/job-search?fpr=aiagentapi) when several boards or market-specific alternatives should be searched through one request.

### What are the limits and troubleshooting steps?

| Symptom or limit | Explanation | Next step |
| --- | --- | --- |
| Fewer jobs than requested | `max_results` is a cap, while availability and relevance come from Indeed. | Broaden the keyword, location, or distance and test again. |
| Remote or job type seems ignored | A supplied `posted_since` filter takes precedence in the Indeed request. | Use recency alone, or omit it and use remote/job type. |
| Location is rejected | The location must normalize within the selected country. | Use a clear city, region, or postcode that matches the country. |
| Salary remains empty | Many employers do not publish numeric compensation. | Keep salary nullable and do not infer missing values. |
| Salary is not converted | Conversion needs numeric salary, a source currency, and available exchange-rate data. | Compare only populated converted records. |
| Official URL is empty | Some listings do not expose a separate employer application destination. | Retain `platform_url` as the source record. |
| No results are published | The source may have no accessible relevant listing for the request. | Retry the smallest reproducible input with one broad keyword and `max_results: 1`. |

When opening an [Apify Issue](https://apify.com/truefetch/indeed-job-listing/issues?fpr=aiagentapi), include the run URL, country, keyword, and expected behavior. Never include an API token or private data.

### Frequently asked questions

#### Does Indeed Job Listing require an Indeed account?

No Indeed credentials, cookies, or API key appear in the public inputs. An Apify account is required to run the Actor, and API or authenticated MCP use requires an Apify token.

#### Is location required?

No. Omit `location` for a country-wide search, or provide a city, region, or postcode for a local search.

#### Can I combine posted\_since with remote\_only and job\_type?

The inputs can be supplied together, but the Indeed request applies `posted_since` first. For an unambiguous search, use recency alone or omit it and use remote/job type.

#### Why are company, salary, applicant, or contact fields empty?

Indeed listings and employer pages expose different details. The Actor keeps unavailable values empty rather than fabricating them.

#### Does currency change the search results?

No. `currency` affects conversion of usable salary numbers after collection; it is not a search-ranking or availability filter.

#### Can the same vacancy appear more than once?

Repeated source records can occur as listings change or are republished. Use source URLs plus title, company, and location for downstream deduplication when necessary.

#### Can I schedule recurring Indeed searches?

Yes. Apify schedules and webhooks can repeat a saved input. Test the expected result volume and event cost before enabling a frequent schedule.

### Related TrueFetch Actors

- [LinkedIn Job Listing](https://apify.com/truefetch/linkedin-job-listing?fpr=aiagentapi) — use it when LinkedIn is the required single source.
- [Glassdoor Job Listing](https://apify.com/truefetch/glassdoor-job-listing?fpr=aiagentapi) — use it for Glassdoor listings and company-rating context.
- [Job Search](https://apify.com/truefetch/job-search?fpr=aiagentapi) — use it when one normalized request should cover multiple compatible boards.

### Support and last updated

- [Run Indeed Job Listing](https://apify.com/truefetch/indeed-job-listing?fpr=aiagentapi)
- [View the API](https://apify.com/truefetch/indeed-job-listing/api?fpr=aiagentapi)
- [Report an issue](https://apify.com/truefetch/indeed-job-listing/issues?fpr=aiagentapi)
- [Join the TrueFetch Telegram group](https://t.me/TrueFetch)
- [Contact support on Telegram](https://t.me/AiAgentApi)

**Last updated:** July 21, 2026. Local schema, metadata, pricing, and read-only runtime evidence were verified separately from the older deployed Store content; public Store statistics are dated snapshots.

Start with one result, confirm Indeed relevance and field coverage for your market, and then scale the run.

[**Run a one-result test**](https://apify.com/truefetch/indeed-job-listing?fpr=aiagentapi) · [**View API**](https://apify.com/truefetch/indeed-job-listing/api?fpr=aiagentapi)

# Actor input Schema

## `keyword` (type: `string`):

Job title, skill, or company name to search for

## `country` (type: `string`):

Country where the target job listings are located

## `max_results` (type: `integer`):

Maximum number of jobs to return

## `remote_only` (type: `boolean`):

Restrict results to remote-friendly positions only

## `distance` (type: `integer`):

Search radius in miles around the specified location

## `location` (type: `string`):

City or region to focus the job search results on

## `posted_since` (type: `string`):

Filter by posting time when Remote Only is off and Job Type is All

## `job_type` (type: `string`):

Employment type to filter by: full-time, contract, etc.

## `currency` (type: `string`):

Target currency for converting salary figures

## Actor input object example

```json
{
  "keyword": "Driver",
  "country": "United States",
  "max_results": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset overview of normalized job listings and company fields collected by All Jobs Scraper.

# 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 = {
    "keyword": "Driver",
    "country": "United States",
    "max_results": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("truefetch/indeed-job-listing").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 = {
    "keyword": "Driver",
    "country": "United States",
    "max_results": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("truefetch/indeed-job-listing").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 '{
  "keyword": "Driver",
  "country": "United States",
  "max_results": 10
}' |
apify call truefetch/indeed-job-listing --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=truefetch/indeed-job-listing",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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