Welcome to the Jungle Universal Scraper
Pricing
from $1.36 / 1,000 results
Welcome to the Jungle Universal Scraper
⚡ Scrape unlimited jobs from Welcome to the Jungle! Search by keywords, filter by city, contract, remote policy, experience, salary, sector or company, and instantly get rich, structured job data with the hiring company profile — for job boards, sourcing, market research or lead generation.
Pricing
from $1.36 / 1,000 results
Rating
5.0
(2)
Developer
Scrapifier
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Welcome to the Jungle Jobs Scraper
Scrape job listings from Welcome to the Jungle (WTTJ) by keyword and filters or by pasting a search or company URL, and export them as JSON, CSV or Excel, or pull them straight from the API.
⚡ For every job you get the title, description and URL, the contract type (CDI, CDD, internship, apprenticeship, freelance, VIE), the remote policy, the advertised salary with a normalized yearly minimum, minimum experience, education level, sectors, office location, publication date, plus the hiring company profile (name, size, sectors, logo, open jobs). Optional full details add the application URL, required skills, summary, start date and recruitment process. Server-side filters, no login, no cookies and no proxy. You pay per job.
🎯 Why scrape Welcome to the Jungle jobs?
- Job boards and aggregators: feed a niche job board with fresh French and European roles, company profile attached.
- Recruiting and sourcing: list every company hiring a data scientist within 30 km of Paris, hybrid, at a startup under 50 people.
- Lead generation: a company opening five sales roles is buying tools. Filter by sector and company size to build account lists from hiring signals.
- Salary and market research: compare advertised yearly salaries by contract type, experience, city and sector across thousands of listings.
- Job search: collect all junior roles matching your profile, sorted by date, into one spreadsheet.
📊 What data does Welcome to the Jungle Jobs Scraper extract?
| Field | Description |
|---|---|
id, reference | Unique WTTJ job id and job reference code |
url | Direct link to the job on Welcome to the Jungle |
title | Job title |
description | Job description (HTML) |
language | Language the listing is written in (ISO code) |
published_at | Publication date (ISO 8601) |
contract_type, contract_type_label | FULL_TIME, INTERNSHIP, APPRENTICESHIP, TEMPORARY, FREELANCE, VIE or OTHER, plus the localized label (for example CDI) |
contract_duration_min, contract_duration_max | Contract duration in months, when set |
experience_min_years | Minimum years of experience required |
education_level | NO_DIPLOMA, BAC, BAC_1 to BAC_5 |
remote | Remote policy: no, punctual, partial, fulltime or unknown |
salary.* | currency, min, max, period and yearly_min (normalized yearly minimum), when the salary is advertised |
sectors[], sector_categories[] | Job sectors and their top-level categories (Tech, Distribution...) |
office.*, offices[], geoloc | Primary office (city, district, state, country, country_code), all offices, coordinates |
company.* | Hiring company: name, slug, description, logo_url, size, nb_employees, sectors[], nb_jobs (with include_company_info) |
apply_url, skills[], summary, start_date, recruitment_process | Full job details (with include_full_details) |
scraped_at, search_url | Extraction timestamp and the search the job came from |
With flatten enabled, company_name, company_slug and company_size columns are added so the CSV stays flat. Labels (contract, size, sectors) follow website_country; titles and descriptions stay in their original language.
🚀 How to scrape Welcome to the Jungle jobs
- Open the Actor and type your Keywords in
query(for exampledeveloper), or paste WTTJ URLs inurls: a jobs search URL (its filters are kept) or a company page URL (all of its jobs). - Narrow the search with the filters: location and radius, cities or countries, contract types, remote policy, experience, education, minimum salary, company size, sectors, language, company names or publication date.
- Set Max results. A single search returns at most 1000 jobs; turn on Deep scrape to collect more by running one search per contract type.
- Optionally enable Include full job details to fetch the application URL, skills, summary, start date and recruitment process (one extra request per job, so slower).
- Click Start. Jobs are read from WTTJ's public search index 100 at a time and pushed to the dataset in batches of 200.
- Open the Storage tab to preview the jobs and export them as JSON, CSV, Excel or XML, or read them from the dataset API.
The same run can be started from the Apify API, the Python or JavaScript client, or put on a schedule.
📥 Input parameters
| Field | Key | Type | Default | Description |
|---|---|---|---|---|
| Welcome to the Jungle URLs | urls | array of URLs | none | Jobs search URLs (filters kept) or company page URLs (all jobs). Empty = use the filters below. |
| Keywords | query | string | developer | Free-text search over job title and description. Empty = all jobs. |
| Search in job title only | search_in_title_only | boolean | false | Match the keywords against the job title only. |
| Location (city / region / country) | location | string | none | Search around a place (Paris, Lyon, Île-de-France). Requires a radius. |
| Radius (km) | radius_km | integer | none | Radius around the location, in km (20). Only used with a location. |
| Exact cities | cities | array of strings | none | Exact office cities (Paris, Barcelona). |
| Countries | country_codes | select (multi) | none | Office countries, select of 15 ISO codes (FR, ES, GB, BE, DE...). Empty = all. |
| Contract type | contract_types | select (multi) | none | FULL_TIME (CDI), INTERNSHIP, APPRENTICESHIP, TEMPORARY (CDD), FREELANCE, VIE, OTHER. Empty = all. |
| Remote policy | remote | select (multi) | none | no (on-site), punctual, partial (hybrid), fulltime, unknown. Empty = all. |
| Min experience (years) | experience_min | integer | none | Keep jobs requiring at least this many years. |
| Max experience (years) | experience_max | integer | none | Keep jobs requiring at most this many years (junior roles). |
| Education level | education_levels | select (multi) | none | NO_DIPLOMA, BAC, BAC_1 to BAC_5. Empty = all. |
| Min yearly salary (€) | salary_min | integer | none | Only jobs advertising at least this gross yearly salary. |
| Min company size (employees) | company_min_employees | integer | none | Companies with at least this many employees (250). |
| Max company size (employees) | company_max_employees | integer | none | Companies with at most this many employees (50 for startups). |
| Sectors | sectors | array of strings | none | A category (Tech, Distribution, Conseil / Audit) or a specific sector (IT / Digital, FinTech / InsurTech, E-commerce). |
| Job language | languages | select (multi) | none | Listing language: fr, en, es, it, de, nl, pt. Empty = all. |
| Companies (by name) | organizations | array of strings | none | Only jobs from these companies, exact names (Decathlon, Papernest). |
| Published after | published_after | string | none | Only jobs published on or after this date (YYYY-MM-DD). |
| Date posted (preset) | date_posted | select | any | any, 1 (24 hours), 3, 7, 14 or 30 days. Combines with published_after, the tighter wins. |
| Sort by | sort | select | relevance | relevance or date (most recent first). |
| Label language | website_country | select | fr | Language of sector, contract and size labels: fr, en, es, cs, sk. |
| Max results | max_results | integer | 100 | Jobs to collect. 0 = as many as possible (1000 per search). |
| Deep scrape (beyond 1000) | split_by_contract | boolean | false | Run one search per contract type to go beyond the 1000-job limit of a single search. |
| Include company profile | include_company_info | boolean | true | Attach the hiring company profile to every job. |
| Include full job details (slower) | include_full_details | boolean | false | Also fetch each job page: apply URL, skills, summary, start date, recruitment process. |
| Flat company columns (CSV-friendly) | flatten | boolean | false | Add company_name, company_slug and company_size columns. |
| Report empty searches | emit_input_status | boolean | true | Add an input_status report to the run's OUTPUT record. |
| Proxy (optional) | proxyConfiguration | object | off | Not required. |
Example input:
{"query": "data scientist","location": "Paris","radius_km": 30,"contract_types": ["FULL_TIME"],"remote": ["partial", "fulltime"],"experience_max": 3,"max_results": 200,"include_company_info": true}
location is only applied together with radius_km: a location without a radius is ignored, so set both, or use cities for an exact match. Company page URLs follow the pattern https://www.welcometothejungle.com/fr/companies/<company-slug>; the filters also apply on top of pasted URLs.
📤 Output example
Each job is one dataset item, exportable as JSON, CSV, Excel or via the API.
{"id": "abc123","url": "https://www.welcometothejungle.com/fr/companies/acme/jobs/data-scientist_paris","title": "Data Scientist","contract_type": "FULL_TIME","contract_type_label": "CDI","experience_min_years": 2,"remote": "partial","salary": { "currency": "EUR", "min": 45000, "max": 60000, "period": "yearly" },"sectors": ["IT / Digital"],"office": { "city": "Paris", "country": "France", "country_code": "FR" },"company": { "name": "Acme", "size": "50-250", "sectors": ["Tech"], "logo_url": "https://..." },"published_at": "2026-07-01T09:00:00Z"}
The run's OUTPUT record also holds the run statistics and, per search, an input_status entry (ok or empty with the job count) so you can see which URL or filter set produced nothing.
💡 Ready-to-run examples
Hybrid or remote data scientist jobs around Paris, junior profiles
{ "query": "data scientist", "location": "Paris", "radius_km": 30, "contract_types": ["FULL_TIME"], "remote": ["partial", "fulltime"], "experience_max": 3, "max_results": 200 }
All developer jobs at startups, most recent first, published in the last week
{ "query": "developer", "company_max_employees": 50, "date_posted": "7", "sort": "date", "max_results": 500 }
Internships and apprenticeships in Tech, in Paris and Lyon, with full job details
{ "cities": ["Paris", "Lyon"], "contract_types": ["INTERNSHIP", "APPRENTICESHIP"], "sectors": ["Tech"], "include_full_details": true, "max_results": 300 }
Every open role of specific companies, flat CSV columns
{ "organizations": ["Decathlon", "Papernest"], "query": "", "flatten": true, "max_results": 0 }
💰 Pricing: how much does it cost to scrape Welcome to the Jungle?
From $2.00 per 1,000 jobs on the free plan, with automatic volume discounts down to $1.36 per 1,000 on higher Apify plans. You pay only for the results you receive, there is no subscription and no start fee. New Apify accounts get free monthly platform credits to try it.
Cost is driven purely by the number of jobs returned: max_results caps the run, and every filter is applied by WTTJ's search index before you pay for a result. Duplicates across searches are removed and never counted twice.
⚙️ Performance, proxies and limits
- No proxy needed. The Actor reads WTTJ's public search index (Algolia) with plain HTTPS requests, no browser.
proxyConfigurationis supported but off by default. - Speed: jobs are fetched 100 per request and pushed in batches of 200. Full details add one request per job, so keep
include_full_detailsoff for large runs. - 1000 jobs per search: the index caps a single search at 1000 results (10 pages of 100).
split_by_contractruns one search per contract type (the 7 types, or the ones you selected). It applies to filter-based searches only; each pasted URL is one search. - Location and radius: the place is geocoded through OpenStreetMap Nominatim. If geocoding fails, the run logs an error and continues without the location constraint.
- Date filters:
published_afteranddate_postedare checked on each job's publication date; sort bydateto fetch the newest jobs first. - Deduplication: jobs are deduplicated by
idwithin a run, across all searches. - Retries and empty results: each request is retried up to 4 times; a search returning nothing is reported as
emptyin the OUTPUTinput_statuslist.
🔌 Integrations and API
Run Welcome to the Jungle Jobs Scraper from the Apify API, the Python or JavaScript client, or on a schedule. Connect it to Make, Zapier, n8n, Google Sheets, Slack or any webhook through Apify integrations. Every run's dataset is available as JSON, CSV, Excel or XML from the dataset API.
curl -X POST "https://api.apify.com/v2/acts/scrapifier~welcome-to-the-jungle-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{ "query": "data scientist", "location": "Paris", "radius_km": 30, "contract_types": ["FULL_TIME"], "remote": ["partial", "fulltime"], "experience_max": 3, "max_results": 200 }'
❓ FAQ
Is it legal to scrape Welcome to the Jungle jobs?
The Actor only reads listings and company profiles that Welcome to the Jungle publishes to anyone without logging in. Listings may contain personal data, so process them in line with GDPR, respect Welcome to the Jungle's terms of use, and stay responsible for how you use the data. This is not legal advice.
Do I need a Welcome to the Jungle account, login or cookies?
No. Nothing to log in to, no cookies to paste, no proxy to configure.
Can I export Welcome to the Jungle jobs to Excel or Google Sheets?
Yes. Every run's dataset downloads as CSV, XLSX, JSON or XML from the Storage tab. Turn on flatten for flat company columns, and the Google Sheets integration can push new jobs to a sheet automatically.
How many jobs can I scrape?
A single search returns up to 1000 jobs. With split_by_contract the Actor runs one search per contract type, so a broad query can return several thousand. max_results caps the total; 0 means everything.
Can I scrape all jobs of one company?
Yes. Paste the company's WTTJ page URL in urls, or type its exact name in organizations. Each job carries the company profile, including nb_jobs, the number of roles it has open.
Does it work outside France?
Yes. country_codes covers 15 countries (France, Spain, the United Kingdom, Belgium, Germany, Italy, the Netherlands, Switzerland, the United States, Canada and more), or use cities. Output labels switch to English, Spanish, Czech or Slovak with website_country.
Does the salary filter work when jobs do not advertise a salary?
salary_min compares against the normalized yearly minimum WTTJ stores for each job, so jobs without an advertised salary are excluded when you set it. Leave it empty to keep them.
How fresh is the data?
Every run queries Welcome to the Jungle live. Schedule it daily with sort set to date and date_posted set to 1 to collect only the last 24 hours.
🔗 Related scrapers
- Glassdoor Jobs Scraper: job listings by keyword and location, with salary estimates.
- Glassdoor Salaries Scraper: salary estimates per job title and company.
- Glassdoor Reviews Scraper: employee reviews, ratings, pros, cons and company responses.
- Glassdoor Company Overview Scraper: full company profile by name or URL.
- Glassdoor Interviews Scraper: interview experiences and the questions asked, by company.
🇫🇷 En français
Ce scraper Welcome to the Jungle extrait les offres d'emploi de welcometothejungle.com par mots-clés et filtres, ou à partir d'une URL de recherche ou de page entreprise. Vous pouvez filtrer par lieu et rayon en km, villes exactes, pays, type de contrat (CDI, CDD, stage, alternance, freelance, VIE), télétravail, années d'expérience, niveau d'études, salaire annuel minimum, taille d'entreprise, secteur, langue de l'annonce, entreprise et date de publication. Chaque offre contient le titre, la description, le contrat, le salaire affiché, la localisation du bureau et le profil de l'entreprise qui recrute (nom, taille, secteurs, logo, nombre de postes ouverts). Une option ajoute l'URL de candidature, les compétences demandées et le processus de recrutement. L'export se fait en CSV, Excel, JSON ou XML, ou via l'API Apify, sans compte WTTJ ni proxy. Le paiement se fait au résultat, à partir de 2,00 $ pour 1 000 offres, sans abonnement.
💬 Support
Questions, bugs or a feature request? Open an issue in the Issues tab of this Actor, I answer quickly. If Welcome to the Jungle Jobs Scraper saves you time, a rating on the Store helps others find it.