# Jungle Job Scraper 🌴 (`easyapi/jungle-job-scraper`) Actor

Efficiently scrape job listings from Welcome to the Jungle with comprehensive details including salaries, company information, and benefits. Perfect for recruitment analysis, market research, and job market monitoring. 🌴✨

- **URL**: https://apify.com/easyapi/jungle-job-scraper.md
- **Developed by:** [EasyApi](https://apify.com/easyapi) (community)
- **Categories:** Jobs, Integrations, Other
- **Stats:** 43 total users, 1 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 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

## Jungle Job Scraper 🌴

### 🤖 What does Jungle Job Scraper do?

This actor scrapes job listings from Welcome to the Jungle (welcometothejungle.com), a modern job board platform. It extracts detailed job information including salary ranges, company details, and job requirements.

### ✨ Features

- 🔍 Scrapes job listings with detailed information
- 💰 Captures salary ranges and benefits
- 🏢 Includes comprehensive company information
- 📍 Supports location-specific searches
- 🌐 Handles remote work indicators
- ⚡ Fast and efficient with pagination support
- 🛡️ Built-in proxy support

### 💎 Output Data Structure

The actor provides rich job listing data including:

- Job title and reference
- Salary information (min/max, currency, period)
- Contract type and remote work status
- Company details (name, description, size, ranking)
- Location information
- Benefits and sectors
- Publication date

### 🔍 Input Parameters

- `searchUrls`: Array of Welcome to the Jungle search URLs to scrape
- `maxItems`: Maximum number of items to scrape (optional)
- `proxyConfiguration`: Proxy settings (optional)

### 📊 Use Cases

- Market research and salary analysis
- Job market monitoring
- Recruitment data aggregation
- Company insights collection
- Career opportunity tracking

### 💡 Tips

- Use specific search URLs for targeted results
- Adjust maxItems based on your needs
- Consider using proxies for better reliability

### 📝 Example Output

#### Input Example

A full explanation of an input example in JSON.

```json
{
    "searchUrls": [
        "https://www.welcometothejungle.com/en/jobs?refinementList%5Boffices.country_code%5D%5B%5D=US&query=data&page=1"
    ],
    "maxItems": 50
}
```

#### Output sample

The results will be wrapped into a dataset which you can always find in the **Storage** tab. Here's an excerpt from the data you'd get if you apply the input parameters above:

And here is the same data but in JSON. You can choose in which format to download your data: JSON, JSONL, Excel spreadsheet, HTML table, CSV, or XML.

```json
[
    {
        "searchUrl": "https://www.welcometothejungle.com/en/jobs?refinementList%5Boffices.country_code%5D%5B%5D=US&query=data&page=1",
        "jobTitle": "Junior Consultant in Strategy & Data Science | New York",
        "jobReference": "2b3e66ae-27c9-495a-8bc3-ac18a21bba9f",
        "publishedAt": "2025-02-10T23:46:28Z",
        "salary": {
            "minimum": 75000,
            "maximum": 75000,
            "currency": "USD",
            "period": "yearly"
        },
        "contractType": "full_time",
        "remote": "partial",
        "hasRemote": true,
        "profession": {
            "category": "Tech & Engineering",
            "subCategory": "Data / Business Intelligence",
            "role": "Data Scientist"
        },
        "company": {
            "name": "Ekimetrics",
            "description": null,
            "employeeCount": 400,
            "logo": "https://cdn-images.welcometothejungle.com/jjqUZyXklWxBfGBn2fzO9XKXEY2PBLC_cTZtudQpOoE/rs:auto:400::/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9vcmdhbml6YXRpb24vbG9nby80MTI0LzE0ODg4OS84ODZkNzBmMi03YTNjLTQ3M2YtYjFmMS03ODBjNTEzYjI5OGIucG5n",
            "profileRanking": 100
        },
        "locations": [
            {
                "city": "New York",
                "state": "New York",
                "country": "United States",
                "countryCode": "US"
            }
        ],
        "benefits": [],
        "sectors": [
            {
                "name": "IT / Digital",
                "parentName": "Consulting / Audit"
            },
            {
                "name": "Strategy",
                "parentName": "Consulting / Audit"
            },
            {
                "name": "Audit",
                "parentName": "Consulting / Audit"
            },
            {
                "name": "Big Data",
                "parentName": "Tech"
            }
        ]
    },
    ...
]
```

### Related Actors

- 🎯 [Dice.com Job Scraper](https://apify.com/easyapi/dice-com-job-scraper) - Extract tech job listings with salaries and remote options from Dice.com
- 🔍 [Indeed Jobs Scraper](https://apify.com/easyapi/indeed-jobs-scraper) - Scrape detailed job listings including salaries and company information from Indeed.com
- 🎯 [Xing Jobs Scraper](https://apify.com/easyapi/xing-jobs-scraper) - Extract job listings from Xing.com with detailed company and position information
- 🔍 [SimplyHired Job Scraper](https://apify.com/easyapi/simplyhired-job-scraper) - Scrape job listings with advanced filtering capabilities from SimplyHired
- 🌏 [JobStreet Job Scraper](https://apify.com/easyapi/jobstreet-job-scraper) - Extract job listings from JobStreet across 8 Asia-Pacific countries
- 🎯 [TotalJobs Scraper](https://apify.com/easyapi/totaljobs-scraper) - Scrape comprehensive job listings from TotalJobs.com
- 🇳🇴 [Finn.no Jobs Scraper](https://apify.com/easyapi/finn-no-jobs-scraper) - Extract job listings from Norway's leading job portal
- 🔍 [FlexJobs Job Search Scraper](https://apify.com/easyapi/flexjobs-job-search-scraper) - Extract remote and flexible job opportunities from FlexJobs.com
- 🔍 [BuiltIn Jobs Scraper](https://apify.com/easyapi/builtin-jobs-scraper) - Scrape tech and startup job listings from BuiltIn.com
- 🇪🇸 [InfoJobs Job Scraper](https://apify.com/easyapi/infojobs-job-scraper) - Extract job listings from Spain's leading job portal InfoJobs
- 🎯 [Shine.com Jobs Scraper](https://apify.com/easyapi/shine-com-jobs-scraper) - Collect job listings from Shine.com with comprehensive details
- 🔍 [Foundit Jobs Scraper](https://apify.com/easyapi/foundit-jobs-scraper) - Extract job listings from Foundit.in (formerly Monster India)
- 🌟 [Naukrigulf Jobs Scraper](https://apify.com/easyapi/naukrigulf-jobs-scraper) - Scrape job listings from the leading Gulf region job portal
- 🏥 [PracticeLink Job Scraper](https://apify.com/easyapi/practicelink-job-scraper) - Extract physician and healthcare job postings from PracticeLink
- 🎯 [hh.ru Job Scraper](https://apify.com/easyapi/hh-ru-job-scraper) - Scrape job listings from HeadHunter Russia with detailed information

# Actor input Schema

## `searchUrls` (type: `array`):

List of Welcome to the Jungle search URLs to scrape

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

Maximum number of items to scrape (default: 100)

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

Proxy settings for the scraper

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.welcometothejungle.com/en/jobs?refinementList%5Boffices.country_code%5D%5B%5D=US&query=data&page=1"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": 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("easyapi/jungle-job-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("easyapi/jungle-job-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 '{}' |
apify call easyapi/jungle-job-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,easyapi/jungle-job-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/uuBb36pp16yrCxatB/builds/Z04m2qsOBvGY2cMJG/openapi.json
