# Welcome to the Jungle Jobs Scraper (`insights_data/welcome-to-the-jungle-jobs-scraper`) Actor

Scrape Welcome to the Jungle (WTTJ) jobs by keyword, location, salary, remote, or direct URLs. Extract titles, companies, salaries, skills & apply links — no login. Ideal for recruiting intel, salary research, and job aggregators. Export JSON/CSV.

- **URL**: https://apify.com/insights\_data/welcome-to-the-jungle-jobs-scraper.md
- **Developed by:** [Insights Data](https://apify.com/insights_data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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 Welcome to the Jungle Jobs Scraper do?

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Welcome to the Jungle or its parent companies. All trademarks mentioned are the property of their respective owners. "Welcome to the Jungle" / WTTJ is referenced only to describe the publicly available website this Actor collects data from.

This **Welcome to the Jungle scraper** turns [welcometothejungle.com](https://www.welcometothejungle.com) into clean, structured **WTTJ job listings** you can export, schedule, and reuse. Search by keyword, location, salary, contract type, remote policy, industry, and more — or paste **direct job links** for a targeted bulk pull. No login, no cookies, no account. ✅

Use it as a **WTTJ jobs scraper**, **European job board scraper**, practical **Welcome to the Jungle API** / **WTTJ API alternative**, or full **job data extractor** for **recruiting intelligence**, **salary benchmarking data**, and **job market research**.

Open it in [Apify Console](https://console.apify.com), set your search (or paste URLs), hit **Start** — results stream into your dataset as they arrive.

#### ✨ What can this WTTJ jobs scraper do?

- 🔗 **Two ways in** — keyword + filters **or** bulk direct job URLs to **scrape Welcome to the Jungle** listings
- 📝 **Two detail levels** — fast core fields, or full descriptions, benefits, skills, tools & apply links
- 🧰 **Deep filters** — location + radius, contract, remote, salary floor, experience, company size, sector, category, language, posted-date window
- 🌍 **Multi-region sites** — 🇺🇸 US · 🇫🇷 France · 🇪🇸 Spain · 🇨🇿 Czechia · 🇸🇰 Slovakia
- 🏠 **Remote & hybrid** — filter fully remote, hybrid, or on-site for **remote jobs scraper** workflows
- 📊 **Four output views** — Overview · Compensation · Company Profile · Full Listing
- ⚡ **Live results** — each job lands in Output the moment it’s ready
- 🧩 **Apify platform powers** — scheduling, monitoring, API access, MCP, webhooks, and 1,000+ integrations

#### 📦 What data can you extract from Welcome to the Jungle?

| 🗂️ Section | 📌 What you get |
|---|---|
| 💼 Job core | Title, URL, apply link, contract type, remote policy, publish dates |
| 💰 Compensation | Salary min/max, currency, period, yearly-normalized ranges when disclosed |
| 🎓 Requirements | Experience years, education level, profession & category |
| 📍 Location | Offices (city, country, address), department |
| 📝 Full listing | Summary, HTML description, profile, benefits, skills, tools, key missions |
| 🏢 Company profile | Name, industry, size, website, socials, open-jobs count, founding year |

As a **tech jobs scraper Europe** and **job board aggregator** input, it also works for internships, freelance, and graduate programs — filter by contract type or pull everything together.

### 🌟 Why scrape Welcome to the Jungle jobs?

Welcome to the Jungle is one of Europe’s richest public career sites. Teams still need structured **employment data** without building a private crawler. This **job listings scraper** is a practical **job search API**-style feed for:

- 📋 Building niche boards or aggregators from **Welcome to the Jungle jobs**
- 💰 **Salary benchmarking data** by role, seniority, or city
- 📈 Tracking hiring demand for **job market research** and **recruiting intelligence**
- 🔔 Fresh-post monitors (`datePosted: "1"`) as a standing **hiring data scraper**
- 🎯 Watching a sector or company’s open roles with a **company careers scraper**
- 🧪 Feeding ATS / CRM / alert pipelines with clean **extract job postings** JSON

### 🚀 How to scrape Welcome to the Jungle (Apify Console)

1. Open **Welcome to the Jungle Jobs Scraper** in [Apify Console](https://console.apify.com)
2. Enter a **Search Query** (or paste **Direct Job URLs** to skip search)
3. Set region, location, contract / remote filters, and **Max Items**
4. Leave **Include Full Job Details** on for descriptions & apply links — or turn off for a faster pass
5. Click **Start** and watch the Output table fill in real time
6. Export JSON / CSV / Excel — or pull via API / MCP

💡 Tip: for a **France jobs scraper** pass, set `websiteCountry` to `fr` and `location` to `Paris` (or use `countryCode: "FR"`).

### 📥 Input

Simple JSON — no coding required:

```json
{
  "query": "product manager",
  "websiteCountry": "en",
  "location": "Paris",
  "locationRadius": "50",
  "contractTypes": ["FULL_TIME"],
  "remote": ["fulltime", "partial"],
  "includeDetails": true,
  "maxItems": 100
}
```

**Direct URL mode** (overrides search):

```json
{
  "startUrls": [
    { "url": "https://www.welcometothejungle.com/en/companies/acme/jobs/backend-engineer_paris" }
  ]
}
```

| Field | Description |
|---|---|
| 🔗 `startUrls` | Direct WTTJ job links — targeted **job listings scraper** mode |
| 🔍 `query` | Keyword (title, skill, company) for this **Welcome to the Jungle scraper** |
| 🎯 `searchOnlyInJobTitle` | Match query against titles only |
| 🌍 `websiteCountry` | `en` · `fr` · `es` · `cs` · `sk` |
| 📍 `location` / `locationRadius` | City/region + radius (miles) |
| 🏳️ `countryCode` | ISO office country (overrides location) |
| ↕️ `sortBy` / 🗓️ `datePosted` | Relevance or newest; freshness window |
| 📄 `contractTypes` / 🏠 `remote` | Employment type & remote policy |
| 🏭 `sector` / 🗂️ `categories` | Industry & profession filters |
| 🎓 Experience / 💰 `salaryMin` / 🏢 `companySize` | Seniority, salary floor, headcount band |
| 📦 `maxItems` | Cap jobs saved (`0` = unlimited) |
| 📝 `includeDetails` | Full listing enrichment for **WTTJ job listings** |

See the **Input** tab for every field with helpful defaults.

### 📤 Output

Results stream live into the dataset (switch views in **Output**):

- **📋 Overview** — title, company, contract, remote, salary, publish date, link
- **💰 Compensation & Experience** — salary range, experience & education
- **🏢 Company Profile** — industry, size, website, socials, open jobs
- **📝 Full Listing** — description, benefits, skills, tools, apply URL

**Job** example:

```json
{
  "title": "Senior Backend Engineer",
  "url": "https://www.welcometothejungle.com/en/companies/acme/jobs/senior-backend-engineer_paris",
  "applyUrl": "https://acme.example.com/apply/12345",
  "contractType": "full_time",
  "contractTypeName": "Full-time (permanent)",
  "remote": "partial",
  "salaryMin": 55000,
  "salaryMax": 70000,
  "salaryCurrency": "EUR",
  "salaryPeriod": "yearly",
  "hasSalary": true,
  "experienceMin": 3,
  "professionName": "Backend Developer",
  "professionCategoryName": "Tech & Engineering",
  "publishedAt": "2026-09-01T09:00:00Z",
  "offices": [
    { "city": "Paris", "country": "France", "countryCode": "FR" }
  ],
  "benefits": ["Health insurance", "Remote-friendly", "Learning budget"],
  "companyName": "Acme Corp",
  "companyUrl": "https://www.welcometothejungle.com/en/companies/acme",
  "companyIndustry": "Tech",
  "companySize": 250,
  "scrapedAt": "2026-09-08T12:00:00.000Z"
}
```

With `includeDetails` on, each row can carry 70+ fields — description HTML, skills, tools, ATS questions, and extended company data.

### 🤖 Use via API (Welcome to the Jungle API style)

Call the Actor like a lightweight **Welcome to the Jungle API** / **job search API** and get dataset items back:

```bash
curl -X POST "https://api.apify.com/v2/acts/<YOUR_USERNAME>~welcome-to-the-jungle-jobs-scraper/run-sync-get-dataset-items" \
     -H "Authorization: Bearer $APIFY_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"query": "data scientist", "location": "Berlin", "maxItems": 50}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("YOUR_USERNAME/welcome-to-the-jungle-jobs-scraper").call(run_input={
    "query": "software engineer",
    "location": "Paris",
    "contractTypes": ["FULL_TIME"],
    "maxItems": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['title']} at {item['companyName']}")
```

Clean, LLM-ready JSON — use from Python, Node.js, Claude, ChatGPT, or agents via [Apify MCP](https://docs.apify.com/platform/integrations/mcp). Schedule runs, webhooks, and 1,000+ integrations (Sheets, Slack, n8n, warehouses).

### 🎯 Best use cases for this job data extractor

- 📋 Niche job boards & aggregators fed by **Welcome to the Jungle jobs**
- 💰 **Salary benchmarking data** across roles, cities, and seniority
- 📈 **Job market research** on tech stacks, categories, and industries
- 🔔 Daily fresh-post monitors as a standing **hiring data scraper**
- 🎯 **Recruiting intelligence** on a company or sector’s open roles
- 🏠 **Remote jobs scraper** / hybrid role discovery across EU markets
- 🎓 **Internship scraper WTTJ** and graduate-program pipelines
- 🔌 ATS / CRM feeds via structured **extract job postings** exports

### 🔗 Integrations & related Actors

| Actor | What it helps with |
|---|---|
| [Y Combinator Scraper](https://apify.com) | YC companies, founders, open jobs, and Launch YC posts |
| [Google Ads Transparency Center Scraper & API](https://apify.com) | Competitor ad creatives and brand ad tracking |
| [Stocktwits Scraper](https://apify.com) | Live stock & crypto social sentiment |

Need a custom pipeline (multi-board job sync, enrichment, CRM hooks, or private **job board aggregator** feeds)? Email **hello.insights.data@gmail.com**.

### ❓ FAQ

#### Is this a real Welcome to the Jungle API?

There is no official public commercial API for bulk extraction. This Actor is a purpose-built **WTTJ jobs scraper** that returns the same public listing data as structured JSON you can call like a **WTTJ API alternative**.

#### Do I need a Welcome to the Jungle account?

No. This **job listings scraper** reads publicly available pages and search results only.

#### What’s the difference between fast mode and full-detail mode?

Fast mode (`includeDetails: false`) returns core search fields. Full-detail mode (default) adds description, apply link, skills, tools, benefits, and richer company data — ideal when you need complete **WTTJ job listings**.

#### Can I scrape exact job links I already have?

Yes — put them in `startUrls`. Search is skipped and full detail is applied automatically.

#### Can I combine multiple filter values?

Yes — `contractTypes`, `remote`, `sector`, `categories`, and `language` accept arrays. Values inside one filter are OR’d; different filters are AND’d.

#### Can I get results in Python or JavaScript?

Yes. Use the Apify API / SDKs to pull **employment data** into Python, Node.js, or any HTTP client — the same pattern as calling a lightweight **Welcome to the Jungle API**.

#### Is scraping Welcome to the Jungle allowed for research?

The Actor collects only publicly available job pages. Use the data responsibly and in line with Welcome to the Jungle’s terms and applicable laws (including GDPR where relevant). For compliance questions on a custom deployment, contact **hello.insights.data@gmail.com**.

### 🛟 Support & custom solutions

Bugs or feature ideas? Open an issue on this Actor’s **Issues** tab in Apify Console, or visit the [Apify help center](https://help.apify.com/).

For custom scrapers, multi-board **recruiting intelligence** stacks, scheduled monitors, or enterprise exports of **Welcome to the Jungle jobs**, email **hello.insights.data@gmail.com** — we build tailored solutions on top of this Actor.

***

*Data is collected only from Welcome to the Jungle’s publicly available job and company pages. Intended for legitimate recruiting research, salary benchmarking, job market analysis, and job-board aggregation.*

# Actor input Schema

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

⚠️ Only fill this in if you want to scrape specific listings instead of searching. Paste one or more direct Welcome to the Jungle job links here to scrape exactly those, skipping keyword search entirely. Supports bulk input. Leave this EMPTY (the default) to use the search & filters below — that's what most users want.

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

Free-text keyword to search for jobs — job title, skill, or company. Examples: "python developer", "product manager", "data scientist". Leave empty to return all jobs matching your other filters.

## `searchOnlyInJobTitle` (type: `boolean`):

When enabled, your search query is matched only against job titles instead of the full listing. Useful for precise title searches.

## `websiteCountry` (type: `string`):

Which regional Welcome to the Jungle site to use. Translates category, sector and benefit labels into the local language — job titles & descriptions stay in their original language.

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

City, region or country name to search around, e.g. "Paris", "Berlin", "Remote". Leave empty for no location filter.

## `locationRadius` (type: `string`):

How far around the location above to search. Only applies when Location is set.

## `countryCode` (type: `string`):

Filter by the ISO country code of the job's office (e.g. US, FR, DE, GB, ES). Overrides the Location field above when set.

## `sortBy` (type: `string`):

Order results by relevance to your search, or by newest posting date first.

## `datePosted` (type: `string`):

Only return jobs posted within this time window. Widen the window if a niche search returns very few results.

## `contractTypes` (type: `array`):

Filter by one or more employment contract types. Leave empty for all types.

## `remote` (type: `array`):

Filter by how remote-friendly the role is. Leave empty to include every policy.

## `sector` (type: `array`):

Filter by company industry. Type a keyword (e.g. "tech", "finance", "retail") — it's matched against Welcome to the Jungle's live sector list, so it always reflects their current categories.

## `categories` (type: `array`):

Filter by profession category. Type a keyword — e.g. "tech" matches Tech & Engineering, "sales" matches Sales & Customer Service, "marketing" matches Communication & Marketing, "hr" matches HR & People. Matched against Welcome to the Jungle's live category list. When 'Include Full Job Details' is on, this filter is also verified against each job's full record for accuracy.

## `occupation` (type: `array`):

Same as Job Category above — kept for compatibility with automations built against the alternate 'occupation' field name. Values from both fields are merged.

## `experienceLevel` (type: `string`):

Filter by required years of experience. Ignored if Min/Max Experience below are set.

## `experienceMin` (type: `integer`):

Only jobs requiring at least this many years of experience. Overrides Experience Level above when set.

## `experienceMax` (type: `integer`):

Only jobs requiring at most this many years of experience.

## `salaryMin` (type: `integer`):

Only return jobs with a disclosed minimum yearly salary at or above this value (in the job's local currency). Only applies to listings that publish salary info.

## `companySize` (type: `string`):

Filter by number of employees at the hiring company.

## `language` (type: `array`):

Only return jobs written in these language(s). Leave empty for all languages.

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

Stop after this many job listings. Set to 0 for unlimited (the Actor paginates automatically through every matching result).

## `includeDetails` (type: `boolean`):

When enabled, fetches the complete listing for every job — full description, apply link, required skills & tools, benefits and extended company info. Disable for a much faster run that returns only core search fields.

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

By default the Actor connects directly (no proxy). If a request gets blocked, it automatically escalates to a datacenter proxy, then a residential proxy, and sticks with whichever tier works. You can also pin a specific proxy group here if you prefer.

## `concurrency` (type: `integer`):

How many job detail pages to fetch in parallel. Higher is faster but more likely to trigger rate limits.

## `maxRetries` (type: `integer`):

How many times to retry a failed or blocked request (at the top proxy tier) before giving up on it.

## `requestDelay` (type: `number`):

Polite delay between paginated search requests when a very large result set has to be split into multiple pages. Doesn't apply to per-job detail fetches.

## Actor input object example

```json
{
  "startUrls": [],
  "query": "",
  "searchOnlyInJobTitle": false,
  "websiteCountry": "en",
  "locationRadius": "20",
  "sortBy": "relevance",
  "datePosted": "any",
  "maxItems": 100,
  "includeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "concurrency": 8,
  "maxRetries": 3,
  "requestDelay": 0
}
```

# Actor output Schema

## `items` (type: `string`):

Every scraped job with every field, unfiltered.

## `overview` (type: `string`):

Title, company, location, contract & salary at a glance.

## `compensation` (type: `string`):

Salary and experience/education fields for benchmarking.

## `company` (type: `string`):

Hiring company details for each job.

## `details` (type: `string`):

Full description, candidate profile, benefits, skills & tools.

## `csv` (type: `string`):

All jobs as a CSV file.

# 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 = {
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("insights_data/welcome-to-the-jungle-jobs-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 = {
    "startUrls": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("insights_data/welcome-to-the-jungle-jobs-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 '{
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call insights_data/welcome-to-the-jungle-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,insights_data/welcome-to-the-jungle-jobs-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/AYdSJ1jZRm8jhxY5b/builds/gdAUc5pkb7e6nWEuk/openapi.json
