Welcome to the Jungle Jobs Scraper | WTTJ API & New Job Feed avatar

Welcome to the Jungle Jobs Scraper | WTTJ API & New Job Feed

Pricing

from $0.56 / 1,000 jobs

Go to Apify Store
Welcome to the Jungle Jobs Scraper | WTTJ API & New Job Feed

Welcome to the Jungle Jobs Scraper | WTTJ API & New Job Feed

$0.80 per 1,000 jobs, full descriptions included | France-focused public Welcome to the Jungle board, including postings abroad. Filter by country, contract or remote mode. Persistent only-new feed and skip IDs. JSON, CSV, Excel, REST and MCP.

Pricing

from $0.56 / 1,000 jobs

Rating

0.0

(0)

Developer

Daemon Data

Daemon Data

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

7 days ago

Last modified

Features

Limited permissions

Share

Welcome to the Jungle (WTTJ) jobs as JSON in one call. Welcome to the Jungle does not publish a public jobs API for third parties; this Actor reads the public search index and job pages that welcometothejungle.com loads and returns one JSON row per posting with the full description:

curl -X POST "https://api.apify.com/v2/acts/data_daemon~welcome-to-the-jungle-jobs-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"queries": ["data engineer"], "maxJobsPerQuery": 50, "maxJobs": 50}'

$0.80 per 1,000 jobs with descriptions, plus $0.001 per run, read live from the board on every run. Checked on 5 November 2026: the public WTTJ board listed 61,509 jobs (56,979 with an office in France), 1,664 of them matching python.

Welcome to the Jungle Jobs Scraper is a pay-per-result Apify Actor that exports public Welcome to the Jungle (WTTJ) jobs from the France-focused board (welcometothejungle.com), including its postings in other countries, as JSON, CSV or Excel. It is for recruiters and sourcing teams, job aggregators and job boards, HR-tech and labour-market researchers, B2B sales teams that watch which French companies are hiring, and job-alert builders. Each row has the full description (HTML and plain text), the company profile (headcount, sector, founding year), office locations with coordinates, contract type, remote mode, posting language, salary when disclosed, skills and tools, candidate profile and recruitment process. Price: $0.80 per 1,000 delivered jobs with descriptions, plus $0.001 per run; no account, cookies or proxy. A public python search returned 1,673 matches on 23 October 2026.

$0.80 per 1,000 delivered jobs, full descriptions included, plus $0.001 per run on Free/Starter plans. Jobs skipped by only-new memory, explicit IDs, duplicate keywords or filters are not charged. Apify's free plan ($5 credit every month) covers about 6,000 jobs. Built for schedules: switch on Only jobs not delivered before and a daily run returns, and charges for, only the jobs this feed has not delivered.

Live check, 30 Oct 2026: the default run (20 python jobs with descriptions) took 5 seconds on the Apify platform and cost $0.017 including the start fee. All 20 were in France (Lyon, Toulouse, Paris, Lille among the offices), 17 full-time and 3 internships, 12 with partial remote, 18 posted in French and 2 in English; 17 listed skills and 5 disclosed a salary.

Who uses Welcome to the Jungle job data, and what for

You areWhat this Actor gives you
Recruiters and sourcing teamsNew openings by keyword, country, city, contract type and remote mode, with the hiring company's size and sector, so you see which French tech and startup employers are hiring this week.
Job aggregators and job boardsWTTJ as a source with stable ids (dedupKey), full job text, company profiles, de-duplication across keywords and runs, and an API you can call on a schedule.
HR-tech and labour-market researchersContract types, remote arrangements, languages, skills and disclosed salaries across the French job market, with posting dates for trend lines.
B2B sales and lead generationA company opening five engineering roles is buying tooling and services. Each row carries the company name, slug, website, headcount, sector and headquarters when published.
Candidates and job-alert buildersYour own alert for fully remote Python jobs or data internships in Paris, delivered to a sheet, Slack or email as they appear.
AI agents (MCP)Ask Claude or ChatGPT "full-time data engineer jobs in France on Welcome to the Jungle, remote allowed" and let it call this Actor through Apify's MCP server.

Ready-to-run examples: full-time Python jobs in France, fully remote Python jobs and Webnet company vacancies.

Coverage: which Welcome to the Jungle jobs it reads

This Actor reads the France-focused public WTTJ job board, including its postings in other countries. It does not cover the separate Otta/US/UK personalized matching inventory. Inventory changes continuously.

The source exposes at most 1,000 accessible hits per search. A broad query cannot be exported beyond that window by increasing limits. Split searches using country, company, contract, language or remote filters. City and posting-date filters are checked locally within that window. Results follow source relevance order, not a guaranteed newest-first order.

How to scrape Welcome to the Jungle jobs (about a minute)

  1. Click Try for free. The form is pre-filled with python; an empty input {} saves up to 20 jobs with descriptions for $0.017 including the run start.
  2. Optionally add keywords or job titles (data engineer, product manager, commercial), countries (FR, DE, ES), cities (Paris, Lyon), contract types (FULL_TIME, INTERNSHIP) or a remote mode (fulltime, partial).
  3. Click Start, then use the Output tab to export JSON, CSV or Excel. The run's key-value store contains RUN-SUMMARY with match counts, pages read, delivered and skipped counts, and any stopping limit.
  4. Save the input as a task, tick Only jobs not delivered before and schedule it daily to get a fresh feed in Google Sheets, a webhook, Make, Zapier or n8n.
{
"queries": ["python", "data engineer"],
"countryCodes": ["FR"],
"contractTypes": ["FULL_TIME"],
"maxJobsPerQuery": 50,
"maxJobs": 100
}

From code (returns the jobs in one call):

curl -X POST 'https://api.apify.com/v2/acts/data_daemon~welcome-to-the-jungle-jobs-scraper/run-sync-get-dataset-items' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"queries":["python"],"countryCodes":["FR"],"maxJobs":20}'

From an AI assistant: add the MCP connector https://mcp.apify.com/?tools=data_daemon/welcome-to-the-jungle-jobs-scraper in Claude, ChatGPT, Cursor or VS Code. Keep your token in your client's secret settings.

Useful Welcome to the Jungle searches

Fully remote Python jobs on the public board:

{ "queries": ["python"], "remoteModes": ["fulltime"], "maxJobs": 20 }

Python vacancies from a particular employer:

{ "queries": ["python"], "companySlugs": ["webnet"], "maxJobs": 20 }

An internship search in Paris:

{
"queries": ["data"],
"countryCodes": ["FR"],
"locations": ["Paris"],
"contractTypes": ["INTERNSHIP"],
"maxJobs": 20
}

Values within one filter group are combined with OR; groups are combined with AND. For example, France or Germany and full-time and fully remote. A remote designation does not guarantee permission to work from every country.

Welcome to the Jungle new-job feed (only-new mode)

{
"queries": ["python"],
"countryCodes": ["FR"],
"onlyNewSinceLastRun": true,
"stateName": "fr-python-feed",
"maxJobsPerQuery": 100,
"maxJobs": 100
}

Run this input again to receive jobs not previously delivered to that feed. Apify schedules and webhooks can connect it to your own database or workflow. Scheduling is optional and must be configured by you.

The first run delivers a capped baseline. Subsequent runs can deliver older unseen jobs left behind by that cap; "new" means not delivered to this feed, not necessarily newly published. Add postedWithinDays if you need a recent posting window. Republishing an existing job ID does not make it new. Updated descriptions are not re-emitted.

Memory is kept in your account's named wttj-jobs-state key-value store, separated by a hash of stateName. Without a name, the search filters determine the memory key. Changing delivery limits does not reset memory. Only delivered IDs are remembered, for 120 days and up to 50,000 IDs per feed. Names are shared across your tasks; use separate names for independent feeds and avoid overlapping runs using the same name.

To exclude records already in an external database, send skipJobIds with output id, sourceId or dedupKey values. These exclusions happen before detail requests and charging.

WTTJ jobs API: input

