로그인 없이 접근 가능한 마켓컬리 검색/상품 상세 표면으로 상품 후보, 현재 가격, 할인 여부, 품절 여부를 조회한다.
마켓컬리 웹앱이 실제로 사용하는 비로그인 검색/상품 상세 표면을 사용해 아래 흐름을 처리한다.
node 18+market-kurly-search package 또는 동일 로직상품명 또는 검색어가 없으면 먼저 물어본다.
찾을 마켓컬리 상품명이나 검색어를 알려주세요. 예: 우유, 딸기, 닭가슴살검색어가 너무 넓어요. 브랜드나 용량까지 같이 알려주시면 가격 후보를 더 정확히 추릴 수 있어요.검색 결과가 여러 개면 상위 2~3개만 보여주고 다시 확인받는다.
후보가 여러 개예요. 아래 상품 중 어떤 상품 가격을 볼까요?https://api.kurly.com/search/v4/sites/market/normal-search?keyword=<keyword>&page=1https://api.kurly.com/search/v3/sites/market/normal-search/count?keyword=<keyword>&filters=&allow_replace=truehttps://www.kurly.com/goods/<productNo>const { searchProducts } = require("market-kurly-search")
const result = await searchProducts("우유")
console.log(result.items.slice(0, 3))
검색 결과에서는 아래 필드를 우선 본다.
discountedPrice 우선, 없으면 salesPrice)const { countProducts } = require("market-kurly-search")
const count = await countProducts("우유")
console.log(count)
후보가 너무 많으면 count 를 먼저 보여 주고 검색어를 좁히라고 안내한다.
const { getProductDetail } = require("market-kurly-search")
const detail = await getProductDetail(5063110)
console.log(detail)
goods/<productNo> HTML 안의 __NEXT_DATA__ 에서 상품명, 가격, 품절 여부, 배송 타입을 추출한다.
응답은 짧고 보수적으로 정리한다.