# HotPepper Beauty Japan Salon Scraper (`piquno/hotpepper-beauty-japan-salon-scraper`) Actor

Scrape hair, nail, eyelash, esthetic and relaxation salons from HotPepper Beauty (beauty.hotpepper.jp) by genre, region and area. Get phone, address, GPS, rating, reviews, hours, payment methods, staff and seat counts, prices, coupons and customer demographics. No browser, no login.

- **URL**: https://apify.com/piquno/hotpepper-beauty-japan-salon-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 salons

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

## HotPepper Beauty Japan Salon Scraper

Scrape salon data from **[HotPepper Beauty (ホットペッパービューティー)](https://beauty.hotpepper.jp)**, Japan's largest salon booking site by Recruit: hair salons, nail and eyelash salons, esthetic salons and relaxation / massage salons in every region of Japan. Get salon names, phone numbers, addresses, GPS coordinates, ratings and review counts, opening hours, closed days, payment methods, staff and seat counts, cut prices and price ranges, coupons, websites, feature tags and even the salon's customer mix by gender and age.

HTTP-only. No browser, no API key, no login. Listing pages and salon 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** – salons are small businesses that buy POS and booking software, payment terminals, supplies, staffing and marketing; every record has a phone number and most have an address, coordinates and staff count.
- **Market research** – compare salon density, prices, ratings and coupon strategies across areas, or track a competitor's coupons and reviews over time.
- **Location intelligence** – geocoded salons for catchment and site-selection analysis.
- **Recruiting and franchising** – staff counts, seat counts and customer demographics per salon.
- **Data enrichment** – match HotPepper records to your CRM by name, phone or address.

### How it works

1. Pick a **genre**: `hair` (美容院・美容室・ヘアサロン), `nail` (ネイル・まつげ, nail and eyelash), `esthe` (エステ) or `relax` (リラクゼーション・マッサージ).
2. Pick a **region** and optionally an **area** inside it, by Japanese name (`新宿`, `渋谷`, `横浜`, `梅田`, `名駅`, `札幌`…; partial matches are fine) or by code (`macAA`). Leave the area empty to crawl the whole region, area by area. A **sub-area** (`高田馬場`, `西口`, or `sacX001`) narrows further.
3. Or paste your own **Start URLs**: any HotPepper Beauty listing page such as `https://beauty.hotpepper.jp/svcSA/macAA/salon/`, `https://beauty.hotpepper.jp/nail/svcSB/macBA/salon/` or a sub-area / `PNn.html` page. Each is paginated for you (20 salons per page).
4. Set **Max salons** and, if you want phone numbers, coordinates, hours, payment methods, all coupons and demographics, tick **Scrape salon pages**.

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

### Genres

| Slug | Japanese | What it covers | Salon page |
|---|---|---|---|
| `hair` | 美容院・美容室・ヘアサロン | Hair salons and barbers | `beauty.hotpepper.jp/slnH…/` |
| `nail` | ネイル・まつげサロン | Nail salons and eyelash extension salons | `beauty.hotpepper.jp/kr/slnH…/` |
| `esthe` | エステサロン | Esthetic salons (facials, body, hair removal, bridal) | `beauty.hotpepper.jp/kr/slnH…/` |
| `relax` | リラクゼーション・マッサージサロン | Relaxation, massage, head spa, reflexology | `beauty.hotpepper.jp/kr/slnH…/` |

### Regions

| Slug | Japanese | Covers | Hair areas |
|---|---|---|---|
| `kanto` | 関東 | Kanto (Tokyo, Kanagawa, Saitama, Chiba, Ibaraki, Tochigi, Gunma) | 43 |
| `kansai` | 関西 | Kansai (Osaka, Kyoto, Hyogo, Nara, Shiga, Wakayama) | 21 |
| `tokai` | 東海 | Tokai (Aichi, Gifu, Shizuoka, Mie) | 13 |
| `hokkaido` | 北海道 | Hokkaido | 5 |
| `tohoku` | 東北 | Tohoku | 7 |
| `chugoku` | 中国 | Chugoku (Hiroshima, Okayama, Yamaguchi, Shimane, Tottori) | 6 |
| `kyushu` | 九州・沖縄 | Kyushu & Okinawa | 9 |
| `hokushinetsu` | 北信越 | Hokushinetsu (Niigata, Nagano, Ishikawa, Toyama, Fukui) | 9 |
| `shikoku` | 四国 | Shikoku | 4 |

Areas are HotPepper Beauty's own districts (a ward, a cluster of stations or a city). The area list is read live from the site for the genre you pick, so new areas appear automatically; the hair list is reproduced at the bottom of this page for reference.

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `genre` | string | `hair` | `hair`, `nail`, `esthe` or `relax`. |
| `region` | string | `kanto` | Region slug from the table above. |
| `area` | string | – | Area name (Japanese, partial OK) or code (`macAA`). Empty = whole region. |
| `subArea` | string | – | Sub-area name (Japanese, partial OK) or code (`sacX001`). |
| `startUrls` | array | – | HotPepper Beauty listing URLs. Overrides the fields above. |
| `maxResults` | integer | `100` | Unique salons to collect. |
| `includeDetails` | boolean | `false` | Open every salon page (one extra request per salon, same price per result). |
| `requestDelaySecs` | number | `0.5` | Pause after each request. |
| `maxConcurrency` | integer | `3` | Parallel requests. |
| `proxyConfiguration` | object | Apify datacenter | Apify Proxy is recommended for anything beyond a small test. |

Example: every hair salon in Shinjuku with full details.

```json
{
  "genre": "hair",
  "region": "kanto",
  "area": "新宿",
  "maxResults": 500,
  "includeDetails": true
}
```

Example: all nail and eyelash salons in the Kansai region, listing data only.

```json
{
  "genre": "nail",
  "region": "kansai",
  "maxResults": 10000
}
```

### Output

Listing fields (always present): `salonId`, `url`, `name`, `genre`, `genreName`, `genreTags`, `catchphrase`, `access`, `cutPrice` (hair), `seatsText`, `seatCount`, `staffText`, `staffCount` (nail / esthe / relax cards), `blogCount`, `reviewCount`, `labels`, `hasOnlineBooking`, `coupons` (up to 3 from the card), `couponCount`, `thumbnails`, `position`, `sourceListUrl`, plus the search context `region`, `regionName`, `areaCode`, `areaName`, `subAreaCode`, `subAreaName`.

Salon-page fields (with `includeDetails`): `schemaType`, `displayName`, `phone`, `address`, `latitude`, `longitude`, `rating`, `accessNote`, `hours`, `closedDays`, `paymentText`, `paymentMethods`, `website`, `priceRange`, `priceMin`, `priceMax`, `averageCostFirstVisit`, `averageCostRepeat`, `parking`, `features`, `notes`, `other`, `customerGender`, `customerAgeWomen`, `customerAgeMen`, `latestReview`, `image`, `regionCode`, and `coupons` grows to the full featured list with descriptions and validity.

Example item:

```json
{
  "salonId": "H000313094",
  "url": "https://beauty.hotpepper.jp/slnH000313094/",
  "name": "白髪染めLapis 新宿店 【ラピス シンジュク】",
  "genre": "hair",
  "areaName": "新宿・高田馬場・代々木",
  "catchphrase": "本日、空きあり◎白髪染め(リタッチ根本)×魔法のバブル付き　￥4500【ReFa】☆全席完備☆新宿駅・徒歩1分",
  "access": "JR新宿 新宿駅東口より徒歩１分",
  "cutPrice": 4500,
  "seatCount": 11,
  "staffCount": 10,
  "reviewCount": 341,
  "rating": 4.4,
  "phone": "03-3351-9966",
  "address": "東京都新宿区新宿３-３６-１４ カワノアネックスビル５F",
  "latitude": 35.6904367,
  "longitude": 139.7020865,
  "hours": "月～日9:00～21:00",
  "closedDays": "年中無休",
  "paymentMethods": ["Visa", "Mastercard", "JCB", "American Express", "Diners Club", "Discover"],
  "website": "http://lapis-ginza.com",
  "features": ["15席以上の大型サロン", "夜19時以降も受付OK", "年中無休", "ロング料金なし"],
  "averageCostFirstVisit": "¥6,000～¥6,999",
  "customerGender": {"ladies": 89, "mens": 10, "others": 0},
  "customerAgeWomen": {"under20": 0, "20s": 4, "30s": 13, "40s": 31, "50plus": 52},
  "coupons": [{"name": "【当日OK★平日OK】カット＋カラー根元(白髪OK)", "price": 7500, "audience": "新規", "url": "https://beauty.hotpepper.jp/slnH000313094/coupon/?couponId=CP00000010718046"}]
}
```

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 salons actually saved to the dataset. A run with `includeDetails` makes about twice the requests but costs the same per salon. Start with a small `maxResults` to check the fields you need, then scale up.

### Tips

- Listing order is HotPepper's "popular" order and it rotates between visits, so two runs of the same area can return salons in a different order. Use `salonId` to deduplicate across runs.
- `cutPrice` exists for hair salons only; nail, esthe and relax salons carry `seatsText` / `staffText` from the card and `priceRange` (typical spend) from the salon page.
- `customerGender` and `customerAgeWomen` / `customerAgeMen` are HotPepper's own statistics of who books the salon, in percent. Age bands: `under20`, `20s`, `30s`, `40s`, `50plus`.
- `reviewCount` on listing rows comes from the card; with `includeDetails` it is refreshed from the salon page together with `rating`.
- Promoted (PR) cards at the top of a page are skipped so results match the organic count; the same salon still appears in its organic slot.
- Big areas are big: Umeda alone lists about 1,400 esthetic salons and Shinjuku almost 800 nail salons. Use `subArea` or `maxResults` to size the run.

### Area codes (hair)

**関東 (`kanto`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macAD` | 渋谷 | `macJR` | 青山・表参道・原宿 |
| `macAC` | 恵比寿・広尾・六本木・麻布・赤坂 | `macAE` | 代官山・中目黒・自由が丘・武蔵小杉・学大 |
| `macAA` | 新宿・高田馬場・代々木 | `macAB` | 池袋・目白 |
| `macAF` | 銀座・有楽町・新橋・丸の内・日本橋 | `macAZ` | 上野・神田・北千住・亀有・青砥・町屋 |
| `macJC` | 両国・錦糸町・小岩・森下・瑞江 | `macJQ` | 門前仲町・勝どき・月島・豊洲 |
| `macJA` | 御茶ノ水・四ツ谷・千駄木・茗荷谷 | `macJB` | 赤羽・板橋・王子・巣鴨 |
| `macAH` | 品川・五反田・目黒・田町 | `macAX` | 下北沢・成城学園・向ヶ丘遊園・新百合ヶ丘 |
| `macAT` | 町田・相模大野・海老名・本厚木・橋本 | `macAP` | 横浜・関内・元町・上大岡・白楽 |
| `macAR` | 横須賀・小田原 | `macJM` | センター南・二俣川・戸塚・杉田・金沢文庫 |
| `macJJ` | 湘南・鎌倉・逗子 | `macAY` | 三軒茶屋・二子玉川・溝の口・青葉台 |
| `macAQ` | 大井町・蒲田・大森・川崎・鶴見 | `macAI` | 中野・高円寺・阿佐ヶ谷 |
| `macAJ` | 吉祥寺・荻窪・三鷹・国分寺・久我山 | `macAK` | 八王子・立川・国立・多摩・日野・福生・秋川 |
| `macAW` | 明大前・千歳烏山・調布・府中 | `macAV` | 鷺ノ宮・田無・東村山・拝島 |
| `macJO` | 山梨 | `macAL` | 大宮・浦和・川口・岩槻 |
| `macAU` | 大山・成増・志木・川越・東松山 | `macAS` | 練馬・ひばり・ヶ丘・所沢・飯能・狭山 |
| `macJD` | 西新井・草加・越谷・春日部・久喜 | `macJF` | 上尾・熊谷・本庄 |
| `macJS` | 東大宮・古河・小山 | `macJL` | 流山・三郷・野田 |
| `macJE` | 宇都宮・栃木 | `macJI` | 取手・土浦・つくば・鹿嶋 |
| `macJN` | 前橋・高崎・伊勢崎・太田・群馬 | `macJP` | 水戸・ひたちなか・日立・茨城 |
| `macAM` | 千葉・稲毛・幕張・鎌取・都賀 | `macAN` | 船橋・津田沼・本八幡・浦安・市川 |
| `macAO` | 柏・松戸・我孫子 | `macJG` | 市原・木更津・茂原・勝浦・東金・銚子 |
| `macJH` | 八千代・佐倉・鎌ヶ谷・成田 |  |  |

**関西 (`kansai`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macBC` | 江坂・千里中央・十三・豊中・池田・箕面・新大阪・吹田 | `macBA` | 梅田・京橋・福島・本町 |
| `macBB` | 心斎橋・難波・天王寺 | `macBT` | 昭和町・大正・住吉・住之江 |
| `macBD` | 茨木・高槻 | `macBH` | 門真・枚方・寝屋川・関目・守口・蒲生・鶴見 |
| `macBI` | 鴫野・住道・四条畷・緑橋・石切・布施・花園 | `macBN` | 平野・八尾・松原・古市・藤井寺・富田林 |
| `macBR` | 和歌山 | `macBE` | 堺・なかもず・深井・狭山・河内長野・鳳 |
| `macBO` | 高石・府中・岸和田・泉佐野 | `macBM` | 姫路・加古川 |
| `macBK` | 川西・宝塚・三田・豊岡 | `macBU` | 三木・北区・西区・長田・明石・垂水 |
| `macBL` | 西宮・伊丹・芦屋・尼崎 | `macBG` | 三宮・元町・神戸・兵庫・灘・東灘 |
| `macBV` | 舞鶴・福知山・京丹後 | `macBF` | 京都 |
| `macBS` | 長岡京・伏見・山科・京田辺・宇治・木津 | `macBJ` | 奈良 |
| `macBP` | 滋賀 |  |  |

**東海 (`tokai`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macCA` | 名駅・栄・金山・御器所・本山・大曽根 | `macCB` | 岐阜 |
| `macCC` | 静岡・藤枝・焼津・島田 | `macCD` | 浜松・磐田・掛川・袋井 |
| `macCE` | 一宮・犬山・江南・小牧・小田井・津島 | `macCF` | 春日井・尾張旭・守山・瀬戸 |
| `macCG` | 桑名・四日市・津・鈴鹿・伊勢 | `macCH` | 八事・平針・瑞穂・野並 |
| `macCI` | 名古屋港・高畑・鳴海・大府・豊明・知多・半田 | `macCJ` | 日進・豊田・刈谷・岡崎・安城・豊橋 |
| `macCK` | その他静岡県 | `macCL` | 各務原・大垣・関・多治見 |
| `macCM` | 星ヶ丘・藤が丘・長久手 |  |  |

**北海道 (`hokkaido`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macDA` | 札幌 | `macDB` | 旭川 |
| `macDD` | 函館 | `macDC` | 道東・道北 |
| `macDE` | 道央・道南 |  |  |

**東北 (`tohoku`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macEA` | 仙台・宮城 | `macEH` | いわき・福島・その他福島県 |
| `macEC` | 岩手・盛岡 | `macED` | 山形 |
| `macEF` | 青森・八戸・弘前 | `macEG` | 秋田 |
| `macEI` | 郡山 |  |  |

**中国 (`chugoku`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macFA` | 広島 | `macFB` | 福山・尾道 |
| `macFC` | 岡山・倉敷 | `macFE` | 山口 |
| `macFF` | 鳥取 | `macFG` | 島根 |

**九州・沖縄 (`kyushu`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macGA` | 福岡 | `macGB` | 北九州 |
| `macGC` | 長崎 | `macGD` | 大分 |
| `macGE` | 熊本 | `macGF` | 宮崎 |
| `macGG` | 鹿児島 | `macGI` | 佐賀 |
| `macGJ` | 沖縄 |  |  |

**北信越 (`hokushinetsu`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macHA` | 新潟 | `macHB` | 長岡 |
| `macHE` | その他新潟県 | `macHC` | 石川・金沢 |
| `macHD` | 長野 | `macHH` | 松本 |
| `macHI` | その他長野県 | `macHF` | 富山 |
| `macHG` | 福井 |  |  |

**四国 (`shikoku`)**

| Code | Area | Code | Area |
|---|---|---|---|
| `macIA` | 高松・香川 | `macIB` | 徳島 |
| `macIC` | 松山・愛媛 | `macID` | 高知 |

### Related scrapers

Looking for other Japanese business data? See the HotPepper Gourmet, Tabelog, Retty, Gurunavi, Ekiten, 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 HotPepper Beauty's terms and applicable law, including Japan's Act on the Protection of Personal Information where relevant. Review text is user-generated content.

# Actor input Schema

## `genre` (type: `string`):

Which HotPepper Beauty vertical to crawl.

## `region` (type: `string`):

HotPepper Beauty region. Combine with Area to narrow down.

## `area` (type: `string`):

Optional. Area inside the region, by Japanese name (partial matches are fine: 新宿, 渋谷, 横浜, 梅田, 名駅) or by code (macAA). Several areas may match a short name. Leave empty to crawl the whole region area by area. The README lists every area.

## `subArea` (type: `string`):

Optional. Sub-area inside the matched area(s), by Japanese name (e.g. 高田馬場, 西口) or code (sacX001). Sub-areas are listed on each area page.

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

Optional. Your own HotPepper Beauty listing URLs, e.g. https://beauty.hotpepper.jp/svcSA/macAA/salon/ (hair, Shinjuku), https://beauty.hotpepper.jp/nail/svcSB/macBA/salon/ (nail, Umeda) or a sub-area / PNn.html page. Each is paginated automatically. Overrides the fields above.

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

Stop after this many unique salons. Each salon is one dataset item and one billable result.

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

Also open every salon page for phone number, GPS coordinates, rating, opening hours, closed days, payment methods, website, feature tags, all coupons, average spend and customer demographics. One extra request per salon, same price per result.

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

Pause after each successful request.

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

Parallel requests.

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

Apify Proxy (datacenter) is the default. Switch to residential (country JP) only if the log reports many blocked requests.

## Actor input object example

```json
{
  "genre": "hair",
  "region": "kanto",
  "area": "新宿",
  "startUrls": [],
  "maxResults": 100,
  "includeDetails": false,
  "requestDelaySecs": 0.5,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `salons` (type: `string`):

Salon records from HotPepper Beauty. Listing fields are always present; salon-page 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 = {
    "area": "新宿",
    "startUrls": [],
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piquno/hotpepper-beauty-japan-salon-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 = {
    "area": "新宿",
    "startUrls": [],
    "maxResults": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piquno/hotpepper-beauty-japan-salon-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 '{
  "area": "新宿",
  "startUrls": [],
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piquno/hotpepper-beauty-japan-salon-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piquno/hotpepper-beauty-japan-salon-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/YKpLXUhFPbct6Ggbx/builds/j6CALSpv26wkekw94/openapi.json
