Piloterr Welcometothejungle API
The Welcometothejungle API from Piloterr — 2 operation(s) for welcometothejungle.
The Welcometothejungle API from Piloterr — 2 operation(s) for welcometothejungle.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/piloterr-com:piloterr-com-welcometothejungle-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Piloterr API Reference Welcometothejungle API
description: Complete API reference documentation.
version: 1.0.0
servers:
- url: https://api.piloterr.com
description: API Server
tags:
- name: Welcometothejungle
paths:
/v2/welcometothejungle/search:
get:
summary: Welcome to the Jungle Search
description: 'Search Welcome to the Jungle jobs. Returns offer cards and pagination (1 credit).
**Credit cost:** 1 credit per call'
operationId: get-welcometothejungle-search
security:
- ApiKeyAuth: []
parameters:
- name: query
in: query
required: true
description: "Job keyword or a Welcome to the Jungle jobs-search URL.\n\n**Example (keyword):**\n\n python\n\n**Example (jobs URL):**\n\n https://www.welcometothejungle.com/fr/jobs?query=python\n\n**Notes:**\n- `language` defaults to `fr`. `en`, `en-GB` and `en-US` use the English index.\n- A company profile URL (`/companies/{slug}` without a jobs search) returns 400.\n- Another host returns 400."
schema:
type: string
description: "Job keyword or a Welcome to the Jungle jobs-search URL.\n\n**Example (keyword):**\n\n python\n\n**Example (jobs URL):**\n\n https://www.welcometothejungle.com/fr/jobs?query=python\n\n**Notes:**\n- `language` defaults to `fr`. `en`, `en-GB` and `en-US` use the English index.\n- A company profile URL (`/companies/{slug}` without a jobs search) returns 400.\n- Another host returns 400."
- name: language
in: query
required: false
description: fr (default) or en. en-gb and en-us count as en. A /fr/ or /en/ path in the URL overrides this.
schema:
type: string
default: fr
description: fr (default) or en. en-gb and en-us count as en. A /fr/ or /en/ path in the URL overrides this.
- name: page
in: query
required: false
description: Page from 1, 30 offers. A page value already in the URL overrides this.
schema:
type: number
description: Page from 1, 30 offers. A page value already in the URL overrides this.
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
url:
type: string
city:
type: string
slug:
type: string
title:
type: string
remote:
type: string
company:
type: object
properties:
name:
type: string
slug:
type: string
logo_url:
type: string
reference:
type: string
country:
type: string
sectors:
type: array
items:
type: string
position:
type: integer
reference:
type: string
profession:
type: string
salary_max:
type: integer
salary_min:
type: integer
published_at:
type: string
contract_type:
type: string
salary_period:
type: string
salary_currency:
type: string
pagination:
type: object
properties:
next:
type: string
page:
type: integer
per_page:
type: integer
total_pages:
type: integer
total_results:
type: integer
examples:
Python jobs in France:
value:
results:
- url: https://www.welcometothejungle.com/fr/companies/warren-walter/jobs/developpeur-senior-python-node-js-ia-llm-rag-machine-learning-freelance-h-f_paris
city: Paris
slug: developpeur-senior-python-node-js-ia-llm-rag-machine-learning-freelance-h-f_paris
title: Développeur Senior Python / Node.js – IA, LLM, RAG & Machine Learning Freelance (H/F)
remote: partial
company:
name: Warren Walter
slug: warren-walter
logo_url: https://cdn-images.welcometothejungle.com/fvPxjAqiAdHkDVgw0Wv2mGh7J1agohB0wDryhKh1vog/rs:auto:400/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9vcmdhbml6YXRpb24vbG9nby81NzY3LzE2NDg4MS9kZjlmMzY5MS0xNTZmLTQwYTItOWRjMC0xOGQ5NGM1YjUwMTIucG5n
reference: 9onX3U
country: FR
sectors:
- Application mobile
- Logiciels
- Digital Marketing / Data Marketing
- IT / Digital
position: 1
reference: 51c6ad1d-9fe0-431e-9c42-566fef3a08f2
profession: Développeur de logiciels
salary_max: 550
salary_min: 450
published_at: '2026-10-26T09:49:08Z'
contract_type: freelance
salary_period: daily
salary_currency: EUR
pagination:
next: https://www.welcometothejungle.com/fr/jobs?query=python&page=2
page: 1
per_page: 30
total_pages: 34
total_results: 6712
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Welcometothejungle
post:
summary: Welcome to the Jungle Search
description: 'Search Welcome to the Jungle jobs. Returns offer cards and pagination (1 credit).
**Credit cost:** 1 credit per call'
operationId: post-welcometothejungle-search
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: "Job keyword or a Welcome to the Jungle jobs-search URL.\n\n**Example (keyword):**\n\n python\n\n**Example (jobs URL):**\n\n https://www.welcometothejungle.com/fr/jobs?query=python\n\n**Notes:**\n- `language` defaults to `fr`. `en`, `en-GB` and `en-US` use the English index.\n- A company profile URL (`/companies/{slug}` without a jobs search) returns 400.\n- Another host returns 400."
language:
type: string
default: fr
description: fr (default) or en. en-gb and en-us count as en. A /fr/ or /en/ path in the URL overrides this.
page:
type: number
description: Page from 1, 30 offers. A page value already in the URL overrides this.
required:
- query
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
url:
type: string
city:
type: string
slug:
type: string
title:
type: string
remote:
type: string
company:
type: object
properties:
name:
type: string
slug:
type: string
logo_url:
type: string
reference:
type: string
country:
type: string
sectors:
type: array
items:
type: string
position:
type: integer
reference:
type: string
profession:
type: string
salary_max:
type: integer
salary_min:
type: integer
published_at:
type: string
contract_type:
type: string
salary_period:
type: string
salary_currency:
type: string
pagination:
type: object
properties:
next:
type: string
page:
type: integer
per_page:
type: integer
total_pages:
type: integer
total_results:
type: integer
examples:
Python jobs in France:
value:
results:
- url: https://www.welcometothejungle.com/fr/companies/warren-walter/jobs/developpeur-senior-python-node-js-ia-llm-rag-machine-learning-freelance-h-f_paris
city: Paris
slug: developpeur-senior-python-node-js-ia-llm-rag-machine-learning-freelance-h-f_paris
title: Développeur Senior Python / Node.js – IA, LLM, RAG & Machine Learning Freelance (H/F)
remote: partial
company:
name: Warren Walter
slug: warren-walter
logo_url: https://cdn-images.welcometothejungle.com/fvPxjAqiAdHkDVgw0Wv2mGh7J1agohB0wDryhKh1vog/rs:auto:400/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9vcmdhbml6YXRpb24vbG9nby81NzY3LzE2NDg4MS9kZjlmMzY5MS0xNTZmLTQwYTItOWRjMC0xOGQ5NGM1YjUwMTIucG5n
reference: 9onX3U
country: FR
sectors:
- Application mobile
- Logiciels
- Digital Marketing / Data Marketing
- IT / Digital
position: 1
reference: 51c6ad1d-9fe0-431e-9c42-566fef3a08f2
profession: Développeur de logiciels
salary_max: 550
salary_min: 450
published_at: '2026-10-26T09:49:08Z'
contract_type: freelance
salary_period: daily
salary_currency: EUR
pagination:
next: https://www.welcometothejungle.com/fr/jobs?query=python&page=2
page: 1
per_page: 30
total_pages: 34
total_results: 6712
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Welcometothejungle
/v2/welcometothejungle/company:
get:
summary: Welcome to the Jungle Company
description: 'Welcome to the Jungle company profile: headcount, offices, sectors and website (1 credit).
**Credit cost:** 1 credit per call'
operationId: get-welcometothejungle-company
security:
- ApiKeyAuth: []
parameters:
- name: query
in: query
required: true
description: "Slug, company name, or a Welcome to the Jungle company URL.\n\n**Example (slug):**\n\n alan\n\n**Example (company URL):**\n\n https://www.welcometothejungle.com/fr/companies/alan\n\n**Notes:**\n- Case is ignored: `Alan` and `alan` open the same profile.\n- A name such as `Doctolib` or `Société Générale` is resolved from the directory.\n- A job URL under `/companies/{slug}/jobs/...` uses the company slug.\n- Another host returns 400."
schema:
type: string
description: "Slug, company name, or a Welcome to the Jungle company URL.\n\n**Example (slug):**\n\n alan\n\n**Example (company URL):**\n\n https://www.welcometothejungle.com/fr/companies/alan\n\n**Notes:**\n- Case is ignored: `Alan` and `alan` open the same profile.\n- A name such as `Doctolib` or `Société Générale` is resolved from the directory.\n- A job URL under `/companies/{slug}/jobs/...` uses the company slug.\n- Another host returns 400."
- name: language
in: query
required: false
description: fr (default) or en. en-gb and en-us count as en. Chooses the language of the profile text and URL.
schema:
type: string
default: fr
description: fr (default) or en. en-gb and en-us count as en. Chooses the language of the profile text and URL.
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
url:
type: string
name:
type: string
slug:
type: string
links:
type: array
items:
type: object
properties:
url:
type: string
kind:
type: string
labels:
type: array
items: {}
offices:
type: array
items:
type: object
properties:
city:
type: string
address:
type: string
country:
type: string
latitude:
type: number
zip_code:
type: string
longitude:
type: number
is_headquarter:
type: boolean
sectors:
type: array
items:
type: object
properties:
name:
type: string
parent:
type: string
website:
type: string
logo_url:
type: string
cover_url:
type: string
employees:
type: integer
reference:
type: string
updated_at:
type: string
description:
type: string
equality_index:
type: integer
equality_index_year:
type: integer
examples:
Alan:
value:
url: https://www.welcometothejungle.com/fr/companies/alan
name: Alan
slug: alan
links:
- url: https://www.welcometothejungle.com/en/companies/alan
kind: canonical
- url: https://www.welcometothejungle.com/en/companies/alan
kind: alternate
- url: https://www.welcometothejungle.com/en/companies/alan
kind: alternate
labels: []
offices:
- city: Paris
address: 117 Quai de Valmy
country: FR
latitude: 48.87544
zip_code: '75010'
longitude: 2.36335
is_headquarter: true
sectors:
- name: FinTech / InsurTech
parent: Banking / Insurance / Finance
website: https://alan.com/
logo_url: https://cdn-images.welcometothejungle.com/9328mOxCAEq-4wFUg5LlLDkXZLLxIu1AZ-m93WhZqUM/rs:auto:400/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9vcmdhbml6YXRpb24vbG9nby8wOTY3LzE2MjQ5Ny80NWRmNjVhMC0yNDAxLTRlNWMtODJkZi0xNDQ5ODc2ZWNlODcucG5n
cover_url: https://cdn-images.welcometothejungle.com/LsvS1ejrz95JwWILFuMmUc65SMuLrvkbdSw-kAU6kRk/rs:auto:2000:450/g:fp:0:0.5/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy93ZWJzaXRlX29yZ2FuaXphdGlvbi9jb3Zlcl9pbWFnZS93dHRqX2ZyL2VuLTkzMjZjNDY3LWMzYmItNDk4Ny1hZGE1LTBhYTcxZjBiYjk4Ny5qcGc
employees: 400
reference: 0dgXRez
updated_at: '2026-10-27T15:35:19.451306Z'
description: '**🐼Who we are** **Alan is the healthcare super-app offering personalised healthcare & wellbeing to our members.** Founded in 2016 by Jean-Charles Samuelian and Charles Gorintin, Alan is the first independent digital health insurance in France since 1986. By providing our members…'
equality_index: 92
equality_index_year: 2025
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Welcometothejungle
post:
summary: Welcome to the Jungle Company
description: 'Welcome to the Jungle company profile: headcount, offices, sectors and website (1 credit).
**Credit cost:** 1 credit per call'
operationId: post-welcometothejungle-company
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: "Slug, company name, or a Welcome to the Jungle company URL.\n\n**Example (slug):**\n\n alan\n\n**Example (company URL):**\n\n https://www.welcometothejungle.com/fr/companies/alan\n\n**Notes:**\n- Case is ignored: `Alan` and `alan` open the same profile.\n- A name such as `Doctolib` or `Société Générale` is resolved from the directory.\n- A job URL under `/companies/{slug}/jobs/...` uses the company slug.\n- Another host returns 400."
language:
type: string
default: fr
description: fr (default) or en. en-gb and en-us count as en. Chooses the language of the profile text and URL.
required:
- query
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
url:
type: string
name:
type: string
slug:
type: string
links:
type: array
items:
type: object
properties:
url:
type: string
kind:
type: string
labels:
type: array
items: {}
offices:
type: array
items:
type: object
properties:
city:
type: string
address:
type: string
country:
type: string
latitude:
type: number
zip_code:
type: string
longitude:
type: number
is_headquarter:
type: boolean
sectors:
type: array
items:
type: object
properties:
name:
type: string
parent:
type: string
website:
type: string
logo_url:
type: string
cover_url:
type: string
employees:
type: integer
reference:
type: string
updated_at:
type: string
description:
type: string
equality_index:
type: integer
equality_index_year:
type: integer
examples:
Alan:
value:
url: https://www.welcometothejungle.com/fr/companies/alan
name: Alan
slug: alan
links:
- url: https://www.welcometothejungle.com/en/companies/alan
kind: canonical
- url: https://www.welcometothejungle.com/en/companies/alan
kind: alternate
- url: https://www.welcometothejungle.com/en/companies/alan
kind: alternate
labels: []
offices:
- city: Paris
address: 117 Quai de Valmy
country: FR
latitude: 48.87544
zip_code: '75010'
longitude: 2.36335
is_headquarter: true
sectors:
- name: FinTech / InsurTech
parent: Banking / Insurance / Finance
website: https://alan.com/
logo_url: https://cdn-images.welcometothejungle.com/9328mOxCAEq-4wFUg5LlLDkXZLLxIu1AZ-m93WhZqUM/rs:auto:400/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9vcmdhbml6YXRpb24vbG9nby8wOTY3LzE2MjQ5Ny80NWRmNjVhMC0yNDAxLTRlNWMtODJkZi0xNDQ5ODc2ZWNlODcucG5n
cover_url: https://cdn-images.welcometothejungle.com/LsvS1ejrz95JwWILFuMmUc65SMuLrvkbdSw-kAU6kRk/rs:auto:2000:450/g:fp:0:0.5/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy93ZWJzaXRlX29yZ2FuaXphdGlvbi9jb3Zlcl9pbWFnZS93dHRqX2ZyL2VuLTkzMjZjNDY3LWMzYmItNDk4Ny1hZGE1LTBhYTcxZjBiYjk4Ny5qcGc
employees: 400
reference: 0dgXRez
updated_at: '2026-10-27T15:35:19.451306Z'
description: '**🐼Who we are** **Alan is the healthcare super-app offering personalised healthcare & wellbeing to our members.** Founded in 2016 by Jean-Charles Samuelian and Charles Gorintin, Alan is the first independent digital health insurance in France since 1986. By providing our members…'
equality_index: 92
equality_index_year: 2025
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Welcometothejungle
components:
parameters:
fields:
name: fields
in: query
required: false
description: Comma-separated list of response fields to return, with dot notation for nested fields (e.g. `name,location.city`).
schema:
type: string
is_async:
name: is_async
in: query
required: false
description: 'Run the request as a background job: the API answers `202` with a `job_id` to poll on `GET /v1/jobs/{id}`.'
schema:
type: boolean
default: false
soft_fail:
name: soft_fail
in: query
required: false
description: Return HTTP 200 even when the request fails; the error is in the `error` field of the body.
schema:
type: boolean
default: false
schemas:
ErrorResponse:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable error message.
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Your API key. Include it in the x-api-key header for every request.