# Kyujin Box Scraper: Japan Job Listings & Leads (`getascraper/kyujinbox-scraper`) Actor

Scrape Kyujin Box (求人ボックス) jobs at scale. Extract normalized JPY salary bands, train stations, and descriptions with zero DOM selector fragility. Direct Cheerio HTTP crawling with zero browser overhead. Best-value Japan recruitment lead generation. $1.99 per 1,000 results.

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

## Pricing

from $1.99 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### Kyujin Box Scraper: Japan Job Listings and Salary Data

**Pull live, structured job listings from Kyujin Box in seconds.** Get position titles, salaries, required skills, nearest transit stations, walk times, and full descriptions from Japan's largest job search aggregator.

---

### What can you do with it?

- **Source direct recruiting leads.** Discover which companies are actively hiring in Tokyo, Osaka, Yokohama, or any other prefecture.
- **Deduplicate job feeds.** Feed your own career portal, candidate counseling board, or dashboard with clean, normalized Japanese listings and direct apply links.
- **Benchmark compensation.** Track hourly, monthly, or annual salary bounds in JPY across specific roles and prefectures.
- **Analyze transit proximity.** Extract nearest train stations and walking distances in minutes to map workplace convenience.
- **Feed talent research.** Plug clean, structured job rows directly into spreadsheets, BI dashboards, or RAG models.

---

### How to use it

1. Create a free Apify account.
2. Open the **Kyujin Box Scraper** in the Apify Store.
3. Enter your Japanese search keyword (e.g. `エンジニア`, `介護`).
4. Pick the target prefecture or city (e.g., `東京都`, `大阪府`).
5. Click **Start** and download the dataset as JSON, CSV, or Excel.

---

### Input

| Field                | Default      | Description                                                                      |
| -------------------- | ------------ | -------------------------------------------------------------------------------- |
| `keyword`            | `エンジニア` | Search role, category, or title keyword in Japanese (e.g. `介護`, `エンジニア`). |
| `location`           | `東京都`     | Target prefecture, city, or district in Japanese (e.g. `東京都`, `大阪府`).      |
| `employmentType`     | `all`        | Filter by contract type (正社員, パート, 契約社員, 派遣).                        |
| `salaryMin`          | `0`          | Minimum JPY salary threshold filter (e.g. `3000000` for 3M JPY).                 |
| `maxItems`           | `100`        | Maximum number of job records to extract per run.                                |
| `includeDescription` | `true`       | Whether to visit and scrape detailed pages for full work descriptions.           |

---

### Output

Each row represents a single job listing from Kyujin Box.

```json
{
    "jobId": "a223caa59766e4e94ee8b93e6011855d",
    "title": "研修生募集「ものづくりエンジニア」／年休123日／首都圏募集",
    "company": "株式会社BREXA Technology",
    "url": "https://xn--pckua2a7gp15o89zb.com/jb/a223caa59766e4e94ee8b93e6011855d",
    "location": "東京都",
    "station": "新宿駅",
    "walkMinutes": 8,
    "employmentType": "正社員",
    "salaryRaw": "月給20万5,000円～ / 賞与あり",
    "salaryMin": 205000,
    "salaryMax": 205000,
    "salaryPeriod": "monthly",
    "source": "マイナビ転職.",
    "description": "自動車、航空宇宙、ロボット、半導体など、世の中の役に立つ話題の製品づくりを支えるお仕事です ・マニュアルを見ながらの製品や装置の組み立て ・決められた仕様通りかを確認する検査...",
    "requirements": "■必須要件 機械や電気などの「ものづくり」に少しでも興味や関心がある方 ■歓迎要件 ・これまでの経験よりもこれからのポテンシャルを重視した採用です...",
    "postedDate": "1日前",
    "scrapedAt": "2026-06-07T10:33:32.122Z"
}
````

#### Field reference

| Field            | Description                                               |
| ---------------- | --------------------------------------------------------- |
| `jobId`          | Unique hash identifier of the listing.                    |
| `title`          | Position vacancy title.                                   |
| `company`        | Name of the hiring company.                               |
| `url`            | Direct detail link on Kyujin Box.                         |
| `location`       | Workplace prefecture or city.                             |
| `station`        | Nearest railway or train station.                         |
| `walkMinutes`    | Walking distance from the nearest station in minutes.     |
| `employmentType` | Contract classification (e.g. 正社員, アルバイト).        |
| `salaryRaw`      | Raw salary text from the source.                          |
| `salaryMin`      | Standardized minimum salary value in JPY.                 |
| `salaryMax`      | Standardized maximum salary value in JPY.                 |
| `salaryPeriod`   | Salary period frequency (hourly, monthly, annual, daily). |
| `source`         | Original job board source name (e.g. doda, Mynavi).       |
| `description`    | Clean plain-text work description.                        |
| `requirements`   | Clean plain-text qualifications.                          |
| `postedDate`     | Publication or relative freshness date (e.g. `1日前`).    |
| `scrapedAt`      | ISO timestamp of when the listing was saved.              |

***

### Cost

Pricing is per row saved to the dataset. Empty runs cost nothing. There is no fixed fee.

Kyujin Box's permissive structure allows direct, lightweight HTTP requests without expensive residential proxy bandwidth fees, enabling excellent cost-to-result metrics. A single 100-card run typically saves 100 rows. You can monitor the row count live in the run console.

***

### Tips

- **Run multiple queries in one go.** Group your competitor or target skill keywords into separate runs.
- **Refine with transit parameters.** Use the extracted train station and walk minutes to filter for highly accessible workplace placements.
- **Schedule it.** Use Apify Schedules to run daily or weekly and watch for new postings entering your target prefecture.

***

### Disclaimers & Support

- **Disclaimer:** This Actor retrieves publicly available job postings on Kyujin Box. Make sure your usage complies with Kyujin Box's terms of service and applicable laws.
- **Support:** Open an issue from the Actor page in the Apify Console for bug reports or feature requests.

# Actor input Schema

## `url` (type: `string`):

Optional direct Kyujin Box search URL to crawl (e.g. 'https://求人ボックス.com/東京都での仕事'). If provided, it overrides keyword and location filters.

## `keyword` (type: `string`):

Search keyword for roles, titles, or skills in Japanese (e.g. 'エンジニア', '事務', '介護').

## `location` (type: `string`):

Filter by Japanese prefecture, city, or district name (e.g., '東京都', '大阪府', '神奈川県').

## `employmentType` (type: `string`):

Filter by Japanese employment contract type.

## `salaryMin` (type: `integer`):

Minimum salary threshold (in Japanese Yen JPY, e.g. 3000000).

## `includeDescription` (type: `boolean`):

If enabled, visits each job's detailed page to extract full descriptions. Otherwise, performs high-speed list-only sweeps.

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

Maximum number of job postings to scrape in total.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel requests.

## `maxRequestRetries` (type: `integer`):

Number of times a request will be retried if it fails.

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

Proxy settings for crawling. Kyujin Box has an open posture, so proxies are optional.

## Actor input object example

```json
{
  "keyword": "エンジニア",
  "location": "東京都",
  "employmentType": "all",
  "salaryMin": 0,
  "includeDescription": true,
  "maxItems": 50,
  "maxConcurrency": 8,
  "maxRequestRetries": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "url": "",
    "keyword": "エンジニア",
    "location": "東京都",
    "employmentType": "all",
    "salaryMin": 0,
    "includeDescription": true,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/kyujinbox-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 = {
    "url": "",
    "keyword": "エンジニア",
    "location": "東京都",
    "employmentType": "all",
    "salaryMin": 0,
    "includeDescription": True,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/kyujinbox-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 '{
  "url": "",
  "keyword": "エンジニア",
  "location": "東京都",
  "employmentType": "all",
  "salaryMin": 0,
  "includeDescription": true,
  "maxItems": 50
}' |
apify call getascraper/kyujinbox-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kyujin Box Scraper: Japan Job Listings & Leads",
        "description": "Scrape Kyujin Box (求人ボックス) jobs at scale. Extract normalized JPY salary bands, train stations, and descriptions with zero DOM selector fragility. Direct Cheerio HTTP crawling with zero browser overhead. Best-value Japan recruitment lead generation. $1.99 per 1,000 results.",
        "version": "0.1",
        "x-build-id": "iT7vg8yDtRmzDLrgl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~kyujinbox-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-kyujinbox-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/getascraper~kyujinbox-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-kyujinbox-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/getascraper~kyujinbox-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-kyujinbox-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": {
                    "url": {
                        "title": "Direct Kyujin Box URL",
                        "type": "string",
                        "description": "Optional direct Kyujin Box search URL to crawl (e.g. 'https://求人ボックス.com/東京都での仕事'). If provided, it overrides keyword and location filters."
                    },
                    "keyword": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Search keyword for roles, titles, or skills in Japanese (e.g. 'エンジニア', '事務', '介護')."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Filter by Japanese prefecture, city, or district name (e.g., '東京都', '大阪府', '神奈川県')."
                    },
                    "employmentType": {
                        "title": "Employment Type",
                        "enum": [
                            "all",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5"
                        ],
                        "type": "string",
                        "description": "Filter by Japanese employment contract type.",
                        "default": "all"
                    },
                    "salaryMin": {
                        "title": "Min Salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum salary threshold (in Japanese Yen JPY, e.g. 3000000).",
                        "default": 0
                    },
                    "includeDescription": {
                        "title": "Include Full Description",
                        "type": "boolean",
                        "description": "If enabled, visits each job's detailed page to extract full descriptions. Otherwise, performs high-speed list-only sweeps.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of job postings to scrape in total.",
                        "default": 100
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of parallel requests.",
                        "default": 8
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of times a request will be retried if it fails.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for crawling. Kyujin Box has an open posture, so proxies are optional.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