FieldMeaning
queriesKeyword/title searches; default ["python"], maximum 50. [] runs no searches.
countryCodesOffice country codes such as FR, ES, DE.
locationsLocal substring matches on office city, region or country; accents ignored.
contractTypesFULL_TIME, TEMPORARY, INTERNSHIP, APPRENTICESHIP, FREELANCE, VIE, PART_TIME, OTHER.
remoteModesfulltime, partial, punctual, no, unknown. These are source labels.
languagesPosting languages, for example fr or en.
companySlugsCompany URL slugs, for example webnet.
salaryCurrencyOptional disclosed currency such as EUR; no currency conversion.
postedWithinDaysLast 1–365 days; 0/unset means all dates. Unknown dates are excluded when enabled.
includeDescriptionDefault true; false skips detail requests and returns listing metadata. Same price.
maxJobsPerQueryDelivered jobs per keyword, default 20; 0 means up to the 1,000-hit source window.
maxJobsGlobal cap, default 20; 0 removes this cap. Per-query/source limits remain.
skipJobIdsIDs to exclude without charge.
onlyNewSinceLastRun, stateNameEnable persistent delivered-ID memory and optionally name the feed.

The API also accepts aliases: query/searchQuery/keywords/searchTerms, countries/countryCode, location/city, includeDetails, maxItems/maxResults, onlyNewJobs/onlyNew, stateKey/monitorKey, and excludeJobIds. Canonical fields take precedence. Unknown fields fail early so misspelled filters do not silently produce a broad export.

Output: Welcome to the Jungle job data fields

One dataset row per delivered job. Missing source information is null or an empty list; no salary or company details are inferred.

Simplified example from a public posting checked on 23 October 2026:

{
"id": "WEBNE_2q66Zp5",
"dedupKey": "wttj:WEBNE_2q66Zp5",
"title": "Développeur Python - LLM/RAG H/F - Paris",
"company": {"name": "Webnet", "slug": "webnet", "employeeCount": 200},
"url": "https://www.welcometothejungle.com/en/companies/webnet/jobs/developpeur-python-llm-rag-h-f-paris_paris",
"salary": {"minimum": 45, "maximum": 45, "currency": "EUR", "period": "yearly", "units": "as-provided-by-source"},
"query": "python"
}

The real row includes the full job text and the fields below. You can download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

FieldMeaning
idPublic job reference, or source search ID if a reference is absent.
sourceIdSearch index object ID, as a string.
dedupKeyStable wttj: prefix plus job ID, useful in multi-source databases.
title, slugJob title and public URL slug.
url, applyUrlCanonical public page and external application link when provided.
companyPublic name, slug, reference, website, headcount, size, founding year, logo, industry and headquarters when available.
locations, offices, countryCodesOffice labels, structured city/region/country/coordinates, and country codes.
remoteMode, contractType, languageSource remote, contract and posting-language labels.
salaryMinimum, maximum, currency, period and source yearly minimum; all amounts are preserved as provided.
experienceLevel, educationLevelSource experience and education labels when stated.
profession, sectorsPublic profession label and company sector labels when supplied.
skills, toolsJob skill labels (English when available) and named tools such as Python, when the employer lists them.
postedAt, updatedAt, startDateSource dates in ISO format when available.
descriptionHtml, descriptionFull description as HTML and plain text; null in listing-only mode.
candidateProfile, recruitmentProcessPlain-text candidate requirements and interview process when published.
queryFirst search keyword that delivered this job.
source, scrapedAtSource label and collection timestamp.

Salary units need checking. Some employers enter 45–55 where others enter 45000–55000. The Actor preserves those numbers and sets salary.units to as-provided-by-source. It does not guess a multiplier or produce a normalized salary benchmark. Check the posting before comparing amounts. yearlyMinimumAsProvided is also a source value, not a normalization by this Actor.

Export Welcome to the Jungle jobs to Google Sheets, CSV, Excel or a webhook

  1. Paste a feed input from above, click Save as task, then Schedules → Create schedule → Daily and add the task.
  2. Every later run delivers only jobs not delivered to that feed before, and skipped jobs are not charged.
  3. Read RUN-SUMMARY in the run's key-value store when you need counts without opening the dataset.

Where the results go

  • CSV or Excel download: the run's Output tab, or https://api.apify.com/v2/datasets/<datasetId>/items?format=csv for a direct file link.
  • Google Sheets: the task's Integrations tab has an Apify Google Sheets integration that appends every run's rows to a sheet.
  • Slack, email, webhook: a message per run, or a webhook to your backend when the run finishes.
  • Make, Zapier, n8n: use the Apify module/node with the task id, or call the synchronous endpoint above from Python, JavaScript or any HTTP client.

How much does it cost to scrape Welcome to the Jungle?

EventFree / StarterScaleBusiness and higher
Delivered job, description included$0.0008$0.00068$0.00056
Actor start, once per run$0.001$0.00085$0.0007

At the base rate, 100 jobs cost $0.081 and 1,000 jobs cost $0.801 in one run. A feed delivering 10 unseen jobs per day for 30 runs costs $0.27. This is a volume illustration, not a forecast of new vacancies. Set Apify's maximum charge per run to control spending; the Actor accounts for the start fee before fetching chargeable details. Platform compute is included in these pay-per-event prices.

How teams use itVolumeCost
Quick look: 20 python jobs with descriptions (5 seconds on 30 Oct 2026)20 jobs, 1 run$0.017
One keyword to the source windowup to 1,000 jobs, 1 runup to $0.80
Daily feed, only new jobs, 10 unseen jobs a day300 jobs, 30 runs$0.27 a month

Default memory is 512 MB, which incurs one start event. Choosing more than 1 GB of memory multiplies the platform's start-event count.

FAQ

Is there an official Welcome to the Jungle API?

Welcome to the Jungle does not publish a public jobs API for third parties. This Actor reads the public search index and job detail endpoints that the welcometothejungle.com site itself loads and exposes them as a REST API with schedules, webhooks and only-new feeds, so you do not maintain a scraper yourself.

Does it scrape all WTTJ countries, including the US and UK (ex-Otta)? It covers jobs on the France-focused public board, including postings abroad. It does not promise the separate US/UK matching product's inventory.

Is it legal to scrape Welcome to the Jungle?

The Actor only reads job and company information that the site shows to anyone without an account, and it collects no applicant data or private recruiter contact details. Public job data is generally collected for aggregation, research and recruiting; you remain responsible for complying with Welcome to the Jungle's terms of use and the data-protection law (including the GDPR) that applies to you.

Can I export Welcome to the Jungle jobs to Excel or Google Sheets?

Yes. Every run's dataset downloads as CSV, Excel, JSON, XML or HTML, and the task's Integrations tab appends rows to a Google Sheet after each run.

Does it return full descriptions? Yes, by default. HTML, plain text, candidate profile and recruitment process come from the public job detail endpoint. Optional fields depend on the employer.

Why did a broad search stop before every match? The source limits accessible results to 1,000 per search. Narrow your search filters. A delivery cap, charge cap or run time limit can stop it sooner; inspect RUN-SUMMARY.

Can an empty result mean an outage? A valid search with no matches succeeds with zero rows. Source HTTP errors and invalid responses fail the run, so an outage is not reported as a valid empty feed. Previously saved rows remain available after a partial failure.

Are recruiter emails included? No. The Actor returns public job and company information and does not collect applicant data or private recruiter contact details.

Peut-on exporter les offres d'emploi Welcome to the Jungle en CSV ? Oui : chaque exécution produit un jeu de données téléchargeable en CSV, Excel ou JSON, avec la description complète, l'entreprise, le type de contrat, le télétravail et le salaire lorsqu'il est affiché. Les filtres countryCodes, locations, contractTypes, remoteModes et languages acceptent les valeurs du site.

Python client on GitHub

datadmon/welcome-to-the-jungle-jobs-scraper: a tested Python script that runs this Actor and saves the results as JSON and CSV, with a real sample output, the field reference and a GitHub Actions recipe for a daily only-new feed.

All Daemon Data Actors: apify.com/data_daemon.

Support

Open an issue with the input and a public job URL if a field or filter behaves unexpectedly; issues are usually answered within a day. This Actor is independently maintained by Daemon Data and is not affiliated with Welcome to the Jungle.

A quick review on the Actor page helps other users find it.