# Manpower Jobs Search Scraper (`jobsapi/manpower-jobs-search-scraper`) Actor

Extract rich Manpower jobs with pay, structured description sections, employment details, coordinates, and search metadata.

- **URL**: https://apify.com/jobsapi/manpower-jobs-search-scraper.md
- **Developed by:** [Jobs API](https://apify.com/jobsapi) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 job details

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

### What does Manpower Jobs Search Scraper do?

Manpower Jobs Search Scraper extracts source-verified public jobs from [Manpower](https://www.manpower.com/) through its official search API and detail pages. It provides a bounded **Manpower jobs API alternative** for keyword searches and exact public job URLs, without login, browser automation, CAPTCHA solving, or fabricated data.

### Why use Manpower Jobs Search Scraper?

- Search Manpower by job title, skill, or keyword.
- Filter official search results by public location text.
- Fetch and verify every accepted public detail page.
- Extract descriptions, sections, responsibilities, requirements, benefits, salary, dates, coordinates, and employment metadata.
- Use `single` and `multiple` modes for exact Manpower detail URLs.
- Schedule runs and consume results through Apify datasets, API access, webhooks, and integrations.
- Keep work predictable with item, candidate, page, request, timeout, retry, and run-deadline limits.

### What data can Manpower Jobs Search Scraper extract?

| Field | Type | Description |
| --- | --- | --- |
| `jobId` | string | Official Manpower job identifier |
| `title` | string | Job title |
| `company` | string | Recruiting organization |
| `location` | string | Published location |
| `salary` | string | Published compensation text |
| `description` | string | Sanitized full description |
| `postedDate` | string | Source-backed posting date |
| `applyUrl` | string | Distinct source-published application target, when available |
| `jobUrl` | string | Verified canonical Manpower job URL |

### How to scrape Manpower jobs

1. Select `search`, `single`, or `multiple` mode.
2. Enter a query and optional location, or provide official Manpower job URLs.
3. Set `maxItems`, `maxCandidates`, and `maxPages` for the desired scope.
4. Keep `includeDescription` enabled for sections, bullets, and HTML.
5. Start the Actor and review the dataset plus `RUN_SUMMARY`.
6. Download or integrate the verified records.

### How much will it cost to scrape Manpower?

The Actor uses lightweight native HTTP requests. Cost depends on search pages, detail pages, retries, and response time. Start with `maxItems: 3`, `maxPages: 2`, and `maxRequests: 20`. Request and wall-clock limits stop runaway runs, and the summary reports actual request counts.

### Input

See the input tab for full configuration options. `location` is matched against official search-result location text because the public API does not expose a stable free-text location parameter. Direct modes accept only canonical HTTPS Manpower paths shaped like `/<locale>/job/<category>/<slug>/<numeric-id>`.

```json
{
  "mode": "search",
  "query": "developer",
  "location": "United States",
  "maxItems": 3,
  "maxCandidates": 20,
  "maxPages": 2,
  "maxRequests": 20,
  "includeDescription": true
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Every row has verified source identity, canonical URL, detail HTTP status, posting date, description, and request receipts.

```json
{
  "recordType": "job",
  "jobId": "5868065",
  "title": "Example Developer",
  "company": "Manpower",
  "location": "United States",
  "postedDate": "2026-08-30",
  "jobUrl": "https://www.manpower.com/en/job/technology/example-developer/5868065",
  "sourceRecordVerified": true,
  "detailVerified": true
}
```

Diagnostics are stored separately in `RUN_DIAGNOSTICS`; they are never presented as jobs. `RUN_REQUESTS`, `RUN_HEALTH`, and `RUN_METADATA` preserve bounded execution evidence. A missing application URL means Manpower did not publish a distinct external target; the Actor never substitutes the detail URL.

### Tips and advanced options

- Increase `maxPages` only when a location filter requires scanning additional official results.
- Keep `maxRequests` above the expected search-page plus detail-page count.
- Use direct modes when exact job URLs are already known.
- Retry temporary source failures later rather than weakening verification.

### FAQ, disclaimer, and support

#### Does this Actor use a proxy or bypass access controls?

No. It uses direct public Manpower endpoints. The compatibility `proxyConfiguration` input is accepted but intentionally ignored.

#### Why was a candidate omitted?

Candidates must provide a verified canonical identity, title, company, location, description, posting date, source record, detail response, and request receipt. Incomplete candidates are retained as diagnostics rather than dataset rows.

This Actor extracts only publicly available job information. Results can still contain personal data published by the source. Personal data is protected by the GDPR and other regulations; process it only with a legitimate purpose and consult legal counsel if unsure. Follow Manpower's terms and applicable law. Use the Issues tab for reproducible problems and the API tab for programmatic access.

# Actor input Schema

## `mode` (type: `string`):

Search the official Manpower API or fetch exact official detail URLs.

## `query` (type: `string`):

Job title, skill, or keyword.

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

Optional city, state, or country text retained from official search results.

## `jobUrl` (type: `string`):

Official HTTPS Manpower /<locale>/job/<category>/<slug>/<numeric-id> URL.

## `jobUrls` (type: `array`):

Official HTTPS Manpower detail URLs for multiple mode.

## `url` (type: `string`):

Alias for jobUrl.

## `urls` (type: `array`):

Alias for jobUrls.

## `startUrls` (type: `array`):

Compatibility list of official detail URL objects.

## `maxItems` (type: `integer`):

Maximum complete records written to the dataset.

## `maxCandidates` (type: `integer`):

Maximum search/detail candidates considered.

## `maxPages` (type: `integer`):

Hard upper bound on official search API pages.

## `maxRequests` (type: `integer`):

Hard upper bound on direct official HTTPS requests, including retries.

## `timeoutMs` (type: `integer`):

Maximum wait for one official request.

## `deadlineMs` (type: `integer`):

Hard wall-clock bound for the complete run.

## `retries` (type: `integer`):

Small bounded retry count for transient direct requests.

## `includeDescription` (type: `boolean`):

Keep required description text and optionally omit HTML, facts, and section arrays.

## `proxyConfiguration` (type: `object`):

Accepted for compatibility but not used; this Actor uses direct official HTTPS.

## Actor input object example

```json
{
  "mode": "search",
  "query": "developer",
  "location": "United States",
  "maxItems": 3,
  "maxCandidates": 20,
  "maxPages": 2,
  "maxRequests": 20,
  "timeoutMs": 15000,
  "deadlineMs": 120000,
  "retries": 1,
  "includeDescription": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "query": "developer",
    "location": "United States"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jobsapi/manpower-jobs-search-scraper").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 = {
    "query": "developer",
    "location": "United States",
}

# Run the Actor and wait for it to finish
run = client.actor("jobsapi/manpower-jobs-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "developer",
  "location": "United States"
}' |
apify call jobsapi/manpower-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jobsapi/manpower-jobs-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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