Welcome to the Jungle Jobs Scraper | Every Job, ATS & Companies
Pricing
from $0.40 / 1,000 results
Welcome to the Jungle Jobs Scraper | Every Job, ATS & Companies
Export every Welcome to the Jungle (WTTJ) job, past the site's 1,000-result search limit: up to the whole ~90,000-job board in one run. 105 fields: salary, remote, contract, skills, apply link with ATS vendor, and company website, LinkedIn, headcount, revenue. Incremental alerts.
Pricing
from $0.40 / 1,000 results
Rating
0.0
(0)
Developer
Corvuslab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does Welcome to the Jungle Jobs Scraper do?
Welcome to the Jungle Jobs Scraper exports job listings from Welcome to the Jungle (WTTJ) as clean structured data with 103 fields per job: salary, remote policy, contract type, skills, the apply link with its applicant-tracking system, and company data (website, LinkedIn, headcount, revenue, HQ). The site's own search stops at 1,000 results per query; this Actor goes past that, so one run can export every matching job, up to the whole board of about 90,000 jobs.
Give it search terms, locations, countries, companies, filters or Welcome to the Jungle URLs, or press Start with an empty input for the newest 100 jobs. No code, no login, no proxy. Export as JSON, CSV, Excel, via API or as an MCP tool for AI agents.
New to Apify? Sign up free and use the included monthly platform credit to try this Actor — no credit card needed.
Why this scraper
- 🚫 No 1,000-result ceiling — tested on all 5,476 UK jobs in one run: 5,476 unique jobs, exactly the site's count.
- ⚡ Fast & low-cost — about 400 fully detailed jobs in 16 seconds.
- 🏷️ ATS vendor and apply domain on every detailed job.
- ♻️ Cheap to monitor — incremental mode skips unchanged jobs before their details are fetched.
What data can you extract from Welcome to the Jungle?
| Group | What you get |
|---|---|
| Job | Title, reference, URL, contract type and duration, remote policy, minimum experience, education level, category, profession, sectors, benefits, key missions, summary, posting language, dates |
| Salary | Minimum and maximum, currency, period, yearly-normalised minimum, hasSalary flag |
| Location | City, district, region, country, coordinates, street address, postal code, and every office of multi-site jobs |
| Apply & ATS | Apply URL, apply domain, ATS vendor, whether you apply on WTTJ itself, required documents, number of application questions |
| Company | Name, logo, description, headcount, founded year, revenue, average age, share of women, equality index, labels, HQ, open jobs, website, LinkedIn, Facebook, Instagram, X and YouTube |
| Long texts | Job description, candidate profile and recruitment process as plain text, HTML and/or Markdown |
Key features
- 🚫 Every job, not the first 1,000 — "all jobs in the UK" really means all of them, and a whole-board export is one run.
- 🏷️ Where you apply —
applyDomainon every detailed job, the ATS vendor (atsProvider) on roughly 40% of them, plus the required documents. Most job exports stop at the apply link. - 🏢 Company data on every row — website, socials, headcount, founded year, revenue, HQ, gender split and open-job count travel with each job, so you need no second company lookup.
- 💶 Full details in one price — description, apply link, skills and company data come with the per-job charge, with no details add-on.
- 🎚️ Every site filter — keywords (optionally title-only), locations with a km radius, 58 countries, companies, contract, remote, posted within, experience, education, salary, company size, sector, job category and posting language. Filtered-out jobs are never billed.
- 🔗 Paste any WTTJ URL — a search page keeps its filters, a company page returns all its open jobs, a job page returns that job.
- 🔔 Monitoring and alerts — incremental mode plus Telegram, Slack, Discord or webhook notifications.
- 🤖 AI-ready output — compact mode, drop-empty mode and text truncation keep payloads small.
🚀 How to scrape Welcome to the Jungle
- Enter search terms (e.g.
data analyst), pick locations, countries and filters, or paste a Welcome to the Jungle URL. - Set Max results (0 = no limit).
- Click Start. Jobs stream into the Output tab.
- Download as JSON, CSV or Excel, or pull them from the API.
Quick-start example input
{"searchTerms": ["data analyst"],"locations": ["Paris"],"radiusKm": 20,"remote": ["fulltime", "partial"],"postedWithin": "7","maxResults": 200}
This returns up to 200 data-analyst jobs posted in the last week within 20 km of Paris that allow full or partial remote work, newest first.
Input
All 39 inputs are optional and grouped as in the editor.
🔎 Search
| Field | Type | What it does |
|---|---|---|
searchTerms | array | Job titles, skills or keywords. Each term runs as its own search; results are merged and de-duplicated. |
searchInTitleOnly | boolean | Match search terms in the job title only. |
locations | array | City, region or district names, e.g. Paris, London, New York. A job matches when any of its offices is there. |
radiusKm | integer | Widen each location to everything within 1–500 km. |
countries | array | Only jobs with an office in these countries (58 to choose from). |
startUrls | array | WTTJ search, company or job page URLs. |
companies | array | Company names as in their WTTJ URL (doctolib, l-oreal) or full company URLs. |
maxResults | integer | Maximum jobs for the whole run, across all searches (default 100, 0 = no limit). |
sortBy | enum | date (newest first) or relevance. |
🎚️ Filters
Several values inside one filter widen the search (OR); different filters narrow it (AND).
| Field | Type | What it does |
|---|---|---|
contractTypes | array | full_time, part_time, temporary, internship, apprenticeship, freelance, vie, graduate_program, volunteer, other |
remote | array | fulltime, partial, punctual, no, unknown |
postedWithin | enum | Last 1, 3, 7, 14 or 30 days |
experienceLevels | array | Minimum years asked: 0-1, 1-3, 3-5, 5-10, 10+ |
educationLevels | array | Minimum diploma on the French scale, no_diploma to phd (bac_5 = master's) |
salaryMin | integer | Minimum published yearly salary, in the job's own currency |
onlyWithSalary | boolean | Skip jobs without a published salary |
companySizes | array | 0-15, 15-50, 50-250, 250-2000, 2000+ employees |
sectors | array | 20 company sectors (tech, finance, consulting, retail, health, media…) |
jobCategories | array | 20 job families (tech & engineering, sales, product, HR, marketing…) |
jobLanguages | array | Language the ad is written in: fr, en, de, es, it, pt, nl, cs, pl |
📄 Output
| Field | Type | What it does |
|---|---|---|
includeDetails | boolean | On by default. Adds the long texts, apply link and ATS, skills, tools and the company's website, socials, revenue and HQ. Off = fastest run, search-card fields only. |
siteLanguage | enum | Label language for benefits, sectors, categories, skills and links: en, fr, es, cs, sk. |
descriptionFormat | enum | all, text, html or markdown. |
descriptionMaxLength | integer | Cut each long text at this many characters. |
compact | boolean | Core fields only. |
excludeEmptyFields | boolean | Drop empty fields from each job. |
♻️ Incremental monitoring
| Field | Type | What it does |
|---|---|---|
incrementalMode | boolean | Output only jobs that are new, changed or back since the last run. |
stateKey | string | Name for the tracked search (derived from your settings if blank). |
emitUnchanged / emitExpired | boolean | Also output unchanged jobs / jobs that were taken down. |
🔔 Notifications
Telegram (telegramToken + telegramChatId), slackWebhookUrl, discordWebhookUrl, webhookUrl + webhookHeaders, and notificationLimit (jobs per message, 1–20). Setup is under alerts below.
⚙️ Advanced
proxyConfiguration (not needed) and maxRequestRetries (0–10, default 4).
More example inputs
Every job in the United Kingdom, past the 1,000-result limit:
{ "countries": ["GB"], "maxResults": 0 }
All open jobs at two companies, plus a saved search URL with its filters:
{"companies": ["doctolib", "l-oreal"],"startUrls": [{ "url": "https://www.welcometothejungle.com/en/jobs?query=product%20manager&refinementList%5Bremote%5D%5B%5D=fulltime" }],"maxResults": 0}
Output
Each dataset item is one job. A real record, shortened:
{"id": "1271a75e-a64a-432d-8510-66ba196133bc","title": "SAP FI Functional Expert - F/H","url": "https://www.welcometothejungle.com/en/companies/atos/jobs/sap-fi-functional-expert-f-h_bezons_ATOS_egNQeeZ","companyName": "Atos","companyEmployees": 51000,"location": "Bezons, Ile-de-France, France","countryCode": "FR","contractType": "full_time","remote": "partial","experienceMinYears": 7.0,"salaryMin": 85000.0,"salaryMax": 90000.0,"salaryCurrency": "EUR","salaryPeriod": "yearly","jobCategory": "Consulting & Strategy","sectors": ["IT / Digital"],"publishedAt": "2026-10-24T09:20:49Z","description": "Votre mission : allier expertise métier en comptabilité, maîtrise technique de SAP FI…","applyUrl": "https://atos.contactrh.com/jobs/10425/44530676","applyDomain": "atos.contactrh.com","atsProvider": "ContactRH","applicationRequired": ["resume"],"skills": ["Regulatory compliance"],"tools": ["Vim", "SAP"],"companyWebsite": "https://atos.net/fr/","companyRevenue": "8 milliards €","companyWomenPercent": 30.0,"companyHeadquartersCity": "Bezons"}
Data fields
- Core —
id,jobReference,title,url,slug,companyName,location,contractType,contractDurationMinMonths/MaxMonths,remote,isRemote,experienceMinYears,educationLevel,jobCategory,jobSubCategory,profession,sectors,sectorParents,benefits,keyMissions,summary,language,publishedAt,updatedAt,startDate,isPromoted,searchKeyword. - Salary —
salaryMin,salaryMax,salaryCurrency,salaryPeriod,salaryYearlyMin,hasSalary. - Location —
city,district,region,country,countryCode,latitude,longitude,offices,officeCount,address,postalCode. - Long texts —
description,candidateProfile,recruitmentProcess,companyDescription, each also as…Htmland…Markdown. - Apply & ATS —
applyUrl,applyDomain,applyOnSite,atsProvider,applicationRequired,applicationQuestionCount,skills,tools. - Company —
companySlug,companyUrl,companyLogoUrl,companySummary,companyWebsite,companyLinkedinUrl,companyFacebookUrl,companyInstagramUrl,companyTwitterUrl,companyYoutubeUrl,companyEmployees,companyFoundedYear,companyRevenue,companyAverageAge,companyWomenPercent,companyEqualityIndex,companyLabels,companyCommitments,companyOpenJobs,companyHeadquartersAddress/City/CountryCode,companyUsesExternalAts. - Contacts found in the text —
extractedEmails,extractedPhones,extractedUrls(rarely filled; most employers don't post them). - Run & monitoring —
source,scrapedAt,detailFetched,contentHash, plus in incremental modechangeType(NEW / UPDATED / REAPPEARED / UNCHANGED / EXPIRED),firstSeenAt,lastSeenAt,previousSeenAt,expiredAt,isRepost,repostOfId,repostDetectedAt.
Compact mode returns 20 core fields, including the apply link, ATS and company website. The Output tab has three views: Overview, Apply & ATS and Company intelligence.
♻️ How to monitor Welcome to the Jungle with incremental mode
Turn on incremental mode and schedule the Actor. Each run compares against the last one and outputs only NEW / UPDATED / REAPPEARED jobs (and EXPIRED ones if you ask). Unchanged jobs are recognised before their details are fetched, and a job that is taken down and reposted is flagged as a repost.
After the first run, your cost follows how much the board changes, not how much you watch:
| Daily churn | of 1,000 tracked | billable records | you save |
|---|---|---|---|
| 5 % | 1,000 | 50 | 95 % |
| 15 % | 1,000 | 150 | 85 % |
| 30 % | 1,000 | 300 | 70 % |
To set it up: configure your search, turn on Incremental mode, run it once to record the starting set, then add a recurring run in the Schedules tab.
🔔 How to set up Welcome to the Jungle alerts
Fill in only the channels you want:
| Channel | What to configure |
|---|---|
| ✈️ Telegram | telegramToken (from @BotFather) + telegramChatId |
| 💬 Slack | slackWebhookUrl |
| 🎮 Discord | discordWebhookUrl |
| 🪝 Webhook | webhookUrl (+ optional webhookHeaders) receives JSON, ready for n8n, Make or Zapier |
Each message lists up to notificationLimit jobs with title, company, location, link and change type. A failing channel never stops the run or the other channels. With incremental mode on, you hear only about new jobs.
💡 What can you do with Welcome to the Jungle data?
Find companies that are hiring
Build a list of employers hiring in a sector or city, with website, LinkedIn, headcount and open-job count, while the hiring need is live.
Map the applicant-tracking market
atsProvider and applyDomain show which recruiting software each employer runs, or that it recruits through its own career site.
Benchmark salaries
Salary bands with currency, period and a yearly-normalised minimum. Combine onlyWithSalary with a category filter for a clean set.
Power a job board or alert feed
Export a niche slice once, then let incremental mode feed only new and changed jobs into your site, newsletter or Slack.
Research the labour market
Track hiring volume, remote policy, contract mix and benefits by sector, country or company over time.
💰 How much does it cost to scrape Welcome to the Jungle?
The Actor uses pay-per-event pricing: a small fee per run plus a fee per job returned. The Pricing tab shows the current numbers. Full details are included in the per-job fee. Two things cut your bill:
- Filters — jobs you filter out are never fetched or billed.
- Incremental mode — after the first run you pay only for what changed.
🔌 Integrations & export
Export to JSON, CSV, Excel or HTML, or use the REST API and the JavaScript / Python clients. Schedule runs, connect Google Sheets, Slack, Make, Zapier or n8n, or call it as an MCP tool from AI agents.
Also covering the French job market: HelloWork Jobs Scraper (corvuslab/hellowork-scraper) and APEC Jobs Scraper (corvuslab/apec-jobs-scraper) for executive roles.
🔗 Using the API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("corvuslab/welcome-to-the-jungle-jobs-scraper").call(run_input={"searchTerms": ["product manager"],"countries": ["FR", "GB"],"maxResults": 500,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["companyName"], item["applyDomain"])
❓ FAQ
Can I really get more than 1,000 jobs from one search? Yes. Set maxResults to 0 for no limit. Runs that ask for more than 1,000 jobs come back newest first, whatever sortBy says.
Why is atsProvider empty on many jobs? It names a vendor only when the employer uses a recognisable applicant-tracking system (SmartRecruiters, Teamtailor, Workday, Lever and others). Many employers recruit through their own career site; applyDomain names that site. When applyOnSite is true, you apply on Welcome to the Jungle itself.
Why are salary fields empty on some jobs? Many employers don't publish pay. hasSalary tells you at a glance, and onlyWithSalary or salaryMin keep only jobs that show one.
Which fields need full details on? The long texts, apply link, ATS, required documents, skills, tools, street address and the company's website, socials, revenue, average age, gender split and HQ. With includeDetails off you get the search-card fields only, and each job is still billed.
Why are some company fields empty? Revenue, average age, gender split, equality index and socials appear only when the company's WTTJ profile publishes them. Missing values are null, never guessed.
Which countries and languages are covered? 58 countries, from France, the UK and the US to Morocco and Singapore. Labels come in English, French, Spanish, Czech or Slovak; the job text stays in the language the employer wrote it in, often French.
How do location and radius work? A job matches when any of its offices is in the place, so multi-site jobs are not missed. Add radiusKm to include the surroundings.
How do companies and start URLs combine? Each start URL is read with its own filters. Search terms, companies and locations run as a separate search, and the results are merged without duplicates. The dropdown filters (country, contract, remote…) apply to everything.
⚖️ Is it legal to scrape Welcome to the Jungle?
This Actor collects only publicly available job and company data that anyone can see on welcometothejungle.com without logging in. You're responsible for how you use it, in particular any personal information, and for complying with the site's terms and applicable law, including the GDPR where it applies. Not affiliated with, endorsed by or sponsored by Welcome to the Jungle.
Keywords: welcome to the jungle scraper · wttj scraper · welcome to the jungle api · welcometothejungle.com scraper · welcome to the jungle jobs · wttj jobs export · scrape welcome to the jungle jobs · france jobs scraper · job listings scraper · salary data · ats data · company hiring data · recruitment lead generation · job monitoring · job alerts · export to CSV · export to Excel · MCP tool for AI agents