# 나라장터 입찰공고 조회



업무구분·기간·공고번호로 나라장터 입찰공고를 조회합니다. 기간 조회는 최대 31일이고, 공고번호를 지정하면 그 공고만 조회합니다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/bid_notice 응답 필드

- `data` (object): 아래 하위 항목을 확인하세요.

- `data.items` (array): 아래 하위 항목을 확인하세요.

- `data.totalCount` (integer): 아래 하위 항목을 확인하세요.

- `data.pageNo` (integer): 아래 하위 항목을 확인하세요.

- `data.numOfRows` (integer): 아래 하위 항목을 확인하세요.

- `api` (object): 아래 하위 항목을 확인하세요.

- `api.cost` (integer): 아래 하위 항목을 확인하세요.

- `api.success` (boolean): 아래 하위 항목을 확인하세요.

- `api.ms` (integer): 아래 하위 항목을 확인하세요.

## API 요청: POST /rest/bid_notice



### 입력

- `bizType` (string, 선택): 업무구분 (물품·공사·용역·외자, 기본 용역) 허용값: 물품, 공사, 용역, 외자

- `startDate` (string, 선택): 조회 시작일 (YYYYMMDD 또는 YYYYMMDDHHMM)

- `endDate` (string, 선택): 조회 종료일 (YYYYMMDD 또는 YYYYMMDDHHMM)

- `bidNtceNo` (string, 선택): 입찰공고번호 (지정 시 공고번호로 조회)

- `indstrytyCd` (string, 선택): 업종코드 (선택)

- `pageNo` (integer, 선택): 페이지 번호 (기본 1)

- `numOfRows` (integer, 선택): 페이지당 결과 수 (기본 10, 최대 999)



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {}
        },
        "totalCount": {
          "type": "integer"
        },
        "pageNo": {
          "type": "integer"
        },
        "numOfRows": {
          "type": "integer"
        }
      }
    },
    "api": {
      "type": "object",
      "properties": {
        "cost": {
          "type": "integer"
        },
        "success": {
          "type": "boolean"
        },
        "ms": {
          "type": "integer"
        }
      }
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "items": [],
    "totalCount": 0,
    "pageNo": 1,
    "numOfRows": 20
  },
  "api": {
    "cost": 100,
    "success": true,
    "ms": 380
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/bid_notice' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'bizType=공사' \
  --form-string 'startDate=20261001' \
  --form-string 'endDate=20261007' \
  --form-string 'numOfRows=20'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("bizType", "공사");
form.append("startDate", "20261001");
form.append("endDate", "20261007");
form.append("numOfRows", "20");
const response = await fetch("https://apick.app/rest/bid_notice", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const result = await response.json();
console.log(result);

```

### python

```python

import os
import requests
parts = [
    ("bizType", (None, "공사")),
    ("startDate", (None, "20261001")),
    ("endDate", (None, "20261007")),
    ("numOfRows", (None, "20")),
]
response = requests.request("POST", "https://apick.app/rest/bid_notice",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'bizType' => '공사',
    'startDate' => '20261001',
    'endDate' => '20261007',
    'numOfRows' => '20',
];
$curl = curl_init('https://apick.app/rest/bid_notice');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);

```

## 코드·오류

## 상세 기능·요금

이용 전 확인 성공한 조회 한 건당 100P가 차감됩니다. 결과가 0건이어도 조회가 성공하면 같은 요금이 적용됩니다. 실제 차감액은 응답의 api.cost에서 확인하세요. 기간 조회는 startDate와 endDate를 함께 보내야 하며 두 날짜의 차이는 31일 이하여야 합니다. 업무구분을 생략하면 용역으로 조회합니다. 인증키는 서버 환경변수에 보관하고 공개 저장소·웹페이지에 넣지 마세요.

## 상세 요청

항목설정 메서드·주소POST https://apick.app/rest/bid_notice 인증 헤더Authorization: Bearer — 내 계정의 API 인증키 본문 형식multipart/form-data 선택 항목bizType 업무구분(물품·공사·용역·외자, 기본 용역), startDate·endDate 조회 기간(YYYYMMDD 또는 YYYYMMDDHHMM), bidNtceNo 입찰공고번호, indstrytyCd 업종코드, pageNo 페이지(기본 1), numOfRows 결과 수(기본 10, 최대 999) 요청 예시 공사 업무구분으로 최근 7일 공고를 받는 예입니다. 성공 시 과금되는 실제 요청입니다. form-data 전체 예제 보기

## 상세 코드·정책

응답과 오류 복구 필드타입설명 data.items[]array공고 목록입니다. 공고번호·공고명·수요기관·마감일 등 항목 이름은 원문 표기를 그대로 씁니다. data.totalCountinteger조건에 맞는 전체 건수입니다. data.pageNointeger이번 응답의 페이지 번호입니다. data.numOfRowsinteger이번 응답의 항목 수입니다. api.costinteger차감된 포인트입니다. 실패한 응답은 0입니다. api.msinteger처리 시간(밀리초)입니다. { "data": { "items": [], "totalCount": 0, "pageNo": 1, "numOfRows": 20 }, "api": { "cost": 100, "success": true, "ms": 380 } } 기간이 31일을 넘거나 날짜 형식이 맞지 않거나 업무구분 값이 잘못되면 조회 전에 data.error로 실패합니다. 입찰 정보를 가져오지 못하면 공개 안내 문구가 오고 api.cost는 0입니다. 다음 페이지는 pageNo를 올려 받고, 같은 기간을 반복 조회하면 매번 과금됩니다.
