[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-ko-tiktok-shop-sangpum-data-sujip":3},{"success":4,"payload":5,"related":83,"errors":159},true,{"id":6,"slug":7,"title":8,"excerpt":9,"body_html":10,"meta_title":11,"meta_description":12,"canonical_url":13,"canonical_override":14,"og_title":15,"og_description":16,"og_image_url":17,"faq_json":18,"key_takeaways":34,"allow_index":4,"noindex_google_only":40,"allow_follow":4,"published_at":41,"updated_at":42,"content_updated_at":43,"featured_image_url":44,"featured_image_alt":45,"card_image_url":46,"reading_time_minutes":47,"author":48,"categories":52,"tags":59,"alternates":75,"locale_paths":81,"views":82},215,"tiktok-shop-sangpum-data-sujip","시장 조사를 위한 TikTok Shop 상품 데이터 수집","공식 경로부터 살펴봅니다. TikTok Shop Partner API와 Research API가 실제로 무엇을 제공하는지, 언제 라이선스 데이터가 나은지, 그리고 공개 상품 페이지를 해당 시장에서 천천히 읽는 방법을 정리했습니다.","\u003Cp>가격이나 상품 구성 조사를 위해 TikTok Shop 상품 데이터가 필요하다면 공식 경로부터 확인해야 합니다. TikTok Shop Partner API는 카탈로그와 주문 데이터를 전부 제공하지만, 내 앱을 승인한 상점에 한해서입니다. TikTok Research API는 EU 상점의 상품, 가격, 판매 수량 필드를 반환하지만, 승인된 비상업 연구자에게만 열려 있습니다. 경쟁사를 분석하는 상업 팀은 대부분 분석 업체의 라이선스 데이터를 쓰거나, 공개 상품 페이지가 이미 게시하는 구조화 데이터를 조사 대상 시장의 IP를 거쳐 천천히, 절제해서 읽는 수집기를 운영하게 됩니다.\u003C\u002Fp>\n\n\u003Cp>이 가이드는 시장 조사를 위해 작성되었습니다. TikTok과 제휴하거나 TikTok의 보증을 받은 글이 아니며, TikTok의 서명된 비공개 내부 API는 다루지 않습니다.\u003C\u002Fp>\n\n\u003Ch2>팀이 실제로 필요로 하는 TikTok Shop 상품 데이터\u003C\u002Fh2>\n\n\u003Cp>대부분의 조사 질문은 약 여덟 개 필드로 귀결됩니다. 상품명, 현재 가격, 정가(그리고 이에 따른 할인율), 판매 수량, 상점, 평점과 리뷰 수, 카테고리, 해당 상품을 홍보하는 크리에이터입니다.\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>가격 조사. 같은 상품이나 동등 상품을 파는 판매자 간에 현재 가격, 정가, 통화, 진행 중인 프로모션을 비교합니다. 일관된 타임스탬프와 고정된 시장이 필요합니다. 영국 스토어프런트의 가격과 독일의 가격은 노이즈가 섞인 하나의 관측값이 아니라 서로 다른 관측값입니다.\u003C\u002Fli>\n\u003Cli>상품 구성 분석. 상점이 어떤 카테고리를 다루는지, SKU와 옵션을 몇 개나 올렸는지, 카테고리 내에서 가격이 어디쯤인지를 봅니다. 보통 주간 스냅샷이면 충분합니다.\u003C\u002Fli>\n\u003Cli>추세 탐지. 카테고리별 판매 수량과 리뷰 수의 시간에 따른 변화입니다. 절대값보다 기울기가 중요한데, 표시되는 판매 수치가 부정확하다는 점(아래에서 설명)을 생각하면 다행인 일입니다.\u003C\u002Fli>\n\u003Cli>크리에이터·제휴 매핑. 어떤 크리에이터가 상품을 링크하는지입니다. 상품이 아니라 사람에 관한 정보라서 법적으로 가장 무게가 큰 필드입니다.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>다른 마켓플레이스용 가격 추적기를 만들어 봤다면 구조는 익숙할 겁니다. 파이프라인 측면은 \u003Ca href=\"\u002Fko\u002Fblog\u002Fgyeongjaengsa-gagyeok-monitoring-jadong\">경쟁사 가격 자동 모니터링\u003C\u002Fa>과 \u003Ca href=\"\u002Fko\u002Fblog\u002Fjieyeok-gagyeok-monitoring\">시장별 가격 추적\u003C\u002Fa> 가이드에서 다룹니다. TikTok Shop이 다른 점은 카탈로그의 상당 부분이 시장과 로그인에 따라 제한된다는 것입니다.\u003C\u002Fp>\n\n\u003Ch2>TikTok Shop 데이터를 얻는 공식 경로\u003C\u002Fh2>\n\n\u003Cp>구조화된 TikTok Shop 데이터를 얻는 정당한 출처는 세 가지이며, 어느 것도 상업 팀에 경쟁사 카탈로그를 그냥 넘겨주지는 않습니다. 그래도 먼저 확인할 가치가 있습니다. 앞의 두 가지는 자격만 되면 무료이고, 세 번째는 직접 만드는 것보다 저렴한 경우가 많습니다.\u003C\u002Fp>\n\n\u003Ch3>TikTok Shop Partner Center와 TTS API\u003C\u002Fh3>\n\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpartner.tiktokshop.com\u002Fdocv2\u002Fpage\u002Ftts-api-concepts-overview\" rel=\"noopener noreferrer\">TikTok Shop Partner Center\u003C\u002Fa>는 개발자가 TikTok Shop Open Platform용 앱을 등록하는 곳입니다. TikTok의 공식 개요는 TTS API가 \"카탈로그, 주문, 배송, 결제 등 승인된 TikTok Shop 데이터\"에 접근할 수 있게 해 준다고 설명합니다. 카테고리에는 Product, Order, Fulfillment, Return &amp; Refund, Logistics, Promotion, Finance, Seller, Authorization, Events, Data Reconciliation, Supply Chain API가 있습니다.\u003C\u002Fp>\n\n\u003Cp>핵심은 \u003Cem>승인된\u003C\u002Fem>이라는 단어입니다. 문서에는 세 가지 승인 유형이 나옵니다. 판매자(상점이 내 앱에 접근 권한을 부여), 크리에이터, 파트너입니다. 모두 데이터 소유자의 동의에 달려 있습니다. 판매자이거나 판매자를 고객으로 둔 툴 업체라면 이보다 좋은 데이터는 없습니다. 해당 상점의 정확한 가격, 실제 재고, 실제 주문 수입니다. 하지만 내 앱을 연결하지 않은 상점을 들여다보는 수단은 아닙니다. 문서에는 \u003Ca href=\"https:\u002F\u002Fpartner.tiktokshop.com\u002Fdocv2\u002Fpage\u002Fregions-and-languages\" rel=\"noopener noreferrer\">지원 지역과 로케일 목록\u003C\u002Fa>도 있으며, 시장이 열리면서 지원 범위가 바뀐다는 안내가 붙어 있습니다.\u003C\u002Fp>\n\n\u003Ch3>EU 상점 데이터가 포함된 TikTok Research API\u003C\u002Fh3>\n\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdevelopers.tiktok.com\u002Fproducts\u002Fresearch-api\" rel=\"noopener noreferrer\">TikTok Research API\u003C\u002Fa>는 주로 공개 동영상, 댓글, 계정 데이터로 알려져 있습니다. 하지만 많은 사람이 놓치는 TikTok Shop 엔드포인트도 세 개 있습니다. \u003Ca href=\"https:\u002F\u002Fdevelopers.tiktok.com\u002Fdocs\u002Fen\u002Fresearch-api-specs-query-tiktok-shop-info\" rel=\"noopener noreferrer\">상점 정보\u003C\u002Fa> 엔드포인트는 상점 평점, 리뷰 수, 판매 수량, 성과 값을 반환합니다. \u003Ca href=\"https:\u002F\u002Fdevelopers.tiktok.com\u002Fdocs\u002Fen\u002Fresearch-api-specs-query-tiktok-shop-products\" rel=\"noopener noreferrer\">상점 상품\u003C\u002Fa> 엔드포인트는 상품명, 가격, 설명, 판매 수량, 리뷰 수, 1~5점 별점 분포를 반환합니다. \u003Ca href=\"https:\u002F\u002Fdevelopers.tiktok.com\u002Fdocs\u002Fen\u002Fresearch-api-specs-query-tiktok-shop-reviews\" rel=\"noopener noreferrer\">상품 리뷰\u003C\u002Fa> 엔드포인트는 리뷰 본문, 평점, 타임스탬프를 반환합니다. 세 엔드포인트 모두 EU에서 판매되는 상점과 상품으로 범위가 제한되고, 호출당 최대 10개 결과를 반환합니다.\u003C\u002Fp>\n\n\u003Cp>문제는 자격 요건입니다. 접근 권한은 미국, EEA, 영국, 캐나다, 스위스의 학술 기관, EU의 비영리 연구 기관, 그리고 청소년 안전을 연구하는 일부 브라질 기관에 주어집니다. 신청자는 \"상업적 이해관계로부터 독립적\"이어야 합니다. \u003Ca href=\"https:\u002F\u002Fdevelopers.tiktok.com\u002Fdocs\u002Fen\u002Fresearch-api-faq\" rel=\"noopener noreferrer\">Research API FAQ\u003C\u002Fa>에 따르면 기본 할당량은 하루 1,000건입니다. EU 소셜 커머스를 연구하는 대학 연구팀이라면 신청할 만하지만, 브랜드의 가격 담당 팀은 자격이 없으며 연구 파트너의 접근 권한을 빌려 써서도 안 됩니다.\u003C\u002Fp>\n\n\u003Ch3>분석 업체의 라이선스 데이터\u003C\u002Fh3>\n\n\u003Cp>상품 순위, 추정 매출, 크리에이터-상품 연결, 카테고리 추세를 대시보드나 API로 판매하는 TikTok Shop 분석 제품군이 따로 있습니다. 구매 전에 세 가지를 물어보세요. 어느 시장을 다루는가? 매출 수치는 관측값인가, 모델링한 값인가? 데이터를 사내에 재배포할 수 있는가? 숫자의 출처를 밝히지 못하는 업체가 주는 것은 추정치이며, 그렇게 다뤄야 합니다.\u003C\u002Fp>\n\n\u003Ctable>\n\u003Cthead>\u003Ctr>\u003Cth>경로\u003C\u002Fth>\u003Cth>이용 가능 대상\u003C\u002Fth>\u003Cth>제공 범위\u003C\u002Fth>\u003Cth>경쟁사 데이터?\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>TTS API(Partner Center)\u003C\u002Ftd>\u003Ctd>판매자, 그리고 판매자·크리에이터·파트너가 승인한 앱 개발자\u003C\u002Ftd>\u003Ctd>승인된 상점의 전체 카탈로그, 가격, 재고, 주문, 프로모션, 재무\u003C\u002Ftd>\u003Ctd>불가. 내 앱을 연결한 상점만 해당\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Research API, TikTok Shop 엔드포인트\u003C\u002Ftd>\u003Ctd>승인된 비상업 연구자\u003C\u002Ftd>\u003Ctd>EU 상점: 상점 평점과 판매량, 상품 가격과 판매 수량, 리뷰\u003C\u002Ftd>\u003Ctd>가능. 단, 비상업 연구 전용\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>분석 업체\u003C\u002Ftd>\u003Ctd>비용을 내는 누구나\u003C\u002Ftd>\u003Ctd>순위, 추정 매출, 크리에이터 연결, 이력\u003C\u002Ftd>\u003Ctd>가능. 라이선스 범위 내, 정확도는 제각각\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>공개 상품 페이지\u003C\u002Ftd>\u003Ctd>서비스 대상 시장의 누구나\u003C\u002Ftd>\u003Ctd>로그아웃 방문자에게 페이지가 보여 주는 모든 것\u003C\u002Ftd>\u003Ctd>가능. 이용약관과 robots.txt의 제약을 받음\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Ch2>공개 TikTok Shop 페이지: 오픈 웹에 있는 것\u003C\u002Fh2>\n\n\u003Cp>TikTok Shop은 주로 앱 안에서 이용하는 서비스지만, \u003Ccode>shop.tiktok.com\u003C\u002Fcode>에 시장별로 구성된 브라우저 스토어프런트가 있고 상품 상세 페이지는 \u003Ccode>\u002Fpdp\u002F\u003C\u002Fcode> 경로 아래에 있습니다. 어떤 시장이 보이는지는 접속 위치에 따라 달라집니다. 독일 서버에서 \u003Ccode>www.tiktok.com\u002Fshop\u002Fpdp\u002F…\u003C\u002Fcode> URL을 요청하자 \u003Ccode>shop.tiktok.com\u002Fde\u002Fpdp\u002F…\u003C\u002Fcode>로 301 리다이렉트가 돌아왔습니다. 같은 서버에서 경로만 있는 \u003Ccode>www.tiktok.com\u002Fshop\u003C\u002Fcode>을 요청하면 \u003Ccode>shop.tiktok.com\u002Fus\u003C\u002Fcode>로 리다이렉트되었습니다.\u003C\u002Fp>\n\n\u003Cp>시장 범위를 보면, TikTok 뉴스룸은 \u003Ca href=\"https:\u002F\u002Fnewsroom.tiktok.com\u002Ftiktok-shop-expands-across-europe?lang=en-150\" rel=\"noopener noreferrer\">오스트리아, 벨기에, 네덜란드, 폴란드가 2026년 6월 15일에 출시된다\u003C\u002Fa>고 발표했으며, 이로써 프랑스, 독일, 아일랜드, 이탈리아, 스페인, 영국에 합류합니다. Partner Center 지역 목록(2026년 7월 6일 최종 수정)에는 미국, 멕시코, 브라질, 일본, 인도네시아, 말레이시아, 필리핀, 싱가포르, 태국, 베트남도 있습니다. 공식 출처가 있는 시장은 이렇게 20곳입니다. 서드파티 목록에는 더 많은 시장이 나오지만 TikTok 자체 페이지로 확인할 수 없어서 여기서는 제외했습니다.\u003C\u002Fp>\n\n\u003Cp>수집에 관해서는 세 가지가 따라옵니다.\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>지역이 보이는 내용을 결정합니다. 같은 상품이라도 시장마다 가격, 통화, 판매 여부, 판매자가 다를 수 있고, 아예 없을 수도 있습니다. 영국 스토어프런트를 수집하려면 트래픽이 영국에서 나가야 합니다. 이것이 여기서 국가 타기팅이 되는 주거용 IP가 중요한 주된 이유입니다. 예를 들어 \u003Ca href=\"\u002Fko\u002Fproxy\u002Fresidential\">주거용 프록시\u003C\u002Fa>에서 \u003Ccode>USERNAME-country-GB\u003C\u002Fcode>를 쓰는 식입니다. 위장과는 아무 관련이 없습니다.\u003C\u002Fli>\n\u003Cli>페이지가 JavaScript에 크게 의존합니다. 스토어프런트는 클라이언트 렌더링 앱입니다. \u003Ccode>shop.tiktok.com\u003C\u002Fcode>의 응답 헤더에는 ByteDance의 오픈소스 웹 프레임워크를 뜻하는 \u003Ccode>x-processed-by: Modern.js\u003C\u002Fcode>가 포함되어 있습니다. 실제 브라우저가 필요하다고 보세요.\u003C\u002Fli>\n\u003Cli>중간 확인 페이지가 있습니다. 저희 데이터센터 테스트 서버에서는 \u003Ccode>shop.tiktok.com\u002Fde\u003C\u002Fcode>와 \u003Ccode>shop.tiktok.com\u002Frobots.txt\u003C\u002Fcode> 모두 CAPTCHA 스크립트를 불러오는 \"Security Check\"라는 제목의 HTML 페이지를 반환했습니다. 저희는 거기서 멈췄습니다. 이 챌린지를 풀거나 우회하는 것은 이 글의 범위가 아니며, 수집기가 반복해서 이 페이지를 만난다면 속도를 늦추거나 중단하는 것이 올바른 대응입니다.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>상품 페이지에서 데이터가 있는 위치\u003C\u002Fh2>\n\n\u003Cp>요즘 스토어프런트에서 원하는 필드가 깔끔한 HTML에 들어 있는 경우는 드뭅니다. 보통 세 곳 중 하나에 있으며, 안정성이 높은 순서는 다음과 같습니다. \u003Ca href=\"https:\u002F\u002Fschema.org\u002FProduct\" rel=\"noopener noreferrer\">schema.org Product\u002FOffer\u003C\u002Fa>를 따르는 JSON-LD 블록(검색 엔진용으로 게시됨, \u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fproduct\" rel=\"noopener noreferrer\">Google 상품 마크업 문서\u003C\u002Fa> 참고), Open Graph와 상품 메타 태그, 그리고 프레임워크에 내장된 하이드레이션 상태입니다. 하이드레이션 상태는 앱이 추가 왕복 없이 렌더링하려고 \u003Ccode>&lt;script&gt;\u003C\u002Fcode> 태그 안에 넣어 둔 큰 JSON 덩어리입니다.\u003C\u002Fp>\n\n\u003Cp>요령은 페이지가 이미 보내 준 것을 읽는 것입니다. JSON-LD와 메타 태그는 문서화된 형식이므로 그대로 파싱합니다. 하이드레이션 상태는 JSON 덩어리 목록(ID와 크기)을 먼저 정리하고, 브라우저에서 하나를 직접 살펴본 다음, 필요한 필드만 매핑합니다. 범위에서 명시적으로 제외하는 것이 두 가지 있습니다. 앱이 뒤에서 쓰는 비공개 XHR 엔드포인트를 호출하는 것, 그리고 그 서명이나 토큰 파라미터를 재현하는 것입니다. 서명을 위조하는 것은 수집이 아니라 우회입니다. 저희 테스트 서버에서는 상품 페이지를 불러오지 못했으므로(위의 중간 확인 페이지 참고) TikTok Shop 페이지에 JSON-LD가 있다고 단정하지 않겠습니다. 아래 코드는 JSON-LD가 있든 없든 똑같이 동작합니다.\u003C\u002Fp>\n\n\u003Ctable>\n\u003Cthead>\u003Ctr>\u003Cth>데이터 항목\u003C\u002Fth>\u003Cth>주로 있는 위치\u003C\u002Fth>\u003Cth>신뢰도\u003C\u002Fth>\u003Cth>참고\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>상품명\u003C\u002Ftd>\u003Ctd>JSON-LD \u003Ccode>name\u003C\u002Fcode>, \u003Ccode>og:title\u003C\u002Fcode>, 하이드레이션 상태\u003C\u002Ftd>\u003Ctd>높음\u003C\u002Ftd>\u003Ctd>시장별로 현지화될 수 있으므로 상품명이 아니라 상품 ID를 키로 쓰세요\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>현재 가격\u003C\u002Ftd>\u003Ctd>JSON-LD \u003Ccode>offers.price\u003C\u002Fcode>, 하이드레이션 상태\u003C\u002Ftd>\u003Ctd>중간\u003C\u002Ftd>\u003Ctd>시장, 옵션, 프로모션에 따라 달라집니다. 통화는 항상 함께 저장하세요\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>정가 \u002F 할인\u003C\u002Ftd>\u003Ctd>하이드레이션 상태, JSON-LD에는 드묾\u003C\u002Ftd>\u003Ctd>중간~낮음\u003C\u002Ftd>\u003Ctd>취소선 가격은 판매자가 정합니다. 할인율은 직접 계산하세요\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>판매 수량\u003C\u002Ftd>\u003Ctd>하이드레이션 상태, 화면 표시 라벨, Research API(EU)\u003C\u002Ftd>\u003Ctd>낮음~중간\u003C\u002Ftd>\u003Ctd>라벨이 축약되는 경우가 많습니다. 감사받은 매출이 아니라 추세로 활용하세요\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>평점, 리뷰 수\u003C\u002Ftd>\u003Ctd>JSON-LD \u003Ccode>aggregateRating\u003C\u002Fcode>, 하이드레이션 상태\u003C\u002Ftd>\u003Ctd>중간\u003C\u002Ftd>\u003Ctd>시장마다 리뷰 집계 방식이 다를 수 있습니다. Research API는 EU에 대해 별점 분포를 제공합니다\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>상점명 \u002F ID\u003C\u002Ftd>\u003Ctd>하이드레이션 상태, 화면의 판매자 영역\u003C\u002Ftd>\u003Ctd>높음\u003C\u002Ftd>\u003Ctd>ID를 저장하세요. 상점명은 바뀝니다\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>카테고리\u003C\u002Ftd>\u003Ctd>breadcrumb JSON-LD, 하이드레이션 상태\u003C\u002Ftd>\u003Ctd>중간\u003C\u002Ftd>\u003Ctd>카테고리 트리는 시장마다 다릅니다. 자체 분류 체계에 매핑하세요\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>옵션 \u002F SKU\u003C\u002Ftd>\u003Ctd>하이드레이션 상태\u003C\u002Ftd>\u003Ctd>중간\u003C\u002Ftd>\u003Ctd>가격 범위로 표시되면 구매자가 실제로 고르는 옵션의 가격이 가려집니다\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>크리에이터 \u002F 제휴 링크\u003C\u002Ftd>\u003Ctd>대부분 앱 안, 일부는 하이드레이션 상태\u003C\u002Ftd>\u003Ctd>웹에서는 낮음\u003C\u002Ftd>\u003Ctd>개인정보입니다. 이 항목은 보통 업체나 파트너 데이터가 낫습니다\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Ch2>절제된 수집 설계\u003C\u002Fh2>\n\n\u003Cp>연구용 수집기는 느리고 정직한 방문자처럼 행동해야 합니다. 한 번에 한 페이지, 고정된 URL 목록, 적극적인 캐싱, 챌린지를 만나면 중단하는 것입니다. TikTok의 약관과 robots 규칙은 다른 사이트보다 한계를 분명히 밝히고 있으니 거기서 시작하세요.\u003C\u002Fp>\n\n\u003Ch3>robots.txt와 약관이 실제로 말하는 것\u003C\u002Fh3>\n\n\u003Cp>\u003Ccode>www.tiktok.com\u002Frobots.txt\u003C\u002Fcode>(2026년 10월 3일 확인)는 모든 사용자 에이전트에 대해 \u003Ccode>\u002Fshop\u002Fview\u002Fproduct\u002F\u003C\u002Fcode>를 차단하고, GPTBot, ClaudeBot, CCBot, PerplexityBot, Bytespider 등 이름이 명시된 크롤러 목록에 대해서는 사이트 전체를 차단합니다. \u003Ccode>\u002Fshop\u002Fpdp\u002F\u003C\u002Fcode>는 언급하지 않으며 Sitemap 줄도 없습니다. \u003Ccode>shop.tiktok.com\u002Frobots.txt\u003C\u002Fcode>는 저희 테스트 서버에서 HTML 챌린지 페이지가 대신 반환되어 읽을 수 없었습니다. 여기에 함정이 있습니다. Python의 \u003Ccode>urllib.robotparser\u003C\u002Fcode>는 HTML 페이지를 \"규칙 없음\", 즉 \"모두 허용\"으로 해석합니다. 아래 코드는 일반 텍스트 200 응답만 신뢰합니다.\u003C\u002Fp>\n\n\u003Cp>약관은 robots.txt보다 엄격합니다. \u003Ca href=\"https:\u002F\u002Fwww.tiktok.com\u002Flegal\u002Fpage\u002Fus\u002Fterms-of-service\u002Fen\" rel=\"noopener noreferrer\">미국 이용약관\u003C\u002Fa>(TikTok USDS Joint Venture LLC와 체결, 2026년 7월 15일 최종 수정)은 \"서면으로 승인된 경우를 제외하고, 어떤 목적이든 자동화된 시스템이나 소프트웨어를 사용해 플랫폼에서\" 데이터를 스크래핑하거나 추출하는 것을 금지합니다. \u003Ca href=\"https:\u002F\u002Fwww.tiktok.com\u002Flegal\u002Fpage\u002Feea\u002Fterms-of-service\u002Fen\" rel=\"noopener noreferrer\">EEA 약관\u003C\u002Fa>도 거의 같은 내용입니다. 로그아웃 방문자에게 구속력이 있는지는 관할에 따라 다르지만, 공식 경로와 라이선스 경로를 우선할 강력한 이유가 됩니다.\u003C\u002Fp>\n\n\u003Ch3>설계 원칙과 그 이유\u003C\u002Fh3>\n\n\u003Col>\n\u003Cli>\u003Cstrong>크롤링이 아니라 알려진 URL 목록에서 시작하세요.\u003C\u002Fstrong> 조사 질문은 특정 상품이나 샘플링한 집합에 관한 것입니다. 검색 페이지와 카테고리 페이지를 크롤링하면 부하와 약관 위반 위험이 쌓이며, 어차피 TikTok의 robots.txt는 \u003Ccode>\u002Fsearch?\u003C\u002Fcode> 경로를 차단합니다.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>실행마다 시장 하나만, 고정해서 쓰세요.\u003C\u002Fstrong> 출구 IP를 국가 타기팅하고 브라우저 로케일과 시간대도 맞춰서, 한 배치의 모든 관측값이 같은 시장이 되도록 하세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>요청 빈도를 낮게 유지하세요.\u003C\u002Fstrong> 상품 수백 개의 일간 가격 스냅샷이라면 시장당 20~40초에 한 페이지면 충분합니다.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>(상품 ID, 시장, 날짜) 단위로 캐시하세요.\u003C\u002Fstrong> 오늘자 영국 관측값이 이미 있다면 다시 가져오지 마세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>챌린지는 중단 신호로 받아들이세요.\u003C\u002Fstrong> 기록하고, 기다리고, 빈도를 낮추세요. 같은 차단을 피하려고 IP를 로테이션하지 마세요.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>로그인하지 마세요.\u003C\u002Fstrong> 로그아웃 방문자에게 보이는 것만 수집하세요. 로그인 상태로 수집하면 자동화가 계정과 그 약관에 묶이고 개인정보에도 손을 대게 됩니다.\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Ch2>Playwright를 활용한 신중한 Python 예제\u003C\u002Fh2>\n\n\u003Cp>아래 스크립트는 국가 타기팅 프록시를 거쳐 Chromium에서 각 상품 URL을 엽니다. 먼저 실제 robots.txt를 확인하고, 200이 아닌 응답이나 \"Security Check\" 제목을 만나면 멈추며, JSON-LD Product 데이터, 몇 가지 메타 태그, 그리고 직접 살펴볼 수 있도록 내장 JSON 덩어리 목록을 추출합니다. 검증할 수 없었기 때문에 TikTok 전용 셀렉터는 쓰지 않으며, 값이 없는 필드는 모두 \u003Ccode>None\u003C\u002Fcode>으로 반환됩니다. 프록시 설정은 \u003Ca href=\"https:\u002F\u002Fplaywright.dev\u002Fpython\u002Fdocs\u002Fnetwork#http-proxy\" rel=\"noopener noreferrer\">Playwright 문서의 프록시 옵션\u003C\u002Fa>을 따릅니다. 추출과 robots 로직은 Playwright 1.55로 로컬 픽스처에 대해 테스트했으며, 실제 TikTok Shop 페이지에서는 실행하지 않았습니다.\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode class=\"language-python\">import json\nimport random\nimport time\nimport urllib.robotparser\nfrom urllib.parse import urlsplit\n\nfrom playwright.sync_api import sync_playwright\n\n# Country is chosen in the proxy username; match locale\u002Ftimezone to it.\nPROXY = {\n    \"server\": \"http:\u002F\u002Fgate.proxyhat.com:8080\",\n    \"username\": \"USERNAME-country-GB\",\n    \"password\": \"PASSWORD\",\n}\nUA_NAME = \"acme-price-research\"  # the token you'd look for in robots.txt groups\n\n# Product URLs you already have (from your own catalogue matching, a partner\n# export, or manual research), not URLs discovered by crawling search pages.\nURLS = [\n    \"https:\u002F\u002Fshop.tiktok.com\u002F...\",  # paste real product URLs as your browser shows them\n]\n\n\ndef robots_verdict(context, url):\n    \"\"\"Return True\u002FFalse from a real robots.txt, or None if we couldn't get one.\"\"\"\n    parts = urlsplit(url)\n    resp = context.request.get(f\"{parts.scheme}:\u002F\u002F{parts.netloc}\u002Frobots.txt\")\n    ctype = resp.headers.get(\"content-type\", \"\")\n    # An HTML challenge page parses as \"no rules\" (= allow everything) in\n    # urllib.robotparser, so only trust a plain-text 200.\n    if resp.status != 200 or \"text\u002Fplain\" not in ctype:\n        return None\n    rp = urllib.robotparser.RobotFileParser()\n    rp.parse(resp.text().splitlines())\n    return rp.can_fetch(UA_NAME, url)\n\n\ndef _types(node):\n    t = node.get(\"@type\", [])\n    return t if isinstance(t, list) else [t]\n\n\ndef extract(page):\n    \"\"\"Read what the page itself publishes: JSON-LD, Open Graph\u002Fproduct meta,\n    and an inventory of embedded JSON blobs for a human to inspect.\"\"\"\n    jsonld = []\n    for raw in page.locator('script[type=\"application\u002Fld+json\"]').all_text_contents():\n        try:\n            data = json.loads(raw)\n        except json.JSONDecodeError:\n            continue\n        nodes = data if isinstance(data, list) else data.get(\"@graph\", [data])\n        jsonld.extend(n for n in nodes if isinstance(n, dict))\n\n    meta = {}\n    for prop in (\"og:title\", \"og:url\", \"product:price:amount\", \"product:price:currency\"):\n        loc = page.locator(f'meta[property=\"{prop}\"]')\n        if loc.count():\n            meta[prop] = loc.first.get_attribute(\"content\")\n\n    blobs = page.evaluate(\n        \"\"\"() =&gt; [...document.querySelectorAll('script[type=\"application\u002Fjson\"]')]\n                 .map(s =&gt; ({id: s.id || null, chars: s.textContent.length}))\"\"\"\n    )\n\n    product = next((n for n in jsonld if \"Product\" in _types(n)), None)\n    record = {\"name\": None, \"price\": None, \"currency\": None,\n              \"availability\": None, \"rating\": None, \"review_count\": None}\n    if product:\n        record[\"name\"] = product.get(\"name\")\n        offers = product.get(\"offers\") or {}\n        if isinstance(offers, list):\n            offers = offers[0] if offers else {}\n        record[\"price\"] = offers.get(\"price\") or offers.get(\"lowPrice\")\n        record[\"currency\"] = offers.get(\"priceCurrency\")\n        record[\"availability\"] = offers.get(\"availability\")\n        agg = product.get(\"aggregateRating\") or {}\n        record[\"rating\"] = agg.get(\"ratingValue\")\n        record[\"review_count\"] = agg.get(\"reviewCount\") or agg.get(\"ratingCount\")\n    return {\"record\": record, \"meta\": meta, \"json_blobs\": blobs,\n            \"has_jsonld_product\": product is not None}\n\n\ndef main():\n    results = []\n    with sync_playwright() as p:\n        browser = p.chromium.launch(proxy=PROXY)\n        context = browser.new_context(locale=\"en-GB\", timezone_id=\"Europe\u002FLondon\")\n        page = context.new_page()\n        for url in URLS:\n            verdict = robots_verdict(context, url)\n            if verdict is not True:\n                results.append({\"url\": url, \"status\": \"skipped\", \"robots\": verdict})\n                continue\n            resp = page.goto(url, wait_until=\"domcontentloaded\", timeout=45_000)\n            status = resp.status if resp else None\n            if status != 200 or page.title().strip().lower() == \"security check\":\n                # Don't try to solve it. Record, slow down, move on.\n                results.append({\"url\": url, \"status\": \"challenge_or_error\", \"http\": status})\n                time.sleep(120)\n                continue\n            data = extract(page)\n            data.update({\"url\": url, \"final_url\": page.url, \"status\": \"ok\",\n                         \"fetched_at\": time.strftime(\"%Y-%m-%dT%H:%M:%SZ\", time.gmtime()),\n                         \"proxy_country\": \"GB\"})\n            results.append(data)\n            time.sleep(random.uniform(20, 40))  # one page at a time, slowly\n        browser.close()\n    print(json.dumps(results, indent=2, ensure_ascii=False))\n\n\nif __name__ == \"__main__\":\n    main()\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>\u003Ccode>has_jsonld_product\u003C\u002Fcode>가 false로 나오면 \u003Ccode>json_blobs\u003C\u002Fcode>를 확인하세요. 일반 브라우저에서 상품 하나를 열어 가격이 들어 있는 덩어리를 찾고, 필요한 두세 개 키에 대해 작고 명시적인 매핑을 작성하세요. 그 키의 위치가 바뀌면 확실히 실패하는 테스트도 추가하세요. JavaScript 측면을 더 넓게 보려면 \u003Ca href=\"\u002Fko\u002Fblog\u002Fjavascript-heavy-website-scraping\">JavaScript 중심 웹사이트 스크래핑\u003C\u002Fa>을 참고하세요.\u003C\u002Fp>\n\n\u003Ch2>데이터 품질 함정\u003C\u002Fh2>\n\n\u003Cp>TikTok Shop 데이터셋은 대부분 수집이 아니라 분석 단계에서 잘못됩니다. 정규화 없이 시장 간 가격을 비교하고, 프로모션 가격을 정가로 읽고, 반올림된 판매 수량을 매출 수치로 취급하는 경우입니다.\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>지역과 통화. 모든 행에 시장, 통화, 출구 국가를 저장하세요. 통화는 관측일 환율로 환산하고, 시장 간 가격을 평균 내지 마세요.\u003C\u002Fli>\n\u003Cli>타임 세일과 프로모션. 짧은 프로모션이 표시 가격을 몇 시간씩 바꿔 놓을 수 있습니다. 매일 같은 시각에 스냅샷을 찍고, 표시 가격과 정가를 모두 기록해 세일을 영구 인하로 착각하지 않도록 하세요.\u003C\u002Fli>\n\u003Cli>판매 수량 반올림. 표시되는 수치는 축약되는 경우가 많고, 페이지 데이터에 정확한 정수가 있더라도 감사받은 숫자가 아니라 플랫폼의 수치입니다. 시간에 따른 차이를 쓰고, 매끄러운 곡선보다 계단 모양을 예상하세요.\u003C\u002Fli>\n\u003Cli>시장별 카탈로그. 한 시장에서 상품이 보이지 않는다고 품절은 아닙니다. 그 시장에서 판매하지 않는 것일 수 있습니다. \"해당 시장 미판매\"와 \"품절\"을 구분해 두세요.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>저희가 다룬 다른 마켓플레이스에서도 같은 문제가 나옵니다. \u003Ca href=\"\u002Fko\u002Fblog\u002Fshein-sukeuraeping-gaideu-2026\">Shein 가격 인텔리전스 가이드\u003C\u002Fa>는 지역별 스토어프런트를, \u003Ca href=\"\u002Fko\u002Fblog\u002Ftemu-sangpum-gagyeok-deiteo-seukeuraeping\">Temu 상품 데이터 가이드\u003C\u002Fa>는 내장 JSON을, \u003Ca href=\"\u002Fko\u002Fblog\u002Fshopify-store-proxy-scraping-gaideu\">Shopify 가이드\u003C\u002Fa>는 문서화된 공개 상품 엔드포인트를 다룹니다. 이런 엔드포인트가 없는 플랫폼과 비교해 볼 만합니다.\u003C\u002Fp>\n\n\u003Ch2>법적·윤리적 경계\u003C\u002Fh2>\n\n\u003Cp>공개 상품 목록은 이 데이터셋에서 위험이 가장 낮은 부분이고, 크리에이터는 가장 높은 부분입니다. 상품 가격은 상업 정보지만, 크리에이터의 핸들, 프로필, 제휴 활동은 식별 가능한 개인과 관련될 경우 \u003Ca href=\"https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2016\u002F679\u002Foj\" rel=\"noopener noreferrer\">GDPR\u003C\u002Fa>상 개인정보입니다. EU나 영국 관련 작업에서 이를 수집하려면 프로필이 공개되어 있더라도 적법한 근거, 데이터 최소화, 보존 기한이 필요합니다. 개인 프로필을 쌓는 대신 \"크리에이터 50명 이상이 홍보한 상품\"처럼 가능한 한 집계하세요.\u003C\u002Fp>\n\n\u003Cp>여기에 앞서 인용한 TikTok 약관과 상표 문제가 더해집니다. TikTok Shop은 사실에 맞게 기술하고, 데이터셋이나 툴이 TikTok Shop과 제휴한 것처럼 보이게 하지 마세요. 상업적이고 지속적인 조사라면 공식 경로나 라이선스 경로가 거의 항상 더 오래가는 선택입니다. 공개 페이지 수집기는 공식 경로가 다루지 않는 좁고 소량인 확인 작업, 예를 들어 오늘 영국 쇼핑객이 실제로 보는 화면을 확인하는 데 가장 잘 맞습니다.\u003C\u002Fp>\n\n\u003Ch2>이 방식으로 해결되지 않는 것\u003C\u002Fh2>\n\n\u003Cp>절제된 공개 페이지 수집기로는 카테고리 전체 범위, 크리에이터 귀속, 라이브 방송 매출, 앱 전용 콘텐츠를 얻을 수 없습니다. 중간 확인 페이지를 넘어가지도 못하며, 시도해서도 안 됩니다. 몇 달이 지나면 프런트엔드가 바뀌면서 동작하지 않게 되기도 합니다. 이 중 무엇이든 필요하다면 그 공백은 엔지니어링이 아니라 데이터 라이선스의 문제입니다. 나머지 네트워크 측면은 \u003Ca href=\"\u002Fko\u002Fuse-cases\u002Fweb-scraping\">웹 스크래핑 활용 사례 페이지\u003C\u002Fa>와 \u003Ca href=\"\u002Fko\u002Flocations\">지원 지역 목록\u003C\u002Fa>에서 어느 국가를 경유할 수 있는지 확인할 수 있습니다.\u003C\u002Fp>","시장 조사용 TikTok Shop 상품 데이터 수집 | ProxyHat","가격 조사용 TikTok Shop 상품 데이터 확보법: Partner API, Research API의 EU 상점 엔드포인트, 라이선스 데이터, 절제된 수집.","\u002Fko\u002Fblog\u002Ftiktok-shop-sangpum-data-sujip",null,"시장 조사용 TikTok Shop 상품 데이터 수집","TikTok Shop 상품 데이터 확보법: Partner API, Research API의 EU 상점 엔드포인트, 라이선스 데이터, 절제된 수집.","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog-covers\u002Fko\u002Ftiktok-shop-sangpum-data-sujip-og.webp",[19,22,25,28,31],{"question":20,"answer":21},"TikTok Shop 상품 데이터를 위한 공식 API가 있나요?","있습니다. Partner Center에서 제공하는 TikTok Shop TTS API로 카탈로그, 가격, 재고, 주문 데이터를 받을 수 있지만, 내 앱을 승인한 상점, 크리에이터, 파트너의 데이터만 해당합니다. 경쟁사 상점을 들여다보는 수단은 아닙니다.",{"question":23,"answer":24},"TikTok Research API에 TikTok Shop 데이터도 포함되나요?","EU에 한해 포함됩니다. Research API에는 상점 정보, 상점 상품(가격과 판매 수량 포함), 상품 리뷰 엔드포인트가 있으며, EU에서 판매되는 상점과 상품으로 제한됩니다. 접근 권한은 학술 기관이나 비영리 연구 기관 같은 승인된 비상업 연구자에게만 주어집니다.",{"question":26,"answer":27},"TikTok Shop 가격이 다른 나라와 왜 다르게 보이나요?","TikTok Shop은 시장마다 별도의 스토어프런트를 운영하고, 요청은 위치에 따라 해당 시장으로 라우팅됩니다. 가격, 통화, 판매자, 판매 여부가 모두 다를 수 있으므로 각 시장은 그 국가의 IP에서 수집하고 관측값마다 시장 정보를 함께 저장하세요.",{"question":29,"answer":30},"TikTok 약관상 TikTok Shop 페이지를 자동으로 수집해도 되나요?","TikTok의 미국 및 EEA 약관은 서면 승인 없는 자동화된 데이터 추출을 금지하며, www.tiktok.com의 robots.txt는 모든 크롤러에 대해 \u002Fshop\u002Fview\u002Fproduct\u002F를 차단합니다. 상업적 용도라면 공식 데이터나 라이선스 데이터를 우선하고, 공개 페이지 수집은 최소한으로, 천천히, 로그아웃 상태로만 하세요.",{"question":32,"answer":33},"TikTok Shop 판매 수량은 얼마나 정확한가요?","방향성 지표로 보는 것이 좋습니다. 표시되는 수치는 축약되는 경우가 많고, 정확한 숫자라도 감사를 거친 값이 아니라 플랫폼이 보고한 값입니다. 매출 데이터로 취급하지 말고 시간에 따른 변화로 추세를 파악하는 데 쓰세요.",[35,36,37,38,39],"TTS API는 내 앱을 승인한 상점·크리에이터·파트너의 데이터만 주며 경쟁사 데이터는 없습니다.","Research API는 EU 상점·상품·가격·판매 수량을 제공하지만 비상업 연구자 전용입니다.","TikTok Shop 스토어프런트는 시장별이므로 각 국가는 그 국가의 IP로 수집하세요.","JSON-LD와 페이지 내장 데이터를 읽고, 서명된 비공개 엔드포인트와 챌린지 페이지는 건드리지 마세요.","TikTok 약관은 승인 없는 자동 추출을 금지하므로 공식 또는 라이선스 데이터를 우선하세요.",false,"2026-10-29T09:00:00+00:00","2026-10-29T09:00:19+00:00","2026-10-03T09:41:40+00:00","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog-covers\u002Fko\u002Ftiktok-shop-sangpum-data-sujip-master.webp","Collecting TikTok Shop Product Data for Market Research","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog-covers\u002Fko\u002Ftiktok-shop-sangpum-data-sujip-card.webp",16,{"name":49,"slug":50,"bio":51,"avatar_url":14,"website_url":14,"social_links":14},"ProxyHat Team","proxyhat-team","The ProxyHat editorial team covers proxies, web scraping, and data extraction.",[53],{"id":54,"slug":55,"name":56,"description":14,"meta_title":57,"meta_description":58,"parent_id":14},5,"ecommerce","이커머스 및 경쟁 분석","이커머스 스크래핑 가이드 | ProxyHat 블로그","이커머스 데이터 스크래핑, 가격 모니터링 및 경쟁 분석 가이드.",[60,64,67,71],{"id":61,"slug":62,"name":63},1,"web-scraping","웹 스크래핑",{"id":65,"slug":55,"name":66},14,"이커머스",{"id":68,"slug":69,"name":70},15,"price-monitoring","가격 모니터링",{"id":72,"slug":73,"name":74},18,"geo-targeting","지오타겟팅",{"ko":13,"zh":76,"tr":77,"ru":78,"en":79,"de":80,"x-default":79},"\u002Fcn\u002Fblog\u002Ftiktok-shop-shangpin-shuju-caiji","\u002Ftr\u002Fblog\u002Ftiktok-shop-urun-verisi-pazar-arastirmasi","\u002Fru\u002Fblog\u002Fdannye-tovarov-tiktok-shop-issledovanie","\u002Fblog\u002Ftiktok-shop-product-data-research","\u002Fde\u002Fblog\u002Ftiktok-shop-produktdaten-marktforschung",{"ko":13,"zh":76,"tr":77,"ru":78,"en":79,"de":80},2,[84,104,125,142],{"id":85,"slug":86,"title":87,"excerpt":88,"featured_image_url":89,"featured_image_alt":14,"card_image_url":90,"og_image_url":91,"published_at":92,"updated_at":93,"content_updated_at":94,"reading_time_minutes":95,"is_featured":40,"indexable":40,"views":96,"author":97,"categories":98,"tags":100},52,"jieyeok-gagyeok-monitoring","지역별 가격 모니터링: 글로벌 시장 가격 추적 가이드","지역별 가격 모니터링을 통해 글로벌 시장의 경쟁사 가격을 정확하게 추적하는 방법을 알아보세요. ProxyHat 프록시를 활용한 실시간 가격 데이터 수집 가이드입니다.","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fjieyeok-gagyeok-monitoring-master.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fjieyeok-gagyeok-monitoring-card.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fjieyeok-gagyeok-monitoring-og.webp","2026-02-26T03:50:37+00:00","2026-07-19T03:13:07+00:00","2026-02-26T00:44:30+00:00",9,34,{"name":49,"slug":50,"bio":51,"avatar_url":14,"website_url":14,"social_links":14},[99],{"id":54,"slug":55,"name":56,"description":14,"meta_title":57,"meta_description":58,"parent_id":14},[101,102,103],{"id":65,"slug":55,"name":66},{"id":68,"slug":69,"name":70},{"id":72,"slug":73,"name":74},{"id":95,"slug":105,"title":106,"excerpt":107,"featured_image_url":108,"featured_image_alt":14,"card_image_url":109,"og_image_url":110,"published_at":111,"updated_at":93,"content_updated_at":112,"reading_time_minutes":113,"is_featured":4,"indexable":40,"views":114,"author":115,"categories":116,"tags":118},"ecommerce-data-scraping-proxy-gaideu","이커머스 데이터 스크래핑을 위한 프록시: 완벽 가이드","이커머스 사이트에서 제품 데이터, 가격, 리뷰를 스크래핑하기 위한 프록시 활용 가이드. Amazon, Shopify, eBay 등 주요 플랫폼별 전략, 차단 방지 기법, 코드 예제를 제공합니다.","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fecommerce-data-scraping-proxy-gaideu-master.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fecommerce-data-scraping-proxy-gaideu-card.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fecommerce-data-scraping-proxy-gaideu-og.webp","2026-01-12T01:55:44+00:00","2026-02-26T00:31:36+00:00",17,197,{"name":49,"slug":50,"bio":51,"avatar_url":14,"website_url":14,"social_links":14},[117],{"id":54,"slug":55,"name":56,"description":14,"meta_title":57,"meta_description":58,"parent_id":14},[119,120,121,122],{"id":65,"slug":55,"name":66},{"id":68,"slug":69,"name":70},{"id":61,"slug":62,"name":63},{"id":82,"slug":123,"name":124},"residential-proxies","주거용 프록시",{"id":126,"slug":127,"title":128,"excerpt":129,"featured_image_url":130,"featured_image_alt":14,"card_image_url":131,"og_image_url":132,"published_at":133,"updated_at":93,"content_updated_at":134,"reading_time_minutes":95,"is_featured":40,"indexable":40,"views":135,"author":136,"categories":137,"tags":139},40,"silsigan-gagyeok-monitoring-infra","실시간 가격 모니터링 인프라 구축하기: 프록시 기반 가격 추적 완벽 가이드","실시간 가격 모니터링 인프라를 구축하는 방법을 단계별로 설명합니다. 프록시 회전, 지역 타겟팅, 봇 차단 회피 전략과 ProxyHat 설정까지 실무에 바로 적용 가능한 가이드입니다.","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fsilsigan-gagyeok-monitoring-infra-master.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fsilsigan-gagyeok-monitoring-infra-card.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fsilsigan-gagyeok-monitoring-infra-og.webp","2026-02-13T13:33:22+00:00","2026-10-03T08:29:53+00:00",63,{"name":49,"slug":50,"bio":51,"avatar_url":14,"website_url":14,"social_links":14},[138],{"id":54,"slug":55,"name":56,"description":14,"meta_title":57,"meta_description":58,"parent_id":14},[140,141],{"id":65,"slug":55,"name":66},{"id":68,"slug":69,"name":70},{"id":143,"slug":144,"title":145,"excerpt":146,"featured_image_url":147,"featured_image_alt":14,"card_image_url":148,"og_image_url":149,"published_at":150,"updated_at":93,"content_updated_at":151,"reading_time_minutes":95,"is_featured":40,"indexable":40,"views":152,"author":153,"categories":154,"tags":156},26,"shopify-store-proxy-scraping-gaideu","Shopify 스토어를 프록시로 스크래핑하는 방법: 완벽 가이드","Shopify 스토어에서 제품 데이터를 스크래핑하는 완벽 가이드. products.json API, 가격 모니터링, 프록시 설정, 차단 방지 기법을 다룹니다.","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fshopify-store-proxy-scraping-gaideu-master.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fshopify-store-proxy-scraping-gaideu-card.webp","https:\u002F\u002Fstatic.proxyhat.com\u002Fstorage\u002Fblog\u002Fshopify-store-proxy-scraping-gaideu-og.webp","2026-01-30T00:06:37+00:00","2026-02-26T00:40:55+00:00",762,{"name":49,"slug":50,"bio":51,"avatar_url":14,"website_url":14,"social_links":14},[155],{"id":54,"slug":55,"name":56,"description":14,"meta_title":57,"meta_description":58,"parent_id":14},[157,158],{"id":65,"slug":55,"name":66},{"id":61,"slug":62,"name":63},[]]