# Ekiten Japan Business Directory Scraper (`piquno/ekiten-japan-business-directory-scraper`) Actor

Scrape Japanese local businesses from Ekiten (エキテン): salons, clinics, dentists, restaurants, schools, shops and services in all 47 prefectures. Names, addresses, phone numbers, ratings, reviews, hours, prices, payment methods and websites by category, city or station. No API key needed.

- **URL**: https://apify.com/piquno/ekiten-japan-business-directory-scraper.md
- **Developed by:** [Piquno](https://apify.com/piquno) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.40 / 1,000 businesses

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

## Ekiten Japan Business Directory Scraper

Scrape local business data from **[Ekiten (エキテン byGMO)](https://www.ekiten.jp)**, Japan's largest online business directory: 5 million+ hair and beauty salons, massage and chiropractic clinics, dentists, medical clinics, restaurants and cafes, cram schools, lesson studios, shops, pet services, home services, legal and accounting offices and event venues, all with user reviews. Get names, addresses, phone numbers, ratings, review counts, opening hours, price ranges, payment methods, websites, coupons and GPS coordinates, by category, prefecture, city or station.

HTTP-only. No browser, no API key, no login. Listing pages and business pages are read as server-rendered HTML with schema.org structured data, so the fields are clean and stable.

### What you can do with it

- **B2B lead generation** – build lists of salons, clinics, dentists, restaurants or schools in any city or around any station, with phone numbers and websites (POS, payments, booking software, supplies, staffing, marketing agencies).
- **Market research** – compare density, ratings and price ranges of a business type across neighbourhoods or prefectures.
- **Location intelligence** – geocoded business points (with `includeDetails`) for mapping, catchment and site-selection analysis.
- **Data enrichment** – match Ekiten records to your CRM by name, phone or address; monitor rating changes.
- **Local apps and directories** – seed or refresh a Japanese POI database.

### How it works

1. Pick one or more **sub-genres** (4-digit Ekiten codes such as `0201` hair salons, `0210` chiropractic, `0612` dentists, `0105` izakaya, or Japanese names such as `美容室`, `整体`, `ラーメン`), or a whole **category** (14 top-level categories, 252 sub-genres in total; full list below).
2. Pick a **prefecture** (all 47 supported) and optionally a **city / ward** (`新宿区`, `横浜市西区`, or a JIS code like `13104`) or a **station** (`新宿駅`). Without a city the whole prefecture is crawled municipality by municipality.
3. Or paste your own **Start URLs** – any `https://www.ekiten.jp/gXXXX/aXXXXX/` (sub-genre × city) or `/gXXXX/stNNNN/` (sub-genre × station) listing page. Each one is paginated for you (40 businesses per page).
4. Set **Max businesses** and, if you want phone numbers, coordinates, hours, payments and websites, tick **Scrape detail pages**.

Results land in the run's dataset, one item per business, with ready-made table views for Overview, Contact & location, Hours & payments and Marketing.

### Categories

| Slug | Category | Japanese | Sub-genres | Examples |
|---|---|---|---|---|
| `relax` | Relaxation & bodycare | リラク・ボディケア | 6 | マッサージ店, 整体院, 接骨院・整骨院, 鍼灸院 |
| `beauty` | Beauty & hair salons | ビューティ・ヘアサロン | 8 | 美容室・美容院・ヘアサロン, 理容室・床屋, エステサロン, ネイルサロン |
| `school` | Cram schools & tutoring | 学習塾・予備校 | 4 | 学習塾・塾, 幼児教室, 家庭教師, 予備校 |
| `lesson` | Lessons & classes | 習い事・スクール | 29 | ダンススクール, フィットネスクラブ・スポーツジム, ゴルフスクール, スイミングスクール |
| `dental` | Dental | 歯科・矯正歯科 | 2 | 歯科・歯医者, 矯正歯科 |
| `clinic` | Clinics & healthcare | 医院・クリニック・ヘルスケア | 42 | 美容外科, 内科, 皮膚科, 小児科 |
| `food` | Restaurants & cafes | グルメ | 51 | カフェ・喫茶店, 居酒屋, レストラン, 弁当 |
| `store` | Shopping | ショッピング | 34 | 花・花屋, 印鑑・ハンコ屋, 雑貨屋, ＣＤ・ＤＶＤレンタル |
| `leisure` | Leisure & travel | お出かけ・レジャー | 26 | タクシー, ホテル・ビジネスホテル・旅館, 旅行会社, レンタカー |
| `recycle` | Second-hand & buyback | リサイクル・中古買取り | 6 | 金券ショップ・チケットショップ, 質屋, 古着, 中古ゲーム・CD・DVD |
| `pet` | Pets | ペット・動物 | 8 | ペットサロン・トリミングサロン, ペットホテル, ペットショップ, 動物病院 |
| `life` | Home & living services | 暮らし・生活・住宅 | 23 | クリーニング, 畳・障子・壁紙張り替え業者, 庭木剪定業者・お手入れ・植木屋, ハウスクリーニング |
| `professional` | Legal, tax & accounting | 士業 | 7 | 行政書士・行政書士事務所, ファイナンシャルプランナー・ファイナルシャルプランナー事務所, 社会保険労務士・社会保険労務士事務所, 司法書士・司法書士事務所 |
| `event` | Weddings, funerals & events | 冠婚葬祭 | 6 | 写真館・フォトスタジオ, 貸し会議室・イベントホール・レンタルスペース, レンタルスタジオ・貸しスタジオ, 結婚相談所 |

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `genres` | array | `["0201"]` | Sub-genre codes or Japanese names. Empty = all sub-genres of `category`. |
| `category` | string | – | One of the 14 slugs above. Used only when `genres` is empty. |
| `prefecture` | string | `tokyo` | Prefecture slug (`tokyo`, `osaka`, `kyoto`, `aichi`, `fukuoka`, `hokkaido`, …). |
| `city` | string | – | Municipality name (Japanese, partial OK) or 5-digit JIS code. |
| `station` | string | – | Station name (Japanese, partial OK) or Ekiten station id. Takes precedence over `city`. |
| `startUrls` | array | – | Ekiten listing URLs. Overrides the fields above. |
| `maxResults` | integer | `100` | Unique businesses to collect. |
| `includeDetails` | boolean | `false` | Fetch each business page (one extra request per business, same price per result). |
| `includeReviews` | boolean | `false` | Add the reviews shown on the business page; implies `includeDetails`. |
| `requestDelaySecs` | number | `1` | Pause after each request. |
| `maxConcurrency` | integer | `3` | Parallel requests. |
| `proxyConfiguration` | object | Apify residential, JP | Keep the default: Ekiten blocks most datacenter IPs and throttles single IPs. |

Example: every hair salon in Shinjuku with full details.

```json
{
  "genres": ["0201"],
  "prefecture": "tokyo",
  "city": "新宿区",
  "maxResults": 500,
  "includeDetails": true
}
```

Example: all dentists and orthodontists in Osaka Prefecture, listing data only.

```json
{
  "category": "dental",
  "prefecture": "osaka",
  "maxResults": 5000
}
```

### Output

Listing fields (always present): `shopId`, `url`, `name`, `isOfficial`, `tagline`, `rating`, `reviewCount`, `photoCount`, `genres`, `features`, `hasCoupon`, `hasOnlineBooking`, `address`, `todayHours`, `priceRange`, `priceMin`, `priceMax`, `menus`, `thumbnails`, `position`, `sourceListUrl`, plus the search context `genreCode`, `genreName`, `category`, `categoryName`, `prefecture`, `prefectureName`, `cityCode`, `cityName` (or `stationId`, `stationName`).

Detail fields (with `includeDetails`): `schemaType`, `displayName`, `nameKana`, `phone`, `postalCode`, `city`, `streetAddress`, `latitude`, `longitude`, `mapUrl`, `access`, `accessNote`, `nearestStations`, `busStops`, `hoursByDay`, `hoursNote`, `closedDaysNote`, `parking`, `parkingNote`, `reservation`, `website`, `relatedUrls`, `creditCards`, `creditCardNote`, `qrPayments`, `eMoney`, `paymentAccepted`, `coupons`, `couponCount`, `appealPoints`, `description`, `image`, `publishedAt`, `updatedAt`, and `reviews` with `includeReviews`.

Example item:

```json
{
  "shopId": "7015345",
  "url": "https://www.ekiten.jp/shop_7015345/",
  "name": "銀座マツナガ新宿野村ビル店",
  "isOfficial": true,
  "rating": 3.71,
  "reviewCount": 3,
  "genres": ["理容室・床屋", "美容室・ヘアサロン", "ネイルサロン"],
  "features": ["日祝OK", "クーポン有", "駐車場有", "カード可", "QRコード決済可", "電子マネー決済可"],
  "address": "東京都新宿区西新宿１丁目２６－２ 野村ビル 5F",
  "priceMin": 550,
  "priceMax": 9900,
  "genreName": "美容室・美容院・ヘアサロン",
  "cityName": "新宿区",
  "phone": "03-6279-4163",
  "postalCode": "163-0590",
  "latitude": 35.69300318087,
  "longitude": 139.69533311349,
  "nearestStations": ["西新宿駅 から260m （徒歩4分）", "都庁前駅 から360m （徒歩5分）"],
  "hoursByDay": {"mon": ["10:00-20:30"], "tue": ["10:00-20:30"], "sat": ["9:00-18:30"], "sun": ["9:00-18:30"], "hol": ["9:00-18:30"]},
  "closedDaysNote": "年中無休",
  "website": "https://graceful-hair.co.jp/shop02/",
  "creditCards": ["VISA", "Mastercard", "JCB", "amex", "diners", "銀聯"],
  "qrPayments": ["LINE Pay"],
  "couponCount": 3,
  "updatedAt": "2025-08-13"
}
```

Export as JSON, CSV, Excel or XML from the dataset, or pull it through the Apify API.

### Pricing

Pay per result: you are charged only for businesses actually saved to the dataset. A run with `includeDetails` makes about twice the requests but costs the same per business. Start with a small `maxResults` to check the fields you need, then scale up.

### Tips

- A prefecture-wide crawl of a big sub-genre is large: Tokyo alone lists about 10,000 hair salons and Hokkaido 3,000 izakaya in Sapporo's central ward. Use `city`, `station` or `maxResults` to size the run.
- `rating` is Ekiten's own score; businesses without reviews still carry a default score around 3.0, so filter on `reviewCount` when you want rated businesses.
- Proxy: the default is Apify residential proxies in Japan, which pass Ekiten cleanly (a 60-business run with details needs no retries at all). Datacenter proxies are cheaper but Ekiten blocks most datacenter IPs with HTTP 403 and throttles the rest with HTTP 202; the Actor copes (it switches to a browser-impersonating client, keeps a pool of proxy sessions and drops blocked or throttled IPs) but runs get slow and a few businesses may end up without detail fields. If the log reports many throttled requests, lower `maxConcurrency` or raise `requestDelaySecs`.
- `isOfficial` marks pages managed by the business itself; those have the richest detail fields.
- Prices are in Japanese yen. `hoursByDay` uses `mon`…`sun` plus `hol` for public holidays; a day that is missing is a closed day.

### Sub-genre codes

**Relaxation & bodycare (リラク・ボディケア, `relax`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0204` | マッサージ店 | `0210` | 整体院 |
| `0208` | 接骨院・整骨院 | `0212` | 鍼灸院 |
| `0211` | カイロプラクティック | `0213` | リラクゼーションマッサージサロン |

**Beauty & hair salons (ビューティ・ヘアサロン, `beauty`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0201` | 美容室・美容院・ヘアサロン | `0202` | 理容室・床屋 |
| `0203` | エステサロン | `0209` | ネイルサロン |
| `0216` | フェイシャルエステサロン | `0214` | 脱毛サロン |
| `0215` | まつげサロン | `0217` | セルフホワイトニングサロン |

**Cram schools & tutoring (学習塾・予備校, `school`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0408` | 学習塾・塾 | `0415` | 幼児教室 |
| `0413` | 家庭教師 | `0406` | 予備校 |

**Lessons & classes (習い事・スクール, `lesson`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0403` | ダンススクール | `0717` | フィットネスクラブ・スポーツジム |
| `0421` | ゴルフスクール | `0423` | スイミングスクール |
| `0427` | 武道教室・格闘技ジム・格闘技道場 | `0428` | 空手教室・空手道場 |
| `0432` | 柔道場・柔道教室 | `0420` | テニススクール |
| `0434` | 少林寺拳法道場・少林寺拳法教室 | `0433` | ボクシングジム |
| `0429` | 剣道場・剣道教室 | `0430` | 弓道場・弓道教室 |
| `0431` | 相撲教室・相撲部屋 | `0414` | 書道教室・習字教室 |
| `0412` | フラワーアレンジメント教室・生け花スクール | `0411` | 音楽教室 |
| `0424` | ピアノ教室 | `0435` | 手芸教室 |
| `0426` | 着付け教室 | `0437` | 茶道教室 |
| `0436` | 絵画教室 | `0410` | パソコン教室 |
| `0425` | プログラミングスクール | `0409` | 英会話教室 |
| `0405` | 料理教室 | `0418` | 外国語スクール |
| `0417` | 自動車教習所 | `0416` | 専門学校・専修学校 |
| `0419` | 日本語学校 |  |  |

**Dental (歯科・矯正歯科, `dental`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0612` | 歯科・歯医者 | `0613` | 矯正歯科 |

**Clinics & healthcare (医院・クリニック・ヘルスケア, `clinic`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0624` | 美容外科 | `0602` | 内科 |
| `0605` | 皮膚科 | `0604` | 小児科 |
| `0603` | 外科 | `0606` | 眼科 |
| `0607` | 耳鼻咽喉科 | `0610` | 産婦人科 |
| `0609` | 精神科 | `0608` | 心療内科 |
| `0618` | 整形外科 | `0629` | リハビリテーション科 |
| `0621` | アレルギー科 | `0643` | 消化器内科 |
| `0623` | 形成外科 | `0633` | 呼吸器内科 |
| `0635` | 糖尿病科 | `0632` | 泌尿器科 |
| `0634` | 循環器内科 | `0636` | 腎臓内科 |
| `0628` | 肛門科 | `0646` | 総合診療科 |
| `0642` | 麻酔科 | `0639` | 内分泌内科 |
| `0622` | リウマチ科 | `0638` | 代謝内科 |
| `0648` | 新生児科 | `0644` | 消化器外科 |
| `0647` | 乳腺甲状腺外科 | `0631` | 神経内科 |
| `0645` | 膠原病リウマチ内科 | `0630` | 放射線科 |
| `0627` | 心臓血管外科 | `0641` | 血液内科 |
| `0625` | 脳神経外科 | `0637` | 血液透析科 |
| `0626` | 呼吸器外科 | `0640` | 救急医学科 |
| `0307` | 薬局・ドラッグストア | `0615` | デイケア・デイサービス・老人ホーム |
| `0616` | 訪問介護 | `0620` | 人間ドック・検診 |

**Restaurants & cafes (グルメ, `food`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0110` | カフェ・喫茶店 | `0105` | 居酒屋 |
| `0104` | レストラン | `0112` | 弁当 |
| `0129` | ファミレス | `0106` | バー |
| `0149` | 食堂 | `0146` | パン屋 |
| `0153` | スイーツ店 | `0101` | 和食 |
| `0115` | 洋食店 | `0102` | 中華料理屋 |
| `0103` | イタリアン・イタリア料理 | `0114` | ファーストフード |
| `0117` | 韓国料理店 | `0116` | フレンチ・フランス料理 |
| `0108` | ラーメン屋 | `0123` | そば・蕎麦屋 |
| `0124` | うどん屋 | `0145` | ケーキ屋 |
| `0151` | 焼肉屋 | `0152` | ホルモン屋 |
| `0142` | 焼き鳥屋 | `0109` | 寿司・鮨屋 |
| `0121` | 日本料理店 | `0139` | うなぎ屋 |
| `0127` | お好み焼き屋 | `0128` | もんじゃ焼き屋 |
| `0131` | カレー | `0140` | とんかつ屋 |
| `0126` | ピザ | `0125` | パスタ |
| `0157` | 肉料理屋 | `0137` | ステーキ |
| `0148` | すき焼き屋 | `0138` | ハンバーグ |
| `0158` | 鉄板焼き屋 | `0156` | 魚・海鮮料理店 |
| `0144` | 天ぷら屋 | `0141` | 串揚げ屋 |
| `0133` | 餃子・ぎょうざ屋 | `0130` | ハンバーガー |
| `0143` | しゃぶしゃぶ屋 | `0136` | もつ鍋屋 |
| `0154` | 和菓子 | `0155` | 洋菓子店 |
| `0163` | 麺屋 | `0160` | 割烹・小料理店 |
| `0159` | 懐石・会席料理店 | `0162` | 京料理店 |
| `0161` | 精進料理店 |  |  |

**Shopping (ショッピング, `store`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0306` | 花・花屋 | `0337` | 印鑑・ハンコ屋 |
| `0322` | 雑貨屋 | `0327` | ＣＤ・ＤＶＤレンタル |
| `0328` | ＣＤ・ＤＶＤ販売 | `0331` | 文房具・文具店 |
| `0305` | 書店・本屋 | `0332` | 玩具・おもちゃ屋 |
| `0339` | スポーツショップ・ゴルフショップ | `0321` | 家具屋 |
| `0302` | インテリアショップ | `0316` | ホームセンター |
| `0333` | １００円均一ショップ | `0325` | カメラ販売店 |
| `0330` | 楽器店 | `0340` | 釣具屋 |
| `0326` | メガネ店 | `0301` | 服・洋服 |
| `0318` | 靴・シューズ | `0334` | コスメ・化粧品店 |
| `0338` | アクセサリー・ジュエリー | `0320` | 時計店 |
| `0319` | バッグ・鞄 | `0303` | コンタクトレンズ店 |
| `0304` | スーパーマーケット・食品・食材 | `0313` | コンビニ |
| `0315` | 酒屋 | `0329` | 自転車 |
| `0335` | 車・カーディーラー | `0336` | バイク・オートバイ |
| `0323` | 家電 | `0308` | 携帯ショップ |
| `0324` | パソコン販売店 | `0314` | デパート・百貨店 |

**Leisure & travel (お出かけ・レジャー, `leisure`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0723` | タクシー | `0701` | ホテル・ビジネスホテル・旅館 |
| `0703` | 旅行会社 | `0704` | レンタカー |
| `0721` | バス | `0729` | 道の駅 |
| `0727` | ゲームセンター・アミューズメントパーク | `0716` | カラオケボックス |
| `0713` | ボウリング場 | `0718` | スポーツ施設 |
| `0724` | ゴルフ場 | `0725` | プール |
| `0705` | 遊園地・テーマパーク | `0728` | キャンプ場・バーベキュー |
| `0731` | サバゲー・サバイバルゲーム | `0719` | 銭湯・スーパー銭湯 |
| `0720` | サウナ | `0709` | 博物館・美術館 |
| `0712` | 映画館 | `0715` | ネットカフェ |
| `0714` | マンガ喫茶 | `0730` | 公園・庭園 |
| `0707` | 植物園 | `0708` | 水族館 |
| `0706` | 動物園 | `0722` | 劇場 |

**Second-hand & buyback (リサイクル・中古買取り, `recycle`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0309` | 金券ショップ・チケットショップ | `0541` | 質屋 |
| `0317` | 古着 | `0540` | 中古ゲーム・CD・DVD |
| `0539` | 古本 | `0521` | リサイクルショップ |

**Pets (ペット・動物, `pet`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0538` | ペットサロン・トリミングサロン | `0537` | ペットホテル |
| `0311` | ペットショップ | `0614` | 動物病院 |
| `0555` | ペット火葬・葬儀・霊園 | `0164` | 猫カフェ |
| `0165` | 犬カフェ・ドッグカフェ | `0166` | 動物カフェ・アニマルカフェ |

**Home & living services (暮らし・生活・住宅, `life`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0505` | クリーニング | `0533` | 畳・障子・壁紙張り替え業者 |
| `0529` | 庭木剪定業者・お手入れ・植木屋 | `0518` | ハウスクリーニング |
| `0530` | 便利屋・代行サービス | `0532` | 家電パソコン修理 |
| `0536` | 託児所・保育サービス | `0524` | ベビーシッター |
| `0523` | 家事代行・家政婦 | `0528` | 害虫・害獣駆除業者 |
| `0531` | トイレつまり・水漏れ修理・蛇口修理業者 | `0535` | 鍵交換・鍵修理業者 |
| `0545` | 片づけ・遺品整理業者 | `0503` | 住宅リフォーム・リノベーション |
| `0502` | 不動産売買 | `0511` | 賃貸不動産 |
| `0513` | 銀行・金融 | `0542` | 宅配便・バイク便・引越し業者 |
| `0711` | 図書館 | `0543` | 倉庫・トランクルーム |
| `0546` | 占い | `0547` | 心理カウンセリング |
| `0556` | 探偵事務所・興信所 |  |  |

**Legal, tax & accounting (士業, `professional`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0549` | 行政書士・行政書士事務所 | `0554` | ファイナンシャルプランナー・ファイナルシャルプランナー事務所 |
| `0553` | 社会保険労務士・社会保険労務士事務所 | `0550` | 司法書士・司法書士事務所 |
| `0552` | 税理士・税理士事務所 | `0548` | 弁護士・弁護士事務所 |
| `0551` | 公認会計士・公認会計士事務所 |  |  |

**Weddings, funerals & events (冠婚葬祭, `event`)**

| Code | Sub-genre | Code | Sub-genre |
|---|---|---|---|
| `0510` | 写真館・フォトスタジオ | `0522` | 貸し会議室・イベントホール・レンタルスペース |
| `0544` | レンタルスタジオ・貸しスタジオ | `0517` | 結婚相談所 |
| `0508` | 結婚式場 | `0509` | 葬儀・葬式 |

### Related scrapers

Looking for other Japanese business data? See the HotPepper Gourmet, Tabelog, Retty, Gurunavi, SUUMO, Jalan and Rakuten Travel scrapers by the same author.

### Legal

This Actor collects publicly available business information. You are responsible for using the data in line with Ekiten's terms and applicable law, including Japan's Act on the Protection of Personal Information where relevant. Review texts are user-generated content; use `includeReviews` accordingly.

# Actor input Schema

## `genres` (type: `array`):

Ekiten sub-genres to crawl, as 4-digit codes (e.g. 0201 = 美容室・ヘアサロン hair salons, 0210 = 整体院, 0612 = 歯科, 0105 = 居酒屋, 0602 = 内科) or Japanese names (partial matches are fine, e.g. 美容室, 整体, ラーメン). Leave empty to crawl every sub-genre of the Category below. The full list of 252 codes is in the README.

## `category` (type: `string`):

One of Ekiten's 14 top-level categories. Used only when Sub-genres is empty: every sub-genre of the category is crawled.

## `prefecture` (type: `string`):

Which prefecture to crawl. Ignored when Start URLs are given.

## `city` (type: `string`):

Optional. Restrict to one municipality inside the prefecture, by Japanese name (e.g. 新宿区, 横浜市西区, 札幌市) or 5-digit JIS code (e.g. 13104). Partial name matches are fine and may select several municipalities.

## `station` (type: `string`):

Optional. Instead of a city, crawl businesses listed near one station, by Japanese name (e.g. 新宿駅, 渋谷) or Ekiten station id. Takes precedence over the city filter.

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

Optional. Your own Ekiten listing URLs, e.g. https://www.ekiten.jp/g0201/a13104/ (sub-genre × city) or https://www.ekiten.jp/g0105/st5569/ (sub-genre × station). Each is paginated automatically. Overrides the fields above.

## `maxResults` (type: `integer`):

Stop after this many unique businesses. Each business is one dataset item and one billable result.

## `includeDetails` (type: `boolean`):

Also open every business page for phone number, postal code, GPS coordinates, weekly hours, closed days, website, payment methods, parking, coupons, menus and more. One extra request per business, same price per result.

## `includeReviews` (type: `boolean`):

Add the reviews shown on the business page (date, rating, author nickname, text; typically the 2-3 most recent). Turns on detail-page scraping.

## `requestDelaySecs` (type: `number`):

Pause after each successful request. Ekiten answers HTTP 202 (empty page) when one IP or session goes too fast; those are retried with backoff automatically.

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

Parallel requests. 3 is a safe default with Apify Proxy.

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

Apify residential proxies in Japan (the default) pass Ekiten cleanly with no retries. Datacenter proxies also work but Ekiten blocks most datacenter IPs (HTTP 403), so runs get slow and a few businesses may miss detail data.

## Actor input object example

```json
{
  "genres": [
    "0201"
  ],
  "category": "",
  "prefecture": "tokyo",
  "city": "新宿区",
  "startUrls": [],
  "maxResults": 100,
  "includeDetails": false,
  "includeReviews": false,
  "requestDelaySecs": 1,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "JP"
  }
}
```

# Actor output Schema

## `businesses` (type: `string`):

Business records from Ekiten. Listing fields are always present; detail fields are filled when includeDetails is true.

# 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 = {
    "genres": [
        "0201"
    ],
    "city": "新宿区",
    "startUrls": [],
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "JP"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piquno/ekiten-japan-business-directory-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 = {
    "genres": ["0201"],
    "city": "新宿区",
    "startUrls": [],
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "JP",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("piquno/ekiten-japan-business-directory-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 '{
  "genres": [
    "0201"
  ],
  "city": "新宿区",
  "startUrls": [],
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "JP"
  }
}' |
apify call piquno/ekiten-japan-business-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piquno/ekiten-japan-business-directory-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/QFpHEQrZfX1f9peWf/builds/BRxLN2KwkPYfxtEYu/openapi.json
