2026년 10월 7일 기준으로 Shifter는 Oxylabs와 Bright Data보다 많은, 가장 큰 규모의 실시간 미국 IP 풀을 보유하고 있으며, 비용은 그 일부에 불과합니다.Shifter는 이제 가장 많은 미국 라이브 IP 풀을 보유하고 있습니다

벤치마크 보기

지식

Google Shopping API가 현대 전자상거래 인텔리전스를 구동하는 방법

Google Shopping은 각 시장에서 어떤 판매자가 어떤 가격에 제품을 제공하는지 보여줍니다. 전자상거래 팀이 이 데이터를 가격 책정 및 상품 구성 결정으로 전환하는 방법입니다.

Priya Nair

2026년 10월 14일 · 7 분 소요

쇼핑객이 Google에서 제품을 검색하면 쇼핑 결과는 시장의 실시간 스냅샷을 보여준다. 어떤 판매자가 그 제품을 판매하는지, 어떤 가격에, 어떤 배송 조건으로, 그 쇼핑객이 있는 위치에서 보이는 그대로다. 전자상거래 팀에게 이 스냅샷은 보통 수십 번의 개별 크롤링이 필요한 질문들에 답을 준다. 누가 우리보다 낮은 가격을 매기는지, 어떤 제품에서, 어떤 시장에서, 얼마나 차이 나는지.

Google Shopping API는 이 스냅샷을 일정에 따라 조회할 수 있는 구조화된 데이터로 바꿔준다. 이 가이드는 팀들이 이를 어떤 용도로 사용하는지, 신뢰할 수 있는 수치를 얻기 위해 어떻게 수집해야 하는지, 그리고 검색 결과를 가격 분석 뷰로 바꾸는 간단한 코드를 다룬다. 이는 가격 인텔리전스라는 더 넓은 실무의 일부이며, 쇼핑 데이터는 그중에서도 가장 효율적인 입력값 중 하나다.

쇼핑 데이터가 소매업체 크롤링과 다른 이유

경쟁사 가격을 추적하는 전통적인 방법은 각 소매업체의 제품 페이지를 크롤링하는 것이다. 이 방식은 작동은 하지만 확장성이 떨어진다. 소매업체마다 각각의 수집기, 각각의 파서, 각각의 제품 매칭 로직이 필요하다. 쇼핑 결과는 이 모델을 뒤집는다:

  • 하나의 쿼리가 많은 판매자를 아우른다. 한 번의 검색으로 Google이 해당 제품에 대해 나열하는 모든 소매업체의 오퍼가 반환된다.
  • 제품이 이미 그룹화되어 있다. 동일한 제품에 대한 오퍼들이 함께 표시되므로, 여러 스토어 간 제품을 매칭하는 수고가 크게 줄어든다.
  • 쇼핑객의 시점을 보여준다. 결과는 검색의 시장과 언어를 반영하며, 어떤 판매자가 어떤 순서로 나타나는지까지 포함한다. 이것이 실제로 클릭을 유발하는 요소다.

단점은 커버리지다. 쇼핑 결과는 거기에 등록된 소매업체만 보여줄 뿐 시장의 모든 판매자를 보여주지 않으며, 표시되는 가격은 쿠폰 적용 후나 결제 시점의 가격과 다를 수 있는 등록 가격이다. 전체 카탈로그 추적을 위해서는 여전히 소매업체 크롤링이 필요하지만, 핵심 제품에 대한 시장 전반의 뷰를 원한다면 쇼핑 데이터가 더 빠르고 저렴한 경우가 많다. 실시간 경쟁 가격 피드 구축 가이드에서는 두 방식을 결합하는 방법을 다룬다.

팀들이 이를 사용하는 용도

질문데이터가 보여주는 것
우리 가격이 경쟁력 있는가?각 제품에 대한 가격 순위와 최저가 판매자와의 격차
누가 우리보다 낮은 가격을 매기는가?어떤 판매자가 우리보다 낮은지, 얼마나 자주, 어떤 제품에서
이 제품의 경쟁이 얼마나 치열한가?판매자 수와 가격 분산 정도
경쟁사가 프로모션을 진행 중인가?한 판매자의 여러 제품에서 갑작스러운 가격 하락
시장마다 어떻게 다른가?각 국가에서 동일 제품의 판매자와 가격
리셀러가 가격 정책을 위반하고 있는가?공인 판매자가 최저광고가격 이하로 판매하는 경우

마지막 용도는 가격 책정만큼이나 브랜드 보호와도 관련이 있다. 제조사는 모든 리셀러를 크롤링하지 않고도 쇼핑 데이터를 이용해 비인가 판매자와 최저가 위반을 찾아낸다.

제대로 수집하기

쇼핑 결과는 누가 요청하는지에 따라 달라지므로, 양보다 일관된 수집 방식이 더 중요하다.

  1. 위치와 언어를 고정한다. 결과는 국가별로, 때로는 도시별로 달라진다. 매번 동일한 위치와 언어 설정을 사용하지 않으면 실행 간 비교가 서로 다른 시장을 섞어버리게 된다.
  2. 안정적인 쿼리를 사용한다. 매번 동일한 제품 용어로 검색한다. 가급적 제품명과 모델 번호를 사용하면 동일한 리스팅이 반환된다.
  3. 시장에 맞는 주기로 수집한다. 온라인 가격에 대한 연구에 따르면 주간 수집으로 대형 소매업체의 정기적인 가격 변동 대부분을 포착할 수 있지만, 변화가 빠른 카테고리와 프로모션은 일일 점검이 필요하다. 온라인 가격이 얼마나 빨리 변하는지에 대한 연구에서 관련 근거를 다룬다.
  4. 원본 결과를 보관한다. 각 실행의 전체 응답을 시간 및 설정 정보와 함께 저장하면 나중에 결과를 다시 확인할 수 있다.
  5. 비교 전에 가격을 정규화한다. 통화, 소수점 형식, 세금 포함 여부는 시장마다 다르다. 여러 로케일에서 가격, 숫자, 날짜 정규화하기 가이드에서 파싱 방법을 다룬다.

자체 서버에서 대규모로 Google 검색을 실행하면 금방 차단되거나 일관성 없는 결과를 마주하게 된다. 그래서 대부분의 팀은 이를 위해 설계된 API를 사용한다. Shifter의 SERP API는 설정한 위치와 언어로 Google Shopping 결과를 구조화된 JSON으로 반환하므로, 작업은 수집이 아닌 분석 단계부터 시작할 수 있다.

결과에서 가격 뷰로

각 리스팅의 제품, 판매자, 가격이 간단한 레코드로 매핑되면, 몇 줄의 코드만으로 가격 책정 팀이 실제로 필요로 하는 뷰를 만들 수 있다. 아래 모듈은 한 번의 검색에 대한 요청 매개변수를 구성하고, 한 실행의 오퍼들을 제품별 요약으로 변환한다. 최저가 판매자, 중간값 가격, 가격 분산의 폭, 그리고 당신의 스토어가 어디에 위치하는지를 보여준다.

from collections import defaultdict
from statistics import median


def shopping_params(query, location, country, language="en", api_key="YOUR_API_KEY"):
    """One Google Shopping search, as seen by a shopper in `location`."""
    return {"engine": "google_shopping", "api_key": api_key, "q": query,
            "location": location, "gl": country, "hl": language}


def market_view(offers, my_seller):
    """offers: [{"product": key, "seller": name, "price": float}] from one search run.

    For each product: the cheapest seller, the median price, how wide the spread
    is, and where `my_seller` ranks on price.
    """
    by_product = defaultdict(list)
    for o in offers:
        by_product[o["product"]].append(o)
    report = {}
    for product, rows in by_product.items():
        rows.sort(key=lambda o: o["price"])
        prices = [o["price"] for o in rows]
        mine = next((i for i, o in enumerate(rows) if o["seller"] == my_seller), None)
        report[product] = {
            "sellers": len(rows),
            "cheapest": f"{rows[0]['seller']} {prices[0]:.2f}",
            "median": round(median(prices), 2),
            "spread_pct": round(100 * (prices[-1] - prices[0]) / prices[0], 1),
            "my_rank": None if mine is None else mine + 1,
            "gap_to_cheapest_pct": None if mine is None
            else round(100 * (rows[mine]["price"] - prices[0]) / prices[0], 1),
        }
    return report

몇 가지 예시 오퍼에 대해 실행한 결과:

from shopping import market_view

offers = [   # illustrative results from one search run, mapped into the offer shape
    {"product": "air fryer 6qt", "seller": "Store A", "price": 89.99},
    {"product": "air fryer 6qt", "seller": "Our Store", "price": 99.00},
    {"product": "air fryer 6qt", "seller": "Store C", "price": 119.95},
    {"product": "blender 1.5l", "seller": "Our Store", "price": 54.00},
    {"product": "blender 1.5l", "seller": "Store B", "price": 59.99},
]
for product, view in market_view(offers, my_seller="Our Store").items():
    print(product, view)
air fryer 6qt {'sellers': 3, 'cheapest': 'Store A 89.99', 'median': 99.0, 'spread_pct': 33.3, 'my_rank': 2, 'gap_to_cheapest_pct': 10.0}
blender 1.5l {'sellers': 2, 'cheapest': 'Our Store 54.00', 'median': 57.0, 'spread_pct': 11.1, 'my_rank': 1, 'gap_to_cheapest_pct': 0.0}

에어프라이어는 경쟁이 치열하고 가격 분산이 큰 제품으로, Our Store는 2위에 위치하며 최저가 판매자보다 10% 높다. 블렌더는 경쟁이 적은 제품으로 Our Store가 이미 최저가다. 매일 동일한 리포트를 실행하면, 새로운 판매자가 우리보다 낮은 가격을 매기거나 가격 분산이 갑자기 넓어지는 것과 같은 변화가 행동을 취할 만한 신호가 된다.

신호를 결정으로 전환하기

  • 이미 가시성이 있는 곳에서 가격을 조정한다. 1위나 2위를 차지한 제품은 이미 가격 경쟁력이 있으며, 마진을 회복할 여지가 있을 수 있다. 꼴찌인 제품은 가격 변경이 가장 많은 트래픽을 움직이는 곳이다.
  • 최저가만이 아니라 분산 폭을 주목한다. 분산이 넓다는 것은 대체로 가격 책정의 여지가 있는 시장을 뜻하며, 분산이 좁다는 것은 작은 차이가 중요한 커머디티 시장을 뜻한다.
  • 프로모션과 가격 재조정을 구분한다. 일주일 만에 되돌아오는 경쟁사의 가격 하락은 프로모션이고, 유지되는 하락은 새로운 가격이다. 경쟁사 프로모션 및 할인 주기 추적하기 가이드에서 이를 구분하는 방법을 보여준다.
  • 확장 전에 시장을 비교한다. 새로운 국가에서의 판매자 수와 가격은 그곳에 리스팅하기 전에 경쟁이 얼마나 치열한지를 보여준다.

유의해야 할 한계

  • 모든 판매자가 Google Shopping에 등록하는 것은 아니다. 이 데이터는 보이는 시장을 보여줄 뿐, 전체 시장을 보여주지는 않는다.
  • 등록된 가격이 항상 최종 가격은 아니다. 배송비, 세금, 쿠폰, 회원 가격이 쇼핑객이 실제로 지불하는 금액을 바꿀 수 있다.
  • 동일한 검색이라도 결과가 달라질 수 있다. 한 번의 실행 순서가 아니라 여러 실행에 걸쳐 유지되는 패턴에 근거해 행동한다.
  • 개인화는 제한적이지만 실재한다. 중립적인 설정과 고정된 위치를 사용해 실행 간 비교 가능성을 유지한다.

FAQ

Google Shopping API란 무엇인가?

사용자 대신 Google Shopping 검색을 실행하고 결과를 구조화된 데이터로 반환하는 서비스다. 제품, 그 제품을 제공하는 판매자, 그리고 지정한 위치와 언어에서 보이는 가격이 포함된다.

전자상거래 팀은 Google Shopping 데이터로 무엇을 할 수 있는가?

한 번에 여러 판매자에 걸쳐 경쟁사 가격을 추적하고, 자사 가격의 순위를 확인하고, 프로모션과 신규 판매자를 포착하고, 확장 전에 시장을 비교하고, 리셀러를 최저광고가격과 대조해 확인할 수 있다.

Google Shopping 결과는 얼마나 자주 수집해야 하는가?

많은 카테고리에서는 주간 수집으로 충분하며, 변화가 빠른 카테고리, 프로모션 기간, 성수기에는 일일 수집이 필요하다. 실행 간 비교가 가능하도록 위치, 언어, 쿼리를 고정한다.

Google Shopping은 모든 판매자의 가격을 보여주는가?

아니다. 거기에 제품을 등록한 소매업체만 보여주며, 표시되는 가격은 배송비, 쿠폰, 결제 시점의 가격과 다를 수 있는 등록 가격이다. 완전한 커버리지가 필요한 경우에는 소매업체 직접 크롤링과 결합한다.

결론

Google Shopping 결과는 제품 시장을 보는 가장 효율적인 뷰 중 하나다. 많은 판매자가 이미 그룹화되어, 현지 쇼핑객이 보는 그대로 표시된다. 위치, 언어, 쿼리를 고정해 수집하고, 원본 결과를 보관하고, 가격을 정규화하고, 각 실행을 순위, 분산, 최저가와의 격차로 요약한다. 시간을 두고 지켜보면 이 몇 가지 수치만으로도 전자상거래 팀은 어디에서 가격을 움직이고 어디에서는 그대로 둘지 알 수 있다. 더 폭넓은 전자상거래 데이터 요구사항은 전자상거래 솔루션을 참고하라.

시작할 준비가 되셨나요?

205M개 이상의 IP, 195개 이상의 국가를 지원하는 Shifter의 레지덴셜 프록시를 $0.10/GB부터 이용해보세요.

시작하기