# Welcome to the Jungle Company Scraper — Firmographics (`haketa/wttj-companies-scraper`) Actor

Scrape company firmographics from Welcome to the Jungle: name, sector, size, employees, offices (city/country/GPS), tech stack and open-jobs count. Filter by keyword, country, sector or size. B2B lead generation & market research. No API key. Export JSON, CSV, Excel.

- **URL**: https://apify.com/haketa/wttj-companies-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Welcome to the Jungle — Company Scraper 🏢

Extract **company firmographics from Welcome to the Jungle (WTTJ)** — one of Europe's biggest employer-branding & jobs platforms — at scale, without an account or API key. Search and filter companies and export clean JSON, CSV or Excel: **name, sector, size, employee count, offices (city, country, GPS), tech stack, open-jobs count and description.**

Ideal for **B2B lead generation, market research, sales prospecting and competitive intelligence** across European (and global) companies.

***

### 🔑 What this scraper does

- 🔎 **Search companies** by keyword — `software`, `fintech`, `healthcare`, or a company name.
- 🧭 **Filter** by country, sector or minimum employee count.
- 🏢 **Firmographics** — sector(s), size band, exact employee count, HQ and all offices with GPS.
- 🛠️ **Tech stack** — the technologies a company lists (backend, frontend, devops…) where published.
- 📊 **Hiring signal** — number of open jobs per company.
- 📝 **Description & branding** — company description, labels, logo and cover image.

No login, no cookies to paste, no API key. Enter a query, press start, export.

***

### 📋 Example output

```json
{
  "name": "Uxopian Software",
  "slug": "uxopian-software",
  "url": "https://www.welcometothejungle.com/en/companies/uxopian-software",
  "description": "Uxopian Software builds content-services and archiving solutions...",
  "size": "Between 15 and 50 employees",
  "employees": 45,
  "sectors": ["Software", "IT / Digital", "SaaS / Cloud Services"],
  "tools": [{ "backend": "Java" }, { "backend": "Spring-Boot" }, { "devops": "Docker" }],
  "offices": [{ "city": "Nantes", "district": "Nantes", "country": "France", "countryCode": "FR" }],
  "countries": ["FR"],
  "hqCity": "Nantes",
  "hqCountryCode": "FR",
  "lat": 47.2184,
  "lng": -1.5536,
  "openJobs": 3,
  "labels": [],
  "acceptsSpontaneousApplication": true,
  "hasTechPage": true,
  "logo": "https://cdn.welcometothejungle.com/...",
  "coverImage": "https://cdn.welcometothejungle.com/...",
  "objectID": "829771",
  "scrapedAt": "2026-09-11T10:00:00.000Z"
}
```

***

### 🗂️ Fields you get

| Field | Description |
|---|---|
| `name`, `slug`, `url` | Company name, handle and profile URL |
| `description` | Company description |
| `size` | Employee size band (e.g. "Between 15 and 50 employees") |
| `employees` | Exact employee count where available |
| `sectors` | Industry sectors |
| `tools` | Tech stack, grouped by category (backend/frontend/devops…) — where the company publishes a tech page |
| `offices` | All offices with city, district, country and country code |
| `countries`, `hqCity`, `hqCountryCode` | Country list and HQ location |
| `lat`, `lng` | HQ GPS coordinates |
| `openJobs` | Number of currently open jobs |
| `labels` | Employer labels/badges |
| `acceptsSpontaneousApplication`, `hasTechPage` | Extra company signals |
| `logo`, `coverImage` | Brand images |
| `objectID`, `scrapedAt` | Unique ID and scrape timestamp |

> Size, employees, sectors and GPS come on most companies; **tech stack is present where a company publishes a tech page** (a minority, but rich when present). Name, URL and open-jobs count come on every company.

***

### 🚀 How to use

1. Click **Try for free**.
2. Enter a **Search Query** (e.g. `software`) and, optionally, **Country Codes** / **Sectors** / **Min Employees**.
3. Set **Max Items** and **Max Pages**, then click **Start**.
4. Export as **JSON, CSV, Excel, HTML, RSS**, or via the **Apify API**.

***

### 📝 Example inputs

#### 1. Companies by keyword

```json
{ "searchQuery": "fintech", "maxItems": 300 }
```

#### 2. Software companies in France & UK

```json
{
  "searchQuery": "software",
  "countryCodes": ["FR", "GB"],
  "maxItems": 1000
}
```

#### 3. Mid-size and larger companies

```json
{
  "searchQuery": "healthcare",
  "minEmployees": 100,
  "maxItems": 500
}
```

#### 4. All companies in a sector

```json
{
  "searchQuery": "",
  "sectors": ["SaaS / Cloud Services"],
  "maxItems": 1000,
  "maxPages": 20
}
```

***

### 💡 Popular use cases

#### 🎯 B2B lead generation

Build targeted company lists by sector, size and country — with HQ location, employee count and open-jobs signal. Prioritise companies that are actively hiring (higher `openJobs`).

#### 🛠️ Technographic prospecting

Filter and enrich by **tech stack** — find companies using a specific backend, frontend or devops technology for tools/dev-tool sales and competitive positioning.

#### 📊 Market & competitive research

Map an industry: how many companies, what sizes, where they're based, and which technologies dominate. GPS coordinates let you map company density.

#### 💼 Recruiting & employer intelligence

See which companies are hiring, how big they are, and what they build — sourcing intelligence for recruiters and talent teams.

#### 🤖 AI, LLM & data products

Feed clean, structured company firmographics into your own models, CRMs, dashboards or data products.

***

### 👥 Who uses this

- **Sales & growth teams** building B2B company lists by sector, size and geography.
- **Dev-tool & SaaS vendors** prospecting by tech stack.
- **Market researchers & analysts** mapping industries.
- **Recruiters** identifying hiring companies.
- **Developers & AI builders** who need firmographic data via API.

***

### 🎛️ Filters & options

- **Search Query** — keyword or company name. Leave empty for all companies.
- **Country Codes** — keep companies with an office in these countries (ISO codes).
- **Sectors** — filter by sector name.
- **Min Employees** — minimum employee count.
- **Max Items** — cap total companies (`0` = unlimited).
- **Max Pages** — pages to scrape (100 companies per page).

***

### ❓ FAQ

**Do I need a Welcome to the Jungle account or API key?**
No. Just enter a query and run — no login, no cookies, no key.

**Do I get employee counts and company size?**
Yes, on most companies — both the size band (`size`) and an exact `employees` count where WTTJ has it.

**Do I get the tech stack?**
Where a company publishes a tech page, yes — grouped by category (backend, frontend, devops…). Not every company has one; this is a WTTJ platform choice, not a scraper limit.

**Can I filter by country or sector?**
Yes — use **Country Codes** and **Sectors**, and/or **Min Employees**.

**Do I get GPS coordinates?**
Yes — HQ `lat`/`lng`, plus every office's city and country.

**How many companies can I get?**
As many as the search returns, up to your `maxItems` and `maxPages` limits. Set `maxItems: 0` for unlimited.

**What export formats are supported?**
JSON, CSV, Excel, HTML table, RSS, and the Apify API. Connect to Make, Zapier, Google Sheets, Slack, webhooks or an MCP server.

**Is the data structured and clean?**
Yes. Each company is a flat, typed JSON object, de-duplicated by ID.

***

### 🔌 Integrations

- Export to **JSON, CSV, Excel, HTML, RSS**.
- Pull via the **Apify API** or client libraries (JavaScript, Python).
- Connect to **Make, Zapier, Google Sheets, Slack, webhooks** and more.
- Use from an **MCP server** in your AI agent / LLM workflow.
- Schedule recurring runs with the **Apify Scheduler**.

***

### ⚖️ Legal & responsible use

This scraper collects **publicly available** company information only — the same data any visitor can see on Welcome to the Jungle without logging in. It does not access private messages, candidate data, or anything behind authentication.

You are responsible for how you use the collected data. Please:

- Respect Welcome to the Jungle's Terms of Service and all applicable laws (including the GDPR).
- Use any company data lawfully and only for legitimate purposes.
- Avoid excessive request rates and scrape responsibly.

This tool is provided for lawful purposes such as market research, lead generation and business intelligence. It is not affiliated with, endorsed by, or connected to Welcome to the Jungle.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search companies by, e.g. 'software', 'fintech', 'healthcare', or a company name. Leave empty to scrape all companies.

## `countryCodes` (type: `array`):

Filter to companies with an office in these countries (ISO codes, e.g. 'FR', 'GB', 'US', 'DE', 'ES'). Leave empty for all countries.

## `sectors` (type: `array`):

Filter by sector name, e.g. 'Software', 'FinTech / InsurTech', 'SaaS / Cloud Services'. Leave empty for all sectors.

## `minEmployees` (type: `integer`):

Only companies with at least this many employees.

## `maxItems` (type: `integer`):

Maximum number of companies to collect. 0 = unlimited.

## `maxPages` (type: `integer`):

How many result pages to scrape. Each page has 100 companies.

## `proxyConfiguration` (type: `object`):

The default (Apify Proxy, datacenter) works out of the box.

## Actor input object example

```json
{
  "searchQuery": "software",
  "countryCodes": [],
  "sectors": [],
  "maxItems": 200,
  "maxPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open to view and export all scraped listings (JSON, CSV, Excel).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "software",
    "countryCodes": [],
    "sectors": [],
    "maxItems": 200,
    "maxPages": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/wttj-companies-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQuery": "software",
    "countryCodes": [],
    "sectors": [],
    "maxItems": 200,
    "maxPages": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/wttj-companies-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "software",
  "countryCodes": [],
  "sectors": [],
  "maxItems": 200,
  "maxPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/wttj-companies-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/wttj-companies-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Eama1UbPP5900Y0Mh/builds/fPSbh1KAEitJh9oSA/openapi.json
