# Wantedly Japan Tech Jobs & Startup Culture Scraper (`parseforge/wantedly-scraper`) Actor

Japanese tech-startup job listings from wantedly.com with company mission, culture and team narrative sections, founder, employee count, founding date, address and structured JobPosting data parsed from the public project + company pages.

- **URL**: https://apify.com/parseforge/wantedly-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🗾 Wantedly Japan Tech Jobs & Startup Culture Scraper

> 🚀 **Export Japanese startup job listings with full mission, culture, and team narrative data in seconds.** Filter by 53 occupation slugs, free-text keyword, or paste any Wantedly listing or company URL. No API key, no registration, no manual CSV wrangling.

> 🕒 **Last updated:** 2026-05-21 · **📊 28 fields** per record · **53 occupation slugs** · **Mission / culture / job-duties narrative capture** · **Founder, employee count, founding date**

Wantedly is Japan's flagship community-driven recruiting platform. Instead of leading with salary bands and bullet-point requirements, every Wantedly listing pushes the company's mission ("なぜやるのか" - why we do it), team culture ("どうやっているのか" - how we do it), and the substance of the role ("こんなことやります" - what you'll do). It is the dominant venue Japanese startups use to court bilingual engineers, designers, and product managers who care about values fit. This Actor walks Wantedly's public `/projects` board, paginates the result set for any of the **53 occupation slugs** or free-text queries, and returns one clean record per project with title, hiring company, employment type, full structured location, the full narrative blocks, and the JSON-LD JobPosting metadata.

Every record can be enriched in two extra hops: a fetch of the project detail page (to capture the long mission, culture, and job-duties prose) and a fetch of the company page (to pull founder name, founding date, employee headcount, slogan, company description, official website, and address). The Actor reads the JSON-LD that Wantedly publishes alongside every project and company page, so the structured data is the source of truth rather than brittle DOM selectors. Apify residential routing through Japan keeps the requests inside the same geo the official site serves and keeps the Wantedly-side bot filters happy.

| 🎯 Target Audience | 🛠 Primary Use Cases |
|---|---|
| Tech recruiters sourcing in Japan | Japan tech talent sourcing across 53 occupation slugs |
| Japan market and ecosystem analysts | Japanese startup ecosystem research with mission, culture, headcount |
| Global HR platforms and ATS vendors | Backfilling Japan inventory missed by LinkedIn and Indeed |
| Compensation and labour-market researchers | Cross-cultural HR analytics with founder, founding-date, employee-count signals |
| Founders and community operators | Competitive intelligence on how peers position mission and culture |

---

### 📋 What the Wantedly Japan Tech Jobs Scraper does

- 🧭 **53 occupation slugs.** Pick anything from `jp__mobile_engineer`, `jp__web_engineer`, `jp__data_scientist`, `jp__ui_ux_designer`, `jp__product_manager` to `jp__corporate_planning`. Leave blank to crawl every occupation.
- 🔍 **Free-text keyword search.** Mix Japanese or English keywords ("python", "AI", "デザイナー") on top of the occupation filter, just like the site search box.
- 💫 **Mission and culture narrative.** Every Wantedly project ships three culture sections ("why we do it", "how we do it", "what you do"). The Actor captures all three as separate fields, ready for downstream NLP, embedding, or values-fit scoring.
- 🏢 **Company-page enrichment.** Each unique hiring company is fetched once and merged: founder name, founding date, employee count, slogan, address, company description, official website.
- 🔗 **Start URL passthrough.** Already have a Wantedly project ID, a company slug, or a filter URL? Paste it into `startUrls` and the Actor will route it through the right parser (project, company, or listing).
- ⚡ **JSON-LD source of truth.** Wantedly publishes JobPosting and Organization schema.org blocks on every page. The Actor reads those rather than relying on DOM classes, so layout tweaks do not break the schema.

Each record carries the project image URL, title, employment type, occupation category, full structured location (country, region, locality, street address), project URL, project ID, long description, the short snippet, the mission / culture / job-duties narratives, posting timestamp, company name and slug, company URL on Wantedly, company logo, company description and slogan, employee headcount, founding date, founder, the company's external website, the listing URL the project came from, and a scrape timestamp.

> 💡 **Why it matters:** LinkedIn and Indeed under-cover Japan's startup ecosystem because the platforms recruiters there actually use (Wantedly, Bizreach, Green) are different. Pair this Actor with a LinkedIn scraper to see what your global feeds are missing, especially in the bilingual product, AI, and design talent pools.

---

### 🎬 Full Demo

🚧 _Coming soon: a 3-minute walkthrough showing occupation filtering, keyword search, mission / culture capture, and downstream Japan tech sourcing use cases._

---

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td><code>startUrls</code></td><td>array of URLs</td><td>No</td><td>Direct Wantedly project (<code>/projects/{id}</code>), company (<code>/companies/{slug}</code>), or listing URLs. When set, overrides the occupation and keyword fields.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td>No</td><td>Cap on records returned. Free plan caps at 10. Paid plans up to 1,000,000. Defaults to 10.</td></tr>
<tr><td><code>occupationTypes</code></td><td>enum (multi-select)</td><td>No</td><td>53 Wantedly occupation slugs covering engineering, design, PM, marketing, sales, corporate, consulting, and medical. Leave empty to crawl all occupations.</td></tr>
<tr><td><code>searchQuery</code></td><td>string</td><td>No</td><td>Free-text keyword to combine with the occupation filter (e.g. "python", "machine learning", "デザイナー").</td></tr>
<tr><td><code>sortBy</code></td><td>enum</td><td>No</td><td>Result ordering: <code>mixed</code> (default), <code>popular</code>, or <code>recent</code>.</td></tr>
<tr><td><code>includeJobDetails</code></td><td>boolean</td><td>No</td><td>Fetch each project page for full mission, culture, job-duties narrative and the long JobPosting description. Defaults to <code>true</code>.</td></tr>
<tr><td><code>includeCompanyDetails</code></td><td>boolean</td><td>No</td><td>Fetch each hiring company page to capture founder, founding date, employee count, slogan, address, company description, and official website. Defaults to <code>true</code>.</td></tr>
<tr><td><code>proxyConfiguration</code></td><td>object</td><td>No</td><td>Apify proxy. Defaults to residential with country JP. Required from the Apify cloud since datacenter routes are filtered.</td></tr>
</table>

Example: Japanese AI engineers, 50 results with full enrichment.

```json
{
  "maxItems": 50,
  "occupationTypes": ["jp__web_engineer"],
  "searchQuery": "AI",
  "includeJobDetails": true,
  "includeCompanyDetails": true
}
````

Example: replay a specific Wantedly listing URL.

```json
{
  "maxItems": 100,
  "startUrls": [
    "https://www.wantedly.com/projects?occupation_types[]=jp__data_scientist"
  ],
  "includeJobDetails": true,
  "includeCompanyDetails": true
}
```

> ⚠️ **Good to Know:** Wantedly's listing page returns 10 projects per page from a JSON-LD ItemList, which is what the Actor uses as the source of truth. Detail-page enrichment adds a second fetch per project (for mission, culture, job duties), and company enrichment adds one fetch per unique company (deduplicated). Disable either flag to halve the run time if you only need the listing-level fields.

***

### 📊 Output

Every record is one Wantedly project, one row. Free plan returns 10. Paid plans up to 1,000,000.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🖼️ `imageUrl` | string | `https://images.wantedly.com/i/pmdc9cF` |
| 📌 `title` | string | `Webサイト・LPの実装〜改善まで担う方` |
| 🎯 `occupationalCategory` | string | `Webディレクター` |
| 💼 `employmentType` | string | `FULL_TIME` |
| 🌏 `jobLocationCountry` | string | `JP` |
| 🗾 `jobLocationRegion` | string | `東京都` |
| 🏙️ `jobLocationLocality` | string | `港区` |
| 📍 `jobLocationStreetAddress` | string | `北青山2-12-13 青山KYビル3階` |
| 🔗 `jobUrl` | string | `https://www.wantedly.com/projects/2362110` |
| 🆔 `jobId` | string | `2362110` |
| 📝 `description` | string | full JobPosting description prose |
| ✂️ `descriptionShort` | string | first 240 chars of description |
| 💫 `missionWhy` | string | "why we do it" narrative ("なぜやるのか") |
| 🤝 `cultureHow` | string | "how we do it" narrative ("どうやっているのか") |
| 📋 `jobDutiesWhat` | string | "what you'll do" narrative ("こんなことやります") |
| 📅 `datePosted` | string | `2026-03-10T00:58:45.870Z` (ISO 8601) |
| 🏢 `companyName` | string | `株式会社ワイシーグループ` |
| 🏷️ `companySlug` | string | `company_4864506` |
| 🌐 `companyUrl` | string | `https://www.wantedly.com/companies/company_4864506` |
| 🖼️ `companyLogo` | string | `https://d2v9k5u4v94ulw.cloudfront.net/assets/images/...` |
| 📖 `companyDescription` | string | company description prose |
| 💬 `companySlogan` | string | `パートナーと長く成長し続ける仕組みをつくる` |
| 👥 `companyEmployees` | number | `55` |
| 🎂 `companyFoundingDate` | string | `2014-03-01` (ISO 8601 date) |
| 👤 `companyFounder` | string | `小園 洋平` |
| 🔗 `companyWebsite` | string | `https://yc-group.jp` |
| 🔎 `listingUrl` | string | source listing URL the project came from |
| ⏱️ `scrapedAt` | string | `2026-05-21T14:07:39.168Z` |
| ⚠️ `error` | string | only present on failed records |

#### 📦 Sample records

<details>
<summary>Typical record (web director role in Tokyo, mid-size 55-employee marketing agency)</summary>

```json
{
  "imageUrl": "https://images.wantedly.com/i/pmdc9cF",
  "title": "Webサイト・LPの実装〜改善まで担う方",
  "occupationalCategory": "Webディレクター",
  "employmentType": "FULL_TIME",
  "jobLocationCountry": "JP",
  "jobLocationRegion": "東京都",
  "jobLocationLocality": "港区",
  "jobLocationStreetAddress": "北青山2-12-13 青山KYビル3階",
  "jobUrl": "https://www.wantedly.com/projects/2362110",
  "jobId": "2362110",
  "description": "Webコーダー兼ディレクターとして、LP・コーポレートサイト・キャンペーンページなどの実装を中心に、更新・改善・運用、進行管理まで幅広くお任せします...",
  "missionWhy": "理念は、「いつまでも青春創造（youth create）し、社会的課題に取り組み、人類・文化の進歩発展に貢献し続けること」です...",
  "cultureHow": "私たちは、創業時よりエンターテイメント・マーケティングを通じて、課題や背景が異なる案件に対しても、「決まったパッケージを売る」のではなく、課題に合わせて Online / Offline双方から最適な施策を選定し...",
  "datePosted": "2026-03-10T00:58:45.870Z",
  "companyName": "株式会社ワイシーグループ",
  "companySlug": "company_4864506",
  "companyUrl": "https://www.wantedly.com/companies/company_4864506",
  "companyDescription": "私たちが実現したいのは、パートナー企業が"短期の施策"に振り回されず、事業として長く成長し続けられる状態をつくることです...",
  "companySlogan": "パートナーと長く成長し続ける仕組みをつくる",
  "companyEmployees": 55,
  "companyFoundingDate": "2014-03-01",
  "companyFounder": "小園 洋平",
  "companyWebsite": "https://yc-group.jp",
  "listingUrl": "https://www.wantedly.com/projects?occupation_types[]=jp__web_engineer",
  "scrapedAt": "2026-05-21T14:07:39.168Z"
}
```

</details>

<details>
<summary>Edge case (AI engineer contract role, missing occupationalCategory)</summary>

```json
{
  "imageUrl": "https://images.wantedly.com/i/srfWc9X",
  "title": "納品して終わりじゃない。AIプロダクトの成長に伴走するエンジニア募集！",
  "occupationalCategory": null,
  "employmentType": "CONTRACTOR",
  "jobLocationCountry": "JP",
  "jobLocationRegion": "東京都",
  "jobLocationLocality": "渋谷区",
  "jobLocationStreetAddress": "千駄ヶ谷3丁目15-7 AMBRE 7F",
  "jobUrl": "https://www.wantedly.com/projects/2431197",
  "jobId": "2431197",
  "missionWhy": "企業理念はLove myself ではなく Lover yourselfです。トラスクエタの名称には、これからも研究開発を怠らず、トラスト（信頼）出来るデータを積み重ねていく...",
  "cultureHow": "一人ひとりの個性を大切にしながら、チームで未来をつくっています！2024年10月に北参道に移転しました...",
  "datePosted": "2026-05-15T03:34:44.490Z",
  "companyName": "株式会社トラスクエタ",
  "companySlug": "trusquetta",
  "companyUrl": "https://www.wantedly.com/companies/trusquetta",
  "companySlogan": "「やり方」よりも「在り方」",
  "companyEmployees": 25,
  "companyFoundingDate": "2010-10-01",
  "companyFounder": "高橋 聡",
  "companyWebsite": "https://trusquetta.co.jp",
  "listingUrl": "https://www.wantedly.com/projects?occupation_types[]=jp__web_engineer",
  "scrapedAt": "2026-05-21T14:07:39.168Z"
}
```

</details>

<details>
<summary>Sparse (regional Nagoya AI engineer role with short narrative blocks)</summary>

```json
{
  "imageUrl": "https://images.wantedly.com/i/TwKfoZw",
  "title": "名古屋｜AI開発に本気で向き合うエンジニア募集",
  "occupationalCategory": "エンジニアリング",
  "employmentType": "FULL_TIME",
  "jobLocationCountry": "JP",
  "jobLocationRegion": "愛知県",
  "jobLocationLocality": "名古屋市",
  "jobLocationStreetAddress": "中区栄五丁目２８番１２号 名古屋若宮ビル５階",
  "jobUrl": "https://www.wantedly.com/projects/2432043",
  "jobId": "2432043",
  "missionWhy": "AIは急速に普及しましたが、「なせこの精度になるのか」「どこに組み込むべきか」まで考えられているエンジニアは多くありません...",
  "cultureHow": "📚入社後最大3ヶ月の研修からスタート。IT基礎 / AI活用ワーク / AI×Webアプリの実践演習...",
  "datePosted": "2026-05-15T09:47:12.745Z",
  "companyName": "株式会社P",
  "companySlug": "pcompany",
  "companyEmployees": 27,
  "companyFoundingDate": "2014-01-01",
  "companyFounder": "伊藤 秀樹",
  "companyWebsite": "https://pcompany.jp",
  "listingUrl": "https://www.wantedly.com/projects?occupation_types[]=jp__web_engineer",
  "scrapedAt": "2026-05-21T14:07:39.168Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🗾 | **Japan-native job inventory.** Wantedly is where Japanese startups actually post. LinkedIn and Indeed feeds miss the bilingual product, design, and engineering talent that lives on Wantedly. |
| 💫 | **Mission and culture as data.** Three separate narrative fields per record (mission, culture, job duties) let you embed, score, or filter on values fit rather than salary alone. |
| 👥 | **Headcount and founding data.** Company enrichment adds founder name, founding date, employee count, slogan, and the official corporate website to every record. |
| 🎯 | **53 occupation slugs.** Engineering, design, PM, marketing, sales, corporate, consulting, medical. Each slug returns a different inventory so you can scope precisely. |
| 🌐 | **JSON-LD source of truth.** JobPosting and Organization schema.org blocks are the source. Layout tweaks do not break the schema; the Actor stays stable across Wantedly redesigns. |
| 🛡️ | **Anti-blocking via residential proxy.** Apify residential routing with country JP keeps the requests local and consistent with how Wantedly serves Japanese users. |
| 📊 | **Predictable schema.** 28 fields, every column populated where the source has it. Dead always-null columns are pruned, not shipped. |

> 📊 Wantedly hosts thousands of active project listings across **53 occupation slugs**, with full mission and culture data on every page. No other Japan recruiting source surfaces this much narrative signal in structured form.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ Wantedly Japan Tech Jobs Scraper** *(this Actor)* | Pay per item | Japan startup ecosystem, 53 occupations | Live | Occupation, keyword, URL | Zero config |
| Global aggregators routed at Japan | Per item | English-language Japan listings only | Live | Generic global filters | Aggregator-specific quirks |
| Recruiter-side ATS exports | Subscription per seat | One employer at a time | Manual | Internal taxonomy | Per-employer setup |
| Manual translation pipelines | Free or per-translation cost | Snapshot only | One-shot | None | Time-intensive |

For Japan-native tech-startup sourcing with mission and culture signal, this Actor is the path of least resistance.

***

### 🚀 How to use

1. 🔐 **Sign up.** [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (no card required for the free tier).
2. 🔍 **Find the Actor.** Search "Wantedly Japan Tech Jobs Scraper" in the Apify Store, or open it directly from the ParseForge collection.
3. ⚙️ **Set inputs.** Pick an occupation slug (or leave blank), optionally add a keyword, set `maxItems`, and toggle the two enrichment flags.
4. ▶️ **Run.** Click Start. Watch the live log as each page and project is processed.
5. 📥 **Export.** Pull results as JSON, CSV, Excel, XML, RSS, or push directly into Sheets, Slack, BigQuery, or any webhook.

> ⏱️ Total time: under 2 minutes from sign-up to first download.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%">

#### 🧑‍💼 Japan tech recruiters

- Daily feeds for bilingual engineer and product roles
- Surface roles your LinkedIn scraper misses entirely
- Source from regional employers outside Tokyo and Osaka
- Cross-reference Wantedly project with company headcount and founding date

</td>
<td width="50%">

#### 📊 Japan market and ecosystem analysts

- Map hiring demand by occupation, region, and company size
- Track which startups are pivoting from mission and culture signals
- Build founder, founding-date, headcount snapshots over time
- Quantify Japan startup employment by sector

</td>
</tr>
<tr>
<td width="50%">

#### 🌐 Global HR platforms and ATS vendors

- Backfill Japan inventory missing from English-language sources
- Power "similar roles" carousels with Japan-native data
- Enrich candidate profiles with company culture signal
- Localise candidate-side search with native Japanese text

</td>
<td width="50%">

#### 🔬 Compensation and labour-market researchers

- Track work-mode shifts across Japan startups
- Measure occupation share by employer size and age
- Generate cross-cultural HR analytics from a single feed
- Quantify founder cohorts and company-age distribution

</td>
</tr>
</table>

***

### 🔌 Automating Wantedly Japan Tech Jobs Scraper

Run on demand from your own code, or set it on a schedule.

- **[Node.js client](https://docs.apify.com/api/client/js)** for JavaScript and TypeScript callers
- **[Python client](https://docs.apify.com/api/client/python)** for data-science workflows and notebooks
- **[REST API docs](https://docs.apify.com/api/v2)** for any language with HTTP

Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run this Actor every hour, every morning, or once a week. Combine with Webhooks to push new postings into Slack, a database, or your ATS the moment they are scraped.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

You can paste the schema table above into any AI assistant and ask it to help you:

- Write a Python script to filter records by `occupationalCategory`
- Build a spreadsheet formula to count hires by `jobLocationRegion`
- Draft a prompt to summarise `missionWhy` values across a dataset
- Suggest downstream tools to embed `cultureHow` for values-fit scoring

The structured JSON output is designed for exactly this kind of downstream automation.

***

### ❓ Frequently Asked Questions

<details>
<summary>📦 <b>Can I use the data commercially?</b></summary>
Yes. The data is scraped from publicly accessible Wantedly project and company pages. You retain rights to use it in commercial products, dashboards, or reports. Be mindful of Wantedly's Terms of Service and applicable Japanese data-protection regulations (APPI).
</details>

<details>
<summary>💳 <b>Do I need a paid plan?</b></summary>
No. The free Apify tier returns up to 10 records per run, which is enough to validate the schema and try the filters. Paid plans unlock up to 1,000,000 items per run.
</details>

<details>
<summary>🚨 <b>What happens if a run fails?</b></summary>
Failed records are pushed to the dataset with an <code>error</code> field describing the cause. The Actor never crashes hard; you always get the items it managed to extract before the failure.
</details>

<details>
<summary>⚖️ <b>Is this legal?</b></summary>
We scrape only public, anonymously accessible Wantedly pages. The Actor is for users to research the public Japan job market. You are responsible for compliance with Wantedly's ToS and your local laws (including GDPR, CCPA, APPI, and copyright).
</details>

<details>
<summary>🇯🇵 <b>Why focus on Wantedly specifically?</b></summary>
Wantedly is the platform where Japanese startups push their mission, team culture, and bilingual roles. LinkedIn under-indexes Japan and Indeed surfaces a different inventory (mid-market, larger corporates). Wantedly is the right source for early-stage startups, design-led companies, and AI / product talent.
</details>

<details>
<summary>📃 <b>What are the three narrative fields exactly?</b></summary>
Every Wantedly project follows the same template with three culture sections: <code>missionWhy</code> ("なぜやるのか" - why we do it), <code>cultureHow</code> ("どうやっているのか" - how we do it), and <code>jobDutiesWhat</code> ("こんなことやります" - what you'll do). They are stored as separate fields so you can embed, score, or filter on each independently.
</details>

<details>
<summary>👥 <b>Where do companyEmployees, companyFounder, and companyFoundingDate come from?</b></summary>
From the Wantedly company page's JSON-LD <code>Organization</code> block. Each unique hiring company is fetched once per run (deduplicated across all matching projects) when <code>includeCompanyDetails</code> is enabled, then merged into every record sharing that employer.
</details>

<details>
<summary>🔄 <b>How fresh is the data?</b></summary>
Live. The Actor reads Wantedly's pages on every run. The <code>datePosted</code> field is parsed from the JobPosting schema and tells you when the project was published or last refreshed.
</details>

<details>
<summary>🌐 <b>How are Japanese characters handled?</b></summary>
The Actor reads HTML as UTF-8 and stores all text in its original script. Titles, company names, addresses, narrative blocks, and even keywords are preserved verbatim. No translation, no normalization that would lose information.
</details>

<details>
<summary>🛡️ <b>Why is residential proxy with country JP the default?</b></summary>
Apify cloud containers cannot route directly to the public internet; outbound HTTP flows through Apify proxy. Wantedly serves slightly different content based on geo, and residential JP routing keeps the requests indistinguishable from how the site is actually consumed by Japanese users.
</details>

<details>
<summary>🔍 <b>Can I scrape a single project or company URL I already have?</b></summary>
Yes. Use the <code>startUrls</code> input. Paste any project URL (<code>https://www.wantedly.com/projects/{id}</code>) or company URL (<code>https://www.wantedly.com/companies/{slug}</code>). Listing URLs with filters in the query string also work and replay the filters exactly.
</details>

<details>
<summary>💰 <b>Why is there no salary field?</b></summary>
Wantedly intentionally de-emphasises salary in favour of mission and culture; many projects simply do not list a band. The Actor returns the long description, mission, culture, and duties prose so downstream NLP can extract bands when they are present in the narrative. A separate compensation source (Levels.fyi, Glassdoor) is the better match if salary is the primary signal.
</details>

***

### 🔌 Integrate with any app

- [**Zapier**](https://apify.com/integrations/zapier) - hundreds of no-code triggers and actions
- [**Make**](https://apify.com/integrations/make) - visual automation builder
- [**n8n**](https://apify.com/integrations/n8n) - self-hosted workflow automation
- [**Slack**](https://apify.com/integrations/slack) - push new Wantedly listings into a channel
- [**Google Sheets**](https://apify.com/integrations/google-drive) - auto-append daily runs to a spreadsheet
- [**Airbyte**](https://apify.com/integrations/airbyte) - pipe results into your data warehouse

***

### 🔗 Recommended Actors

- [**💼 LinkedIn Jobs Scraper**](https://apify.com/parseforge/linkedin-jobs-scraper) - postings from LinkedIn's job board with company and salary signals
- [**🟦 Indeed Scraper**](https://apify.com/parseforge/indeed-scraper) - the world's largest job search engine, with full filters
- [**🦄 Wellfound Jobs Scraper**](https://apify.com/parseforge/wellfound-jobs-scraper) - global startup job board with company stage and funding signals
- [**📊 Levels Fyi Scraper**](https://apify.com/parseforge/levels-fyi-scraper) - real-money tech compensation data to complement Wantedly's culture-first listings
- [**🌍 Adzuna Job Aggregator Scraper**](https://apify.com/parseforge/adzuna-scraper) - Adzuna's 19-country meta-search with real and predicted salaries

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more job, salary, and labour-market scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA)

***

> **Disclaimer.** This Actor scrapes only public Wantedly project and company pages. It does not bypass authentication, paywalls, or technical protection measures. You are responsible for using the resulting data in compliance with Wantedly's Terms of Service and your local laws (including GDPR, CCPA, APPI, and copyright). ParseForge does not affiliate with, endorse, or claim any partnership with Wantedly.

# Actor input Schema

## `startUrls` (type: `array`):

Optional. Direct Wantedly project listing or detail URLs (e.g. https://www.wantedly.com/projects?occupation\_types\[]=jp\_\_web\_engineer or https://www.wantedly.com/projects/1234567 or https://www.wantedly.com/companies/{slug}). When provided, these are used instead of the occupation / query fields below.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `occupationTypes` (type: `array`):

Filter by one or more Wantedly occupation slugs (multi-select). Categories ending in '(all)' return everything in that family; the others are specific roles. Leave empty to scrape all projects across all occupations.

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

Optional free-text keyword (e.g. 'python', 'machine learning', 'デザイナー'). Combined with the occupation filter if both are set.

## `sortBy` (type: `string`):

How results are ordered on the listing page. 'Recommended' is Wantedly's default mixed ranking; 'Popular' surfaces high-engagement projects; 'Newest' returns most recently posted first.

## `includeJobDetails` (type: `boolean`):

When enabled, each project is fetched individually to capture the full mission ('なぜやるのか'), culture ('どうやっているのか'), job duties ('こんなことやります') and the complete JobPosting description. Recommended.

## `includeCompanyDetails` (type: `boolean`):

When enabled, each unique hiring company page is fetched to capture founder name, founding date, employee headcount, address, slogan and company description.

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

Apify proxy configuration. Defaults to RESIDENTIAL with country=JP - required from Apify cloud containers since direct/datacenter routes are blocked or rate-limited by Wantedly.

## Actor input object example

```json
{
  "maxItems": 10,
  "sortBy": "mixed",
  "includeJobDetails": true,
  "includeCompanyDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/wantedly-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 = {
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/wantedly-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/wantedly-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wantedly Japan Tech Jobs & Startup Culture Scraper",
        "description": "Japanese tech-startup job listings from wantedly.com with company mission, culture and team narrative sections, founder, employee count, founding date, address and structured JobPosting data parsed from the public project + company pages.",
        "version": "0.1",
        "x-build-id": "2r30HhPJPck4N85v1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~wantedly-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-wantedly-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~wantedly-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-wantedly-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~wantedly-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-wantedly-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional. Direct Wantedly project listing or detail URLs (e.g. https://www.wantedly.com/projects?occupation_types[]=jp__web_engineer or https://www.wantedly.com/projects/1234567 or https://www.wantedly.com/companies/{slug}). When provided, these are used instead of the occupation / query fields below.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "occupationTypes": {
                        "title": "Occupations",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter by one or more Wantedly occupation slugs (multi-select). Categories ending in '(all)' return everything in that family; the others are specific roles. Leave empty to scrape all projects across all occupations.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "jp__engineering",
                                "jp__mobile_engineer",
                                "jp__web_engineer",
                                "jp__infra_engineer",
                                "jp__systems_engineer",
                                "jp__qa_engineer",
                                "jp__data_scientist",
                                "jp__design_and_art",
                                "jp__ui_ux_designer",
                                "jp__graphic_designer",
                                "jp__art_director",
                                "jp__creative_director",
                                "jp__photographer",
                                "jp__video_creator",
                                "jp__illustrator",
                                "jp__pm_and_web_direction",
                                "jp__product_manager",
                                "jp__project_manager",
                                "jp__web_director",
                                "jp__editing_and_writing",
                                "jp__writer",
                                "jp__copywriter",
                                "jp__editor",
                                "jp__translator",
                                "jp__marketing",
                                "jp__web_marketing",
                                "jp__public_relations",
                                "jp__sales",
                                "jp__corporate_sales",
                                "jp__private_sales",
                                "jp__business_development",
                                "jp__customer_success_and_support",
                                "jp__customer_success",
                                "jp__customer_support",
                                "jp__corporate",
                                "jp__human_resources",
                                "jp__finance",
                                "jp__legal_affairs",
                                "jp__corporate_planning",
                                "jp__secretary",
                                "jp__admin_staff",
                                "jp__consulting",
                                "jp__business_consultant",
                                "jp__hr_consultant",
                                "jp__it_consultant",
                                "jp__marketing_consultant",
                                "jp__career_consultant",
                                "jp__medical",
                                "jp__physician",
                                "jp__dentist",
                                "jp__nurse",
                                "jp__pharmacist",
                                "jp__others"
                            ],
                            "enumTitles": [
                                "Engineering (all) (エンジニアリング)",
                                "Mobile Engineer (モバイルエンジニア)",
                                "Web Engineer (Webエンジニア)",
                                "Infrastructure Engineer (インフラエンジニア)",
                                "Systems Engineer (システムエンジニア)",
                                "QA Engineer (QAエンジニア)",
                                "Data Scientist (データサイエンティスト)",
                                "Design & Art (all) (デザイン・アート)",
                                "UI/UX Designer (UI/UXデザイナー)",
                                "Graphic Designer (グラフィックデザイナー)",
                                "Art Director (アートディレクター)",
                                "Creative Director (クリエイティブディレクター)",
                                "Photographer (フォトグラファー)",
                                "Video Creator (動画クリエイター)",
                                "Illustrator (イラストレーター)",
                                "PM & Web Direction (all) (PM・Webディレクション)",
                                "Product Manager (プロダクトマネージャー)",
                                "Project Manager (プロジェクトマネージャー)",
                                "Web Director (Webディレクター)",
                                "Editing & Writing (all) (編集・ライティング)",
                                "Writer (ライター)",
                                "Copywriter (コピーライター)",
                                "Editor (編集者)",
                                "Translator (翻訳)",
                                "Marketing & PR (all) (マーケティング・PR)",
                                "Web Marketing (Webマーケティング)",
                                "Public Relations (広報)",
                                "Sales & Business Development (all) (セールス・事業開発)",
                                "Corporate Sales (法人営業)",
                                "Individual Sales (個人営業)",
                                "Business Development (事業開発)",
                                "Customer Success & Support (all) (カスタマーサクセス・サポート)",
                                "Customer Success (カスタマーサクセス)",
                                "Customer Support (カスタマーサポート)",
                                "Corporate (all) (コーポレート系)",
                                "Human Resources (人事)",
                                "Finance & Accounting (経理・財務)",
                                "Legal (法務)",
                                "Corporate Planning (経営企画)",
                                "Secretary (秘書)",
                                "Admin Staff (事務)",
                                "Consulting (all) (コンサルティング)",
                                "Business Consultant (経営コンサルタント)",
                                "HR Consultant (人事コンサルタント)",
                                "IT Consultant (ITコンサルタント)",
                                "Marketing Consultant (マーケティングコンサルタント)",
                                "Career Consultant (キャリアコンサルタント)",
                                "Medical (all) (メディカル系)",
                                "Physician (医師)",
                                "Dentist (歯科医師)",
                                "Nurse (看護師)",
                                "Pharmacist (薬剤師)",
                                "Other (その他)"
                            ]
                        }
                    },
                    "searchQuery": {
                        "title": "Keyword Query",
                        "type": "string",
                        "description": "Optional free-text keyword (e.g. 'python', 'machine learning', 'デザイナー'). Combined with the occupation filter if both are set."
                    },
                    "sortBy": {
                        "title": "Sort Order",
                        "enum": [
                            "mixed",
                            "popular",
                            "recent"
                        ],
                        "type": "string",
                        "description": "How results are ordered on the listing page. 'Recommended' is Wantedly's default mixed ranking; 'Popular' surfaces high-engagement projects; 'Newest' returns most recently posted first.",
                        "default": "mixed"
                    },
                    "includeJobDetails": {
                        "title": "Fetch full project pages",
                        "type": "boolean",
                        "description": "When enabled, each project is fetched individually to capture the full mission ('なぜやるのか'), culture ('どうやっているのか'), job duties ('こんなことやります') and the complete JobPosting description. Recommended.",
                        "default": true
                    },
                    "includeCompanyDetails": {
                        "title": "Fetch company pages",
                        "type": "boolean",
                        "description": "When enabled, each unique hiring company page is fetched to capture founder name, founding date, employee headcount, address, slogan and company description.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Defaults to RESIDENTIAL with country=JP - required from Apify cloud containers since direct/datacenter routes are blocked or rate-limited by Wantedly.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
