# Welcome to the Jungle Scraper (`sourabhbgp/welcome-to-the-jungle-scraper`) Actor

Scrape Welcome to the Jungle job listings by keyword, country, contract type and remote policy, plus full company profiles. Get salary, sectors, benefits, key missions, the role summary and candidate profile text for every job. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/sourabhbgp/welcome-to-the-jungle-scraper.md
- **Developed by:** [Sourabh Kumar](https://apify.com/sourabhbgp) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### Welcome to the Jungle scraper: job search, filters and company profiles

Pull live job listings from Welcome to the Jungle by keyword and filters, or pull a full company profile by its page URL. One actor covers both, in a single clean output.

**$3.00 per 1,000 results. Plus a small per-run start fee. No proxy or browser setup needed.**

Built for the European startup and scaleup market: France, the UK, the US, Spain, Germany and more.

### Why this scraper?

- 🎯 **Two jobs in one** Search the whole job board and read company profiles without juggling two tools.
- 🧱 **Rich job records** Title, company, offices, salary range, contract type, remote policy, experience and education level, sectors, key missions, benefits, the role summary and candidate profile text, and the published date.
- 🌍 **Filter by what matters** Narrow by keyword, country, contract type and remote policy.
- 📈 **Goes past the first page** Ask for more than 1,000 results and the scraper walks the full catalog for you.
- 💸 **You only pay for rows you get** Blocked or empty runs cost nothing. Simple as that.

### What you can scrape

**Job search** Give a keyword and optional filters. Get back one row per matching job with salary, contract, remote policy, key missions, benefits, the role summary and candidate profile text, and a direct link to the listing.

**Company profile** Paste a company page URL (for example `https://www.welcometothejungle.com/en/companies/idex-1`). Get the company name, employee count, sectors, offices, logo, cover image, website and profile text.

### Use cases

- Build and refresh a job board or niche aggregator for tech and startup roles.
- Track hiring trends: who is hiring, for what, where and at what salary.
- Feed a recruiting or sourcing workflow with fresh openings every morning.
- Research companies before you apply, pitch or invest.
- Power salary and benefits benchmarking across sectors and countries.

### Example output

A job row:

```json
{
  "recordType": "job",
  "name": "Business Developer Marketplace (H/F)",
  "url": "https://www.welcometothejungle.com/en/companies/vente-unique/jobs/business-developer-marketplace-spanish-speaker-h-f_paris_VENTE_w54qJob",
  "reference": "VENTE_w54qJob",
  "organization": { "name": "Vente-unique.com", "slug": "vente-unique" },
  "offices": [{ "city": "Paris", "countryCode": "FR" }],
  "contractType": "full_time",
  "remote": "punctual",
  "salaryMin": 36000,
  "salaryMax": 40000,
  "salaryCurrency": "EUR",
  "salaryPeriod": "yearly",
  "experienceLevelMinimum": 2,
  "educationLevel": "bac_5",
  "sectors": ["E-commerce", "Retail"],
  "profession": "Business Development Manager",
  "keyMissions": ["Grow the marketplace", "Onboard new sellers"],
  "benefits": ["Remote days", "Meal vouchers"],
  "publishedAt": "2026-06-08T08:50:31Z",
  "summary": "Join a fast-growing marketplace team and own seller acquisition end to end...",
  "profile": "You have 2+ years in B2B sales, fluent Spanish, and a hunter mindset...",
  "language": "fr"
}
````

A company row:

```json
{
  "recordType": "company",
  "name": "Idex",
  "slug": "idex-1",
  "company": {
    "name": "Idex",
    "nbEmployees": 6300,
    "sectors": ["Environment / Sustainable Development", "Energy"],
    "offices": [{ "city": "Boulogne-Billancourt", "countryCode": "FR" }],
    "websiteUrl": "https://www.idex.fr/",
    "logoUrl": "https://cdn-images.welcometothejungle.com/..."
  }
}
```

Filter rows by `recordType` to split jobs from companies.

### How to use it

1. Open the actor and choose your input.
2. For jobs: type a keyword and pick any filters (country, contract type, remote). Leave the keyword empty to match every job for your filters.
3. For companies: paste one or more company page URLs into the URL list.
4. Set how many results you want, then run.

### How much does it cost?

You pay a flat **$3.00 per 1,000 results**, whether the row is a job or a company, plus a small start fee each run.

- Apify Free plan ($5 of usage): about **1,666 results** per month.
- Apify Starter plan ($29): about **9,666 results** per month.

Empty or blocked runs return nothing and cost nothing.

### Limitations

- The full free-text job description (the long HTML body on the job page) is not included. Each row does carry the role summary, candidate profile text, key missions and benefits, which hold most of the detail.
- A single search query returns up to 1,000 results. Ask for more and the scraper crawls the wider catalog, or narrow with filters to slice large result sets.
- Job page URLs are not a supported input. Use keyword search for jobs and the company URL for profiles.

### FAQ

**Is it legal to scrape Welcome to the Jungle?**
Scraping publicly available data is legal in most places. This actor only reads pages and data that anyone can see without logging in. You're responsible for how you use the data, so follow the site's terms and the laws that apply to you, especially around personal data.

**Do I need proxies or a login?**
No. Everything runs out of the box with no proxy setup, no browser and no account.

**How often is the data updated?**
Every run fetches live data straight from the source at that moment, so results are as fresh as the site itself.

**Can I export to CSV, Excel or JSON?**
Yes. Results land in a dataset you can download as JSON, CSV, Excel or HTML, or pull through the Apify API.

**Can I schedule it or call it from my app?**
Yes. Schedule runs from the Apify console, or trigger the actor and read results through the API and the official clients.

**Your feedback**
We are always improving this scraper. If you hit a problem or want a new feature, tell us on the [Issues tab](https://console.apify.com/actors/neX4Toqu9KXnU46vJ/issues) and a human will read it.

# Actor input Schema

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

Job search keyword (e.g. developer, product manager). Leave empty to match all jobs for the filters.

## `countries` (type: `array`):

Filter jobs by office country.

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

Filter by contract type.

## `remote` (type: `string`):

Filter by remote policy.

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

Welcome to the Jungle company pages (for example https://www.welcometothejungle.com/en/companies/idex-1). When set, these company profiles are scraped instead of a keyword search.

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

Maximum number of results. Values above 1000 enable full-corpus crawling.

## `maxConcurrency` (type: `integer`):

Number of parallel requests. Higher is faster but heavier.

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

Datacenter proxy is sufficient.

## Actor input object example

```json
{
  "query": "developer",
  "maxItems": 50,
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

# 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",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("sourabhbgp/welcome-to-the-jungle-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",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("sourabhbgp/welcome-to-the-jungle-scraper").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 '{
  "query": "developer",
  "maxItems": 50
}' |
apify call sourabhbgp/welcome-to-the-jungle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sourabhbgp/welcome-to-the-jungle-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Welcome to the Jungle Scraper",
        "description": "Scrape Welcome to the Jungle job listings by keyword, country, contract type and remote policy, plus full company profiles. Get salary, sectors, benefits, key missions, the role summary and candidate profile text for every job. Export to JSON, CSV or Excel.",
        "version": "0.0",
        "x-build-id": "vf32nHAUbLqWxlGFT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sourabhbgp~welcome-to-the-jungle-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sourabhbgp-welcome-to-the-jungle-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sourabhbgp~welcome-to-the-jungle-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sourabhbgp-welcome-to-the-jungle-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sourabhbgp~welcome-to-the-jungle-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sourabhbgp-welcome-to-the-jungle-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Job search keyword (e.g. developer, product manager). Leave empty to match all jobs for the filters."
                    },
                    "countries": {
                        "title": "Countries",
                        "type": "array",
                        "description": "Filter jobs by office country.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "FR",
                                "GB",
                                "US",
                                "ES",
                                "DE",
                                "BE",
                                "NL",
                                "IT",
                                "PT",
                                "CA"
                            ],
                            "enumTitles": [
                                "France",
                                "United Kingdom",
                                "United States",
                                "Spain",
                                "Germany",
                                "Belgium",
                                "Netherlands",
                                "Italy",
                                "Portugal",
                                "Canada"
                            ]
                        }
                    },
                    "contractTypes": {
                        "title": "Contract types",
                        "type": "array",
                        "description": "Filter by contract type.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "full_time",
                                "apprenticeship",
                                "freelance",
                                "internship",
                                "temporary",
                                "other"
                            ],
                            "enumTitles": [
                                "Full-time",
                                "Apprenticeship",
                                "Freelance",
                                "Internship",
                                "Temporary",
                                "Other"
                            ]
                        }
                    },
                    "remote": {
                        "title": "Remote",
                        "enum": [
                            "fulltime",
                            "partial",
                            "punctual",
                            "no"
                        ],
                        "type": "string",
                        "description": "Filter by remote policy."
                    },
                    "startUrls": {
                        "title": "Company URLs",
                        "type": "array",
                        "description": "Welcome to the Jungle company pages (for example https://www.welcometothejungle.com/en/companies/idex-1). When set, these company profiles are scraped instead of a keyword search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of results. Values above 1000 enable full-corpus crawling.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 15,
                        "type": "integer",
                        "description": "Number of parallel requests. Higher is faster but heavier.",
                        "default": 8
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Datacenter proxy is sufficient.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
