Welcome to the Jungle Scraper (WTTJ) - Jobs + Apply URLs
Pricing
from $2.00 / 1,000 jobs
Welcome to the Jungle Scraper (WTTJ) - Jobs + Apply URLs
Scrape Welcome to the Jungle job listings through the official search API. Full job details, direct ATS apply URLs, company data, 15+ filters, exports beyond the 1000-result limit.
Pricing
from $2.00 / 1,000 jobs
Rating
5.0
(1)
Developer
Alex Morain
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Welcome to the Jungle Scraper (WTTJ): jobs, apply URLs, company data
Extract job listings from Welcome to the Jungle, the leading job board in France with 88,000+ active listings across Europe and the US.
This scraper talks directly to the official WTTJ search and job APIs. No browser, no HTML parsing, no fragile selectors. That makes it fast, cheap, and stable: a full job with all details takes well under a second.
How to scrape Welcome to the Jungle
- Open the Input tab. Every field is optional and one search is already filled in, so you can press Start right away to see what the output looks like.
- Replace the Search query with your own keyword, or clear it entirely to browse the whole corpus and filter instead.
- Narrow with the filters: country and city, contract type, remote policy, sector, company size. They are applied by the search API before collection, so a narrow search is both faster and cheaper.
- Set Max jobs to
0when you want every matching job rather than a sample. - Press Start, then download the dataset as JSON, CSV or Excel, or plug it into the API, a webhook or an integration.
Which fields should I fill?
| If you want to... | Fill in | Leave empty |
|---|---|---|
| Find one type of role | query, countryCodes | everything else |
| Build a lead list of companies that hire | sectors, companySizeMin/Max, countryCodes | query |
| Feed a job board daily | publishedWithinDays: 1, sortBy: newest | query |
| Watch specific companies | companySlugs | all other filters |
| Do salary research | salaryYearlyMin, professionCategories | query |
Nothing is mandatory. An empty input is a valid run: it returns the most relevant 100 jobs of the whole corpus.
What you get for each job
- Direct ATS apply URL (Recruitee, Lever, Greenhouse, Workday...) plus the WTTJ listing URL
- Full HTML job description, candidate profile, recruitment process, key missions
- Salary (min, max, currency, period, normalized yearly minimum)
- Contract type and duration, remote policy, minimum experience, education level
- Skills and tools extracted by WTTJ (e.g. Accounting, Slack, Notion)
- All office locations with city, region, country, and GPS coordinates
- Company data: name, sector, headcount, creation year, website, LinkedIn, description, open jobs count, headquarters address
- Which application fields the employer requires (resume, cover letter, portfolio)
Why this scraper
- Exports beyond 1,000 results. The WTTJ search API caps every query at 1,000 hits. This scraper detects the cap and automatically splits the export by publication date, so
maxItems: 0really exports every matching job, including the whole 88k corpus. - 15+ native filters, applied server-side so you only pay for jobs you want: keyword, country, city, GPS radius, contract type, remote policy, listing language, max required experience, education level, minimum yearly salary, company sector, profession category, company size, publication window.
- Company mode. Pass company slugs to export every job from specific companies, e.g. for competitive hiring intelligence.
- Self-healing auth. The public search key is read from the live site config at runtime, with a bundled fallback, so key rotations do not break your scheduled runs.
- Clean, flat output. Consistent field names, ISO dates, normalized salary, deduplicated results.
Typical use cases
- Lead generation: companies that hire are companies that buy. Filter by sector, size, and city, then use the company website and LinkedIn fields to build outreach lists.
- Job aggregation: refresh listings hourly with
publishedWithinDays: 1and feed your own job board. - Market and salary research: salary data is normalized to yearly amounts for easy comparison.
- Competitive hiring intelligence: track who your competitors are recruiting with company mode.
- ATS detection: the apply URL reveals which ATS every company uses.
Input example
Every field is optional. This exports all fully-remote permanent tech jobs in France paying at least 50k:
{"countryCodes": ["FR"],"contractTypes": ["full_time"],"remote": ["fulltime"],"sectors": ["tech-1"],"salaryYearlyMin": 50000,"maxItems": 0}
Keyword search around a GPS point:
{"query": "data engineer","aroundLatLng": "45.7640, 4.8357","aroundRadiusKm": 50,"maxItems": 200}
All jobs from specific companies:
{"companySlugs": ["alan", "qonto", "pennylane"],"maxItems": 0}
Output example (shortened)
{"id": "92252162-eb3e-4385-9fce-fe1f9f5ec0bc","title": "Alternance Comptable de Copropriété","url": "https://www.welcometothejungle.com/fr/companies/matera/jobs/alternance-comptable-de-copropriete_colombes","applyUrl": "https://matera.recruitee.com/o/alternance-comptable-2/c/new","ats": "external","publishedAt": "2026-08-12T09:14:00Z","contractType": "apprenticeship","remote": "partial","salaryText": "28000-32000 EUR/yearly","skills": ["Comptabilité", "Amélioration continue"],"tools": ["Slack", "Notion"],"cities": "Colombes","companyName": "Matera","companyWebsite": "https://matera.eu","companyLinkedin": "https://www.linkedin.com/company/matera-eu","companyNbEmployees": 200,"companyJobsCount": 12}
Download the dataset as JSON, CSV, Excel, or feed it to the API, webhooks, and integrations (Zapier, Make, Google Sheets).
Speed and cost
Search fields only (includeDetails: false): about 1,000 jobs per Algolia query, thousands of jobs per minute.
With full details: around 10 jobs per second thanks to parallel detail fetching. Detail requests occasionally get rate-limited from datacenter IPs; the scraper retries automatically and you can set a residential proxy in the input as a fallback.
Is it legal?
This scraper only collects publicly available job listings through the same public APIs the WTTJ website itself uses. It does not access any personal data, does not log in, and does not bypass any authentication. Job listings are public information that employers want distributed. Still, check the website's terms of service and your local regulations for your specific use case.
FAQ
Does it cover all WTTJ regional sites? Yes. The job corpus is shared across regions. The resultsLanguage input picks the language for localized labels (profession names, skills).
How fresh is the data? The scraper queries the same live search index as the website, so results are real-time.
Can I schedule it? Yes, use Apify Schedules. A common setup: run daily with publishedWithinDays: 1 to collect new listings, with deduplication handled downstream or by dataset merge.
A filter I need is missing? Open an issue on the actor page and it will usually ship within days.