API

G마켓 API: 검색, 상품 상세, 리뷰를 원화 JSON으로

G마켓 상품을 찾고(검색·자동완성), 한 상품을 자세히 보고(상세), 구매 리뷰를 넘겨 보는 일을 각각 HTTP 호출 한 번으로 처리합니다. 한 상품 화면에 함께 찍히는 판매가, 취소선 정가, 쿠폰적용가, 카드결제 할인가를 서로 다른 필드로 나누고, 스마일배송·스타배송 여부와 '무료배송 (1.5만원 이상 구매 시)' 같은 무료배송 기준도 숫자(15,000)로 바꿔 줍니다. G마켓 판매자가 ESM PLUS에서 처리하는 상품·주문 업무와는 연결되지 않습니다. 비회원 손님에게 열리는 상품 정보를 가져오는 용도입니다.

엔드포인트

endpoint무엇이 반환되는가필수
search키워드 검색. 행마다 상품번호, 상품명, 판매가, 취소선 정가와 할인율, 브랜드, 판매자명과 등급 배지(파워딜러 등), 공식스토어 여부, 배송비, 스마일배송·스타배송 표시, 검색 색인 기준 평점·리뷰 수·구매 수, 카테고리 코드가 들어 있습니다. 파워클릭 같은 광고 자리는 기본으로 빼고 개수만 `sponsored_dropped`로 알려 줍니다. 랭킹순·판매인기순·신규상품순·낮은 가격순·높은 가격순, 원화 가격대, 50페이지까지.query
product/detail상품 한 건: 판매가, 정가, 쿠폰적용가와 적용된 쿠폰, 카드결제 할인가, 단위가격, 최대 적립 포인트, 재고 여부와 구매 제한, 평점·리뷰·문의·구매 수, 판매자, 스마일배송·스타배송, 배송비와 무료배송 기준 금액, 도착 예정, 제주·도서산간 추가 배송비, 'G마켓 최저가' 표시와 같은 상품을 파는 판매자 수, 옵션별 추가금액과 재고, 상품정보제공고시, 카테고리 코드. `product_id`(상품번호)나 상품 URL 중 하나로 조회합니다.모두 선택
product/reviews프리미엄 리뷰(대개 사진 포함)와 일반 리뷰를 페이지당 10개씩: 별점, 제목, 본문, G마켓이 가린 작성자 id, 작성일, 구매 옵션, 사진. 프리미엄은 인기순·최신순을 고를 수 있고 일반 리뷰는 항상 최신순입니다. `product_id`나 상품 URL로 조회합니다.모두 선택
search/suggest입력 중인 검색어에 대한 G마켓 자동완성 최대 10개와 관련 브랜드. '갤럭시'를 넣으면 갤럭시핏3, 갤럭시워치, 갤럭시탭 등이 나옵니다.query

호출마다 크레딧이 차감됩니다. 실패하거나 차단된 호출은 무료입니다.

동작하는 예제

1페이지에서 일반 상품 60개와 함께 광고 자리 91개가 나왔고, 광고는 결과에서 빼고 개수만 남겼습니다. 가격대는 G마켓 자체 필터로 보낸 뒤 돌아온 행을 한 번 더 확인하는데, 이번에 범위를 벗어난 행은 0개였습니다. 묶음 라면처럼 판매자마다 배송비가 다른 상품은 1번 행처럼 0원인 곳과 8번 행처럼 3,000원인 곳이 섞이므로, 가격 비교에는 `price`에 `shipping_fee`를 더한 값을 쓰세요.

요청
curl -X POST https://api.reefapi.com/gmarket/v1/search \
  -H "x-api-key: 내_API_키" \
  -H "content-type: application/json" \
  -d '{"query": "신라면", "price_min": 10000, "price_max": 30000}'
응답 (요약)
{
  "ok": true,
  "data": {
    "results": [
      {
        "position": 1,
        "product_id": "4529675501",
        "title": "농심 신라면 5입X4개",
        "price": 21900,
        "currency": "KRW",
        "list_price": null,
        "brand": "농심",
        "seller": { "name": "농심-스타배송", "grades": ["파워딜러"], "is_official_store": true },
        "shipping_fee": 0,
        "free_shipping": true,
        "smile_delivery": true,
        "delivery_badge": "star_delivery",
        "search_index_rating": 4.8,
        "search_index_review_count": 4743,
        "search_index_purchase_count": 13744,
        "section": "인기 상품이에요",
        "is_sponsored": false
      },
      ...
      {
        "position": 8,
        "product_id": "4323709821",
        "title": "농심 신라면 선물용 20개입/넉넉한 유통기한X오늘발송",
        "price": 16100,
        "currency": "KRW",
        "seller": { "name": "태풍몰", "grades": ["파워딜러", "고객만족우수"], "is_official_store": false },
        "shipping_fee": 3000,
        "free_shipping": false,
        "smile_delivery": false,
        "section": "일반상품",
        ...
      },
      ...
    ],
    "count": 60,
    "sponsored_dropped": 91,
    "total_results": 8765,
    "total_pages": 50,
    "applied_price_range": { "min": 10000.0, "max": 30000.0 },
    "dropped_outside_price_range": 0,
    "keyword_matches_on_page": 60,
    "page_overlap_expected": true
  },
  "meta": { "record_count": 60, "cache_hit": false, "mode": "live" }
}

G마켓 크롤링에서 오류 없이 틀리는 곳들

G마켓은 검색어에 맞는 상품이 하나도 없어도 빈 페이지를 주지 않습니다. 아무 뜻 없는 검색어에도 '인기 상품이에요' 같은 상관없는 상품 65~69개를 채우고, 전체 개수도 0이 아니라 531~8,237 같은 숫자로 표시하며, '검색 결과 없음'이라는 표시도 없습니다. 이 API는 페이지 안 어느 상품명에도 검색어 단어가 없으면 결과를 비우고 `fallback_results_dropped`로 개수만 알려 줍니다. 저장해 둔 29개 페이지로 기준을 맞췄을 때 무의미한 검색어 8개는 모두 비워졌고, 실제 검색어와 '노투북'·'샴프' 같은 오타 21개는 하나도 비워지지 않았습니다.

가격순 정렬은 사실상 다른 검색입니다. 낮은 가격순·높은 가격순을 고르면 G마켓은 훨씬 넓은 범위에서 상품을 찾아(샴푸 16,642건 → 272,022건), 노트북을 낮은 가격순으로 보면 첫 줄이 노트북 가방입니다. 게다가 가격순에서는 가격대 필터를 무시해서 60행 중 범위 안에 든 상품이 0개였습니다. 그래서 가격순과 가격대를 함께 보내면 INVALID_PARAM으로 거절하고, 가격순 응답에는 상품명에 검색어가 들어간 행 수(`keyword_matches_on_page`)를 같이 돌려줍니다.

차단 쪽도 언제든 바뀝니다. 2026년 10월 20일에는 G마켓의 차단 기준이 바뀌면서 한국 시간 오전 10시쯤부터 검색과 상세 호출이 모두 막혔고, 같은 날 저녁 8시쯤 수정본을 배포한 뒤 연속 5번 정상 응답(평균 1.6초)을 확인했습니다. 그동안 실패한 호출은 과금되지 않았습니다.

지마켓 가격 추적에서 가장 메우기 어려운 것은 빠진 날짜입니다. 위의 10월 20일처럼 호출이 실패한 하루가 생기면 그날 가격은 뒤늦게 받을 길이 없으니, 실패한 호출은 그날 안에 다시 시도하도록 짜 두세요.

제한과 솔직한 메모

  • G마켓이 제공하는 공식 API가 아닙니다. G마켓과 제휴하거나 계약한 사이도 아니며, 로그인 없이 열리는 상품 페이지만 봅니다.
  • 옥션(auction.co.kr)은 이 API 범위 밖입니다. 옥션 상품 URL을 넣으면 INVALID_PARAM으로 거절됩니다.
  • 2026년 10월 25일 측정에서 `product/reviews`의 `premium_count`가 0으로 나왔습니다. 같은 응답에 프리미엄 리뷰 10개와 `total_pages` 897이 함께 들어 있었고, 다른 상품(128페이지)에서도 똑같았습니다. 프리미엄 리뷰 수는 당분간 `total_pages`로 가늠하세요. `average_rating`은 상품 상세의 평점(4.76)과 같았습니다.
  • 랭킹순·판매인기순·신규상품순에서는 2페이지에 1페이지 상품이 다시 나옵니다. 측정에서 2페이지 60행 중 30~58행이 1페이지와 겹쳤고, 세션을 유지해도 달라지지 않았습니다. 낮은 가격순은 1~3페이지가 서로 겹치지 않았습니다. 응답의 `page_overlap_expected`가 이 상황을 알려 줍니다.
  • 가격순은 G마켓 자체 순서라 화면 가격 기준으로 엄격히 정렬되지는 않습니다(이웃한 59쌍 중 54쌍만 순서대로).
  • 검색 행의 평점·리뷰 수·구매 수는 검색 색인 값이라 상품 상세와 조금 다를 수 있습니다(20개 중 3개에서 리뷰 수 차이). 검색 행에는 쿠폰적용가가 없고, 쿠폰적용가는 `product/detail`에서만 나옵니다.
  • 카테고리 이름은 없고 대·중·소 카테고리 코드만 나옵니다. 판매자 평점과 대부분 옵션의 재고 수량은 비로그인 화면에 없어 null입니다. GTIN·모델 번호는 따로 없고, 상품정보제공고시에 적힌 문구('상세설명 참조' 등)가 그대로 옵니다. 상품 문의와 답변은 제공하지 않습니다.
  • 회원 혜택은 적립 포인트(`member_extra_reward`)로만 들어 있고, 멤버십 가격을 따로 계산해 넣지 않습니다.