> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Data App 검색

> 키워드로 Data App 검색 후 카드 반환.

**`GET`** `https://api-datahub.octoparse.com/v1/data-apps`

인증: 선택. 익명 사용 가능. API 키가 있으면 로그인 필터와 추가 콘텐츠가 열립니다.

마켓 검색. 익명 가능. `q`가 비면 최신 게시순, 있으면 관련도순.

API 키가 있으면 두 가지 확장이 열립니다:

* **뷰 전환**: `owner=me`은 내가 게시한 App(미게시 드래프트 포함. 카드에 `status`·`scope`). `shared_with=me`은 1:1 공유 App.
* **가시성 범위**: 뷰 전환 없으면 `scope`가 후보 집합. 기본/`public`은 마켓, `private`는 내 비공개, `shared`는 공유 가시 전부, `all`은 현재 자격으로 보이는 전부(익명이면 마켓으로 축소). 속성 모드 `status` 기본은 게시됨만.

카드는 선택에 필요한 것만: 이름, 요약, 역량 경계, 입출력 힌트, 실행 모드, 시작 가격, 요금표. 전체 입출력 계약·실행 프로필·호출 예 는 <a href="/docs/ko/datahub/api/reference/discovery/get-data-app">App 상세</a>에서.

## 요청

### 쿼리 파라미터

<ParamField query="q" type="string">
  임의 언어 비즈니스 키워드. 범위를 좁히려면 플랫폼 이름 추가(예: `temu reviews`). 비우면 카탈로그 목록.
</ParamField>

<ParamField query="type" type="string">
  App 유형 필터. `data`는 외부 데이터 수집, `transform`은 기존 데이터 처리.

  값: `data` / `transform`.
</ParamField>

<ParamField query="capability" type="string">
  역량 필터. `data-acquisition`은 수집, `data-processing`은 처리.

  값: `data-acquisition` / `data-processing`.
</ParamField>

<ParamField query="owner" type="string">
  `me`로 「내가 게시한 App」 뷰. API 키 필요.
</ParamField>

<ParamField query="shared_with" type="string">
  `me`로 「나와 공유된 App」 뷰. API 키 필요.
</ParamField>

<ParamField query="scope" type="string">
  가시성 범위. `public`은 마켓(기본), `private`는 내 비공개, `shared`는 공유 관계, `all`은 가시 전체. 뒤 3개는 API 키 필요.

  값: `public` / `private` / `shared` / `all`.
</ParamField>

<ParamField query="status" type="string">
  라이프사이클 상태 필터. `draft` / `published` / `deprecated`. 속성 모드 기본은 `published`.

  값: `draft` / `published` / `deprecated`.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  페이지 오프셋.

  범위 ≥ 0.
</ParamField>

<ParamField query="limit" type="integer" default="5">
  페이지 크기.

  범위 1\~100.
</ParamField>

### 요청 예시

```bash theme={null}
curl \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  "https://api-datahub.octoparse.com/v1/data-apps?q=reviews&limit=5"
```

## 응답

### 200 성공

```json theme={null}
{
  "data": {
    "items": [
      {
        "app_id": "app_6dfe4e839ccf",
        "namespace": "carol",
        "app_name": "probe-b",
        "name": "Product review lookup",
        "type": "data",
        "summary": "Fetch a review list by product id",
        "capability": "data-acquisition",
        "keywords": [
          "reviews",
          "ecommerce"
        ],
        "boundary": "Public reviews only; buyer-show images are not included",
        "required_input_hint": [
          "product"
        ],
        "main_output_hint": [
          "review_id",
          "content",
          "rating"
        ],
        "execution_mode": "sync",
        "price_from": 0.001,
        "pricing": {
          "events": [
            {
              "event": "record",
              "label": "One record",
              "unit_price": 0.001,
              "qty_from": "",
              "unit_size": null
            }
          ]
        },
        "match_score": 1.0,
        "published_at": "2026-09-15T07:45:38.633930+00:00",
        "updated_at": "2026-09-15T07:45:38.633930+00:00",
        "source_locale": "en-US"
      }
    ],
    "pagination": {
      "offset": 0,
      "limit": 5,
      "count": 1,
      "total": 1,
      "has_more": false
    },
    "low_confidence": false
  }
}
```

페이로드는 `data`로 감쌉니다. 필드:

<ResponseField name="items" type="object[]" required>
  카드 목록.
</ResponseField>

<ResponseField name="pagination" type="object" required>
  페이징 객체.

  <Expandable title="fields">
    <ResponseField name="offset" type="integer">
      —
    </ResponseField>

    <ResponseField name="limit" type="integer">
      —
    </ResponseField>

    <ResponseField name="count" type="integer">
      —
    </ResponseField>

    <ResponseField name="total" type="integer">
      —
    </ResponseField>

    <ResponseField name="has_more" type="boolean">
      —
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="low_confidence" type="boolean">
  강한 일치가 부족해 반환 집합이 약할 때 `true`.
</ResponseField>

### 오류

| HTTP | `code`         | `category`  | 설명              |
| ---- | -------------- | ----------- | --------------- |
| 401  | `unauthorized` | `forbidden` | API 키 누락 또는 무효. |

오류 응답은 `{"error": {code, category, message, retryable}}`입니다. <a href="/docs/ko/datahub/api/reference/introduction#errors">오류</a> 참고.

## 클라이언트 라이브러리

<CodeGroup>
  ```python Python theme={null}
  result = client.search("reviews", limit=5)
  for card in result["items"]:
      print(card["app_id"], card["namespace"], card["app_name"], card["price_from"])

  # Apps shared with me
  shared = client.search("", shared_with="me")
  ```

  ```js JavaScript theme={null}
  const result = await client.search("reviews", { limit: 5 });
  for (const card of result.items) {
    console.log(card.app_id, card.namespace, card.app_name, card.price_from);
  }

  // Apps shared with me
  const shared = await client.search("", { sharedWith: "me" });
  ```
</CodeGroup>
