# 11st Products Crawler (`ficuslink/11st-products-crawler`) Actor

Collect 11st (11번가) results via JSON API—no browser. Each record uses 29 fixed fields for prices, sellers, delivery, ratings, reviews, and benefit points, with ad filtering, per-keyword deduplication, and 7 sort options. 11번가 검색 결과를 브라우저 없이 API로 수집하며 29개 고정 필드, 광고 제외, 키워드별 중복 제거, 7가지 정렬을 지원합니다.

- **URL**: https://apify.com/ficuslink/11st-products-crawler.md
- **Developed by:** [KIM SK](https://apify.com/ficuslink) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 11 total users, 3 monthly users, 88.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.90 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## 11st Products Crawler

[English](#english) | [한국어](#korean)

### English

#### Who this Actor is for

11st Products Crawler collects structured product search results from [11st.co.kr](https://www.11st.co.kr), a South Korean online marketplace. It is intended for price monitoring, seller research, market analysis, and data pipelines that need consistent search-result metadata.

The Actor calls 11st's search JSON API directly without launching a browser. Every saved product record follows the same 29-field schema.

#### Key features

- **No browser** — Sends direct JSON API requests without Playwright or browser rendering.
- **Fixed 29-field output** — Every Dataset item contains the same 29 keys.
- **Ad handling** — Identifies ads with `isAd` and can exclude them with `excludeAds`.
- **Per-keyword deduplication** — Removes duplicate `productId` values across pages for each keyword.
- **Commerce data** — Includes prices, discounts, benefit points, seller and brand information, delivery, ratings, and reviews.
- **Seven sort options** — Ranking, popularity, price ascending or descending, sales, reviews, and newest.
- **Partial-result protection** — Saves results page by page, so items stored before a later failure remain available.
- **Cost-aware saving** — Saves only the results allowed by the run cost limit and finishes successfully with `Cost limit reached`.

#### Quick start

```json
{
    "searchKeywords": ["노트북"]
}
```

This input uses the documented defaults: up to 50 unique products per keyword, 11st ranking order, ads included, and a two-second request delay.

#### Pricing and platform usage

This Actor uses pay-per-event pricing:

- **Result event:** $2.90 per 1,000 saved products ($0.0029 per product)
- **Actor start event:** $0.00005 per run
- **Apify platform usage:** charged separately by Apify based on the resources used and the customer's subscription plan
- A zero-result run has no result-event charge, but the start event and platform usage may still apply

To cap total spending for a run:

- In Apify Console, open **Run options → Maximum cost per run**.
- When starting through the API, set the run option `maxTotalChargeUsd`.

The cost limit is a run option, not an Actor input field. When the limit is reached, the Actor preserves the allowed partial results and finishes successfully with a `Cost limit reached` status.

#### Input and seven sort options

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchKeywords` | string\[] | Required | Korean or English search terms. Each keyword is searched separately. |
| `maxItemsPerKeyword` | integer | `50` | Maximum unique products to save per keyword. Allowed range: 1–10,000. This is a request limit, not a guaranteed result count. |
| `sortBy` | string | `"ranking"` | One of the seven sort values below. |
| `minPrice` | integer | — | Minimum price in KRW. |
| `maxPrice` | integer | — | Maximum price in KRW. |
| `excludeAds` | boolean | `false` | Set to `true` to exclude products identified as ads. |
| `requestDelay` | number | `2` | Delay between requests in seconds. Allowed range: 1–10; the Actor enforces at least one second. |
| `proxyConfiguration` | object | Direct connection | Apify Console preselects no proxy. API and CLI calls also connect directly when this field is omitted. Apify Proxy and custom proxies remain optional. |

| Value | Sort order |
|---|---|
| `ranking` | 11st ranking — default |
| `popularity` | Popularity |
| `price_asc` | Price: low to high |
| `price_desc` | Price: high to low |
| `sales` | Best selling |
| `reviews` | Most reviews |
| `latest` | Newest |

#### Exact 29-field output

Every Dataset item contains exactly 29 keys. Fields unavailable in the 11st response can be `null`. Boolean indicators use their documented `false` fallback.

| Group | Count | Fields |
|---|---:|---|
| Product and source | 7 | `productId`, `title`, `catalogId`, `productUrl`, `thumbnailUrl`, `searchKeyword`, `scrapedAt` |
| Price and benefits | 10 | `price`, `originalPrice`, `discountRate`, `directDiscountAmount`, `currency`, `isLowestPrice`, `is30DayLowest`, `isDeal`, `hasOptionPrice`, `benefitPoints` |
| Ratings, brand, and seller | 7 | `rating`, `ratingMax`, `reviewCount`, `brandName`, `isOfficialBrand`, `sellerBadgeType`, `sellerNickName` |
| Listing, stock, and delivery | 5 | `isSoldOut`, `isAd`, `listType`, `deliveryFee`, `deliveryETA` |
| **Total** | **29** | |

`deliveryFee` and `benefitPoints` remain strings because the source can return text such as `"무료"`, `"3,000"`, or `"20,170"`.

Results are stored in the default Dataset and can be accessed through the Dataset API or exported as JSON, CSV, or Excel.

#### Limitations and FAQ

**Can I still use a proxy?**

Yes. Direct connection is preselected for new inputs. You can enable Apify Proxy or provide custom proxies in `proxyConfiguration`. Existing saved inputs keep their proxy settings; to use a direct connection, select no proxy or set `"proxyConfiguration": {"useApifyProxy": false}` without custom proxy URLs. An explicitly selected proxy is used throughout the run; the Actor does not automatically switch it to a direct connection.

**Is 10,000 products per keyword guaranteed?**

No. `10,000` is the largest value accepted by `maxItemsPerKeyword`. The actual saved count can be lower because of the available search results, duplicate removal, ad exclusion, the run cost limit, or request failures.

**Does this Actor use a browser?**

No. It sends HTTP requests to 11st's search JSON API. Playwright and browser rendering are not used.

**Does it support Korean and English keywords?**

Yes. Keywords are passed to 11st without language conversion. The relevance and number of results depend on 11st's current search index.

**What happens when a request fails?**

For 429, 5xx, and network errors, the Actor makes up to eight attempts with exponential backoff and jitter. If all attempts fail, the run fails. A non-429 4xx response stops only the affected keyword and continues with the next keyword. Because results are saved page by page, items stored before the failure remain in the Dataset.

**What happens when the cost limit is reached?**

The Actor saves only the items allowed by the remaining result-event budget and finishes successfully with a `Cost limit reached` status. If no result event can be charged before crawling begins, no product request is made.

**Are ads included by default?**

Yes. Every record contains `isAd`. Set `excludeAds: true` to remove identified ads before saving.

**Does it scrape product detail pages?**

No. This Actor collects product metadata available in 11st search results. It does not scrape full specifications, all product options, full reviews, downloadable image files, or sellers' personal contact information.

#### Python and Google Sheets integrations

##### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("ficuslink/11st-products-crawler").call(run_input={
    "searchKeywords": ["노트북", "운동화"],
    "maxItemsPerKeyword": 100,
    "sortBy": "price_asc",
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['title']} - {item['price']} KRW")
```

##### Google Sheets

For recurring Google Sheets delivery, follow Apify's [Make integration guide](https://docs.apify.com/integrations/make): **Run an Actor → Get Dataset Items → Google Sheets Bulk Add Rows**.

For manual downloads and Dataset API access, see the [Apify Dataset documentation](https://docs.apify.com/storage/dataset).

#### Disclaimer

This tool is intended for legitimate uses such as market research, price monitoring, and competitive analysis. Users are responsible for complying with applicable laws and 11st's Terms of Service. The Actor collects publicly visible product metadata and thumbnail URLs; it does not download images or collect sellers' personal contact information.

***

### Korean

#### 이용 대상과 제공 결과

11st Products Crawler는 한국의 온라인 마켓플레이스인 [11번가](https://www.11st.co.kr)의 상품 검색 결과를 구조화된 데이터로 수집합니다. 일정한 형식의 검색 결과 데이터가 필요한 가격 모니터링, 판매자 조사, 시장 분석, 데이터 처리 작업에 사용할 수 있습니다.

브라우저를 실행하지 않고 11번가 검색 JSON API에 직접 요청합니다. 저장되는 모든 상품은 동일한 29개 필드 구조를 가집니다.

#### 핵심 특성

- **브라우저 미사용** — Playwright나 브라우저 렌더링 없이 JSON API에 직접 요청합니다.
- **29개 고정 필드** — 모든 Dataset 항목에 동일한 29개 키가 들어갑니다.
- **광고 처리** — `isAd`로 광고 여부를 표시하고 `excludeAds`로 광고 상품을 제외할 수 있습니다.
- **키워드별 중복 제거** — 각 키워드에서 여러 페이지에 반복되는 `productId`를 제거합니다.
- **상품 분석 정보** — 가격, 할인, 혜택 포인트, 판매자, 브랜드, 배송, 평점, 리뷰 정보를 제공합니다.
- **7가지 정렬** — 랭킹순, 인기순, 낮은 가격순, 높은 가격순, 누적 판매순, 리뷰순, 최신순을 지원합니다.
- **부분 결과 보존** — 페이지 단위로 결과를 저장하므로 이후 요청이 실패해도 먼저 저장된 상품은 남습니다.
- **비용 한도 적용** — 실행 비용 한도에서 허용되는 결과만 저장하고 `Cost limit reached` 상태로 정상 종료합니다.

#### 최소 입력

```json
{
    "searchKeywords": ["노트북"]
}
```

위 입력은 키워드당 최대 고유 상품 50개, 11번가 랭킹순, 광고 포함, 요청 간격 2초의 기본값을 사용합니다.

#### 가격과 플랫폼 사용료

이 Actor는 이벤트 단위 과금 방식을 사용합니다.

- **결과 이벤트:** 저장된 상품 1,000개당 $2.90(상품 1개당 $0.0029)
- **Actor 시작 이벤트:** 실행당 $0.00005
- **Apify 플랫폼 사용료:** 사용한 자원과 고객의 구독 플랜에 따라 Apify가 별도로 부과
- 결과가 0건이면 결과 이벤트 비용은 없지만 시작 이벤트와 플랫폼 사용료는 발생할 수 있음

실행의 총비용을 제한하려면 다음과 같이 설정합니다.

- Apify Console에서는 **Run options → Maximum cost per run**을 설정합니다.
- API로 실행할 때는 실행 옵션 `maxTotalChargeUsd`를 설정합니다.

비용 한도는 Actor 입력 필드가 아니라 실행 옵션입니다. 한도에 도달하면 허용된 부분 결과를 보존하고 `Cost limit reached` 상태로 정상 종료합니다.

#### 입력과 7개 정렬값

| 입력값 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| `searchKeywords` | string\[] | 필수 | 한국어 또는 영어 검색어입니다. 각 키워드를 따로 검색합니다. |
| `maxItemsPerKeyword` | integer | `50` | 키워드당 저장할 고유 상품의 상한입니다. 1~10,000을 입력할 수 있으며 실제 저장 수량을 보장하지 않습니다. |
| `sortBy` | string | `"ranking"` | 아래 7개 정렬값 중 하나입니다. |
| `minPrice` | integer | 없음 | 원 단위 최소 가격입니다. |
| `maxPrice` | integer | 없음 | 원 단위 최대 가격입니다. |
| `excludeAds` | boolean | `false` | `true`로 설정하면 광고로 판별된 상품을 제외합니다. |
| `requestDelay` | number | `2` | 요청 사이의 대기 시간(초)입니다. 1~10을 입력할 수 있으며 Actor는 최소 1초를 적용합니다. |
| `proxyConfiguration` | object | 직접 연결 | Apify Console에서는 프록시 미사용이 미리 선택됩니다. API나 CLI에서 이 값을 생략해도 직접 연결합니다. Apify Proxy와 사용자 프록시는 선택해서 사용할 수 있습니다. |

| 값 | 정렬 방식 |
|---|---|
| `ranking` | 11번가 랭킹순 — 기본값 |
| `popularity` | 인기순 |
| `price_asc` | 낮은 가격순 |
| `price_desc` | 높은 가격순 |
| `sales` | 누적 판매순 |
| `reviews` | 많은 리뷰순 |
| `latest` | 최신순 |

#### 정확히 29개인 출력

모든 Dataset 항목에는 정확히 29개 키가 들어갑니다. 11번가 응답에 값이 없는 필드는 `null`이 될 수 있으며, boolean 표시값은 문서에 설명된 대로 `false`를 기본값으로 사용합니다.

| 그룹 | 개수 | 필드 |
|---|---:|---|
| 상품·출처 | 7 | `productId`, `title`, `catalogId`, `productUrl`, `thumbnailUrl`, `searchKeyword`, `scrapedAt` |
| 가격·혜택 | 10 | `price`, `originalPrice`, `discountRate`, `directDiscountAmount`, `currency`, `isLowestPrice`, `is30DayLowest`, `isDeal`, `hasOptionPrice`, `benefitPoints` |
| 평점·브랜드·판매자 | 7 | `rating`, `ratingMax`, `reviewCount`, `brandName`, `isOfficialBrand`, `sellerBadgeType`, `sellerNickName` |
| 노출·재고·배송 | 5 | `isSoldOut`, `isAd`, `listType`, `deliveryFee`, `deliveryETA` |
| **합계** | **29** | |

`deliveryFee`와 `benefitPoints`는 원본 응답의 `"무료"`, `"3,000"`, `"20,170"` 같은 표현을 보존하기 위해 문자열로 제공합니다.

결과는 기본 Dataset에 저장되며 Dataset API로 조회하거나 JSON, CSV, Excel 형식으로 내보낼 수 있습니다.

#### 제한사항과 FAQ

**프록시를 계속 사용할 수 있나요?**

네. 새 입력에는 직접 연결이 미리 선택되며, 필요하면 `proxyConfiguration`에서 Apify Proxy를 켜거나 사용자 프록시를 지정할 수 있습니다. 기존에 저장한 입력의 프록시 설정은 유지됩니다. 직접 연결로 바꾸려면 프록시 미사용을 선택하거나 사용자 프록시 URL 없이 `"proxyConfiguration": {"useApifyProxy": false}`로 설정하십시오. 명시적으로 선택한 프록시는 실행 내내 사용하며, Actor가 자동으로 직접 연결로 바꾸지 않습니다.

**키워드당 10,000개 수집이 보장되나요?**

아닙니다. `10,000`은 `maxItemsPerKeyword`에 입력할 수 있는 최댓값입니다. 검색 가능한 상품 수, 중복 제거, 광고 제외, 실행 비용 한도, 요청 실패에 따라 실제 저장량은 더 적을 수 있습니다.

**브라우저를 사용하나요?**

아닙니다. 11번가 검색 JSON API에 HTTP 요청을 보냅니다. Playwright나 브라우저 렌더링은 사용하지 않습니다.

**한국어와 영어 검색어를 모두 지원하나요?**

네. 검색어를 언어 변환 없이 11번가에 전달합니다. 검색 결과의 관련성과 수량은 11번가의 현재 검색 색인에 따라 달라집니다.

**요청이 실패하면 어떻게 처리하나요?**

429, 5xx, 네트워크 오류는 지수 백오프와 지터를 적용해 최대 8회 시도합니다. 모든 시도가 실패하면 전체 실행을 실패로 처리합니다. 429가 아닌 4xx 응답은 해당 키워드만 중단하고 다음 키워드를 계속 처리합니다. 결과를 페이지 단위로 저장하므로 오류 전에 저장된 상품은 Dataset에 남습니다.

**비용 한도에 도달하면 어떻게 되나요?**

남은 결과 이벤트 예산으로 저장할 수 있는 상품만 저장하고 `Cost limit reached` 상태로 정상 종료합니다. 수집 시작 전부터 결과 이벤트를 과금할 여유가 없으면 상품 요청을 보내지 않습니다.

**광고 상품이 기본으로 포함되나요?**

네. 모든 결과에 `isAd`가 포함됩니다. 저장 전에 광고로 판별된 상품을 제외하려면 `excludeAds: true`를 설정합니다.

**상품 상세 페이지도 수집하나요?**

아닙니다. 이 Actor는 11번가 검색 결과에 포함된 상품 메타데이터를 수집합니다. 전체 상품 사양, 모든 옵션, 전체 리뷰, 이미지 파일, 판매자의 개인 연락처는 수집하지 않습니다.

#### Python·Google Sheets 연동

##### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("ficuslink/11st-products-crawler").call(run_input={
    "searchKeywords": ["노트북", "운동화"],
    "maxItemsPerKeyword": 100,
    "sortBy": "price_asc",
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['title']} - {item['price']} KRW")
```

##### Google Sheets

Google Sheets에 결과를 정기적으로 전달하려면 Apify의 [Make 연동 가이드](https://docs.apify.com/integrations/make)를 따릅니다. 연결 순서는 **Run an Actor → Get Dataset Items → Google Sheets Bulk Add Rows**입니다.

결과를 직접 내려받거나 Dataset API로 조회하는 방법은 [Apify Dataset 문서](https://docs.apify.com/storage/dataset)를 참고하십시오.

#### 이용 범위 및 면책

이 도구는 시장 조사, 가격 모니터링, 경쟁 분석 등 적법한 용도를 위한 것입니다. 사용자는 관련 법률과 11번가 이용약관을 준수해야 합니다. Actor는 공개된 상품 메타데이터와 썸네일 URL만 수집하며 이미지 파일이나 판매자의 개인 연락처를 수집하지 않습니다.

# Actor input Schema

## `searchKeywords` (type: `array`):

Search keywords. Supports Korean and English. Each keyword triggers a separate search. (한국어/영어 모두 지원. 키워드별 개별 검색 실행.)

## `maxItemsPerKeyword` (type: `integer`):

Maximum number of unique products to save per keyword (1–10,000). This is a request limit, not a guaranteed result count; available results, deduplication, ad exclusion, the run cost limit, or request failures can reduce the saved count. (키워드당 저장할 고유 상품의 상한, 1~10,000. 보장 수량이 아니며 검색 결과 수, 중복 제거, 광고 제외, 실행 비용 한도, 요청 실패에 따라 실제 저장량이 줄어들 수 있습니다.)

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

Sort order for search results. (검색 결과 정렬 기준.)

## `minPrice` (type: `integer`):

Filter products by minimum price in KRW. (최소 가격 필터, 원 단위.)

## `maxPrice` (type: `integer`):

Filter products by maximum price in KRW. (최대 가격 필터, 원 단위.)

## `excludeAds` (type: `boolean`):

If true, excludes sponsored/ad products from results. Useful for analyzing only organic rankings. (광고 상품 제외 여부. 자연 노출 상품만 분석할 때 유용.)

## `requestDelay` (type: `number`):

Delay between API requests in seconds. Minimum 1 second. Higher values reduce the chance of rate limiting. (요청 간 대기 시간. 최소 1초. 높을수록 차단 가능성 감소.)

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

Direct connection is preselected. You can enable Apify Proxy or provide custom proxies. API and CLI calls also use a direct connection when this field is omitted. (기본으로 프록시 없이 직접 연결합니다. 필요하면 Apify Proxy를 켜거나 사용자 프록시를 지정할 수 있습니다. API나 CLI에서 생략해도 직접 연결합니다.)

## Actor input object example

```json
{
  "searchKeywords": [
    "노트북"
  ],
  "maxItemsPerKeyword": 50,
  "sortBy": "ranking",
  "excludeAds": false,
  "requestDelay": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

The products collected by this run.

# 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 = {
    "searchKeywords": [
        "노트북"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ficuslink/11st-products-crawler").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 = {
    "searchKeywords": ["노트북"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ficuslink/11st-products-crawler").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 '{
  "searchKeywords": [
    "노트북"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call ficuslink/11st-products-crawler --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ficuslink/11st-products-crawler"
        }
    }
}

```

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/dmQKscTzd6IBjS0ly/builds/1E8lmKJYH7UuIdh4w/openapi.json
