コストコ日本の商品価格をAPIで取得するには、https://api.scavio.dev/api/v1/costco/search に {"query": "米", "country": "jp"} をPOSTします。レスポンスには costco.co.jp の商品が、円建ての価格、評価、レビュー数、在庫状況、英語表記の商品名とともに入っています。料金は1回1クレジットで、page_size を100にすれば1回で最大100商品を取得できます。コストコは公開APIを用意していないので、自分でスクレイピングの仕組みを作って保守せずにJSONで価格を受け取るには、これがいちばん手早い方法です。
この記事のレスポンスは、すべて2026年11月2日に実際に取得したものです。
用意するもの
- ScavioのAPIキー。登録すると50クレジットが無料で付与されます。カード登録もコストコの会員資格も不要です。
- HTTPリクエストを送れる言語。例では cURL と Python を使います。
ステップ1:costco.co.jp を検索する
curl -X POST 'https://api.scavio.dev/api/v1/costco/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"query": "米", "country": "jp", "page_size": 100}'この検索では88商品が2.9秒で返りました。そのうち1件を、値を変えずに示します。
{
"data": {
"country": "jp",
"query": "米",
"corrected_query": null,
"total_results": 88,
"page": 1,
"page_size": 100,
"total_pages": 1,
"count": 88,
"results": [
{
"position": 9,
"product_id": "73828",
"title": "国産ブレンド米 10kg(パールライスのお米)",
"english_title": "BLEND RICE 10kg",
"url": "https://www.costco.co.jp/Subscription/BLEND-RICE-10kg/p/73828",
"image": "https://www.costco.co.jp/medias/sys_master/images/hb7/hd9/488675154231326.jpg",
"price": 4698,
"price_hidden": false,
"price_formatted": "¥4,698",
"currency": "JPY",
"rating": 4.2,
"reviews_count": 463,
"availability": "in_stock",
"member_only": false,
"max_order_quantity": 500
}
]
},
"credits_used": 1
}よく使うフィールドは次のとおりです。
| フィールド | 内容 |
|---|---|
product_id | costco.co.jp の商品番号。商品詳細の取得に使う(例:73828) |
title / english_title | 日本語の商品名と、サイトにある英語表記(ない場合は null) |
price | 円建ての価格(数値)。4698 は4,698円 |
price_formatted | サイトの表示どおりの価格("¥4,698") |
price_hidden | サイトが価格を表示していない商品は true。そのとき price は null |
availability | オンラインの在庫状況。in_stock または out_of_stock |
rating / reviews_count | 平均評価とレビュー数 |
ステップ2:並べ替えとページ送り
sort_by には best_match(デフォルト)、price_low、price_high、top_rated を指定できます。{"query": "コシヒカリ", "country": "jp", "sort_by": "price_low"} で検索すると、次の4件が返りました。
| 順位 | 商品 | 価格 | availability |
|---|---|---|---|
| 1 | ミツカン かおりの蔵ゆず 1L | ¥1,298 | in_stock |
| 2 | 栃木県産コシヒカリ 5kg | ¥2,698 | in_stock |
| 3 | 長鮮度 無洗米 岡山県産こしひかり 5kg (脱酸素剤入り) | ¥4,968 | in_stock |
| 4 | 全農パールライス 無洗米コシヒカリブレンド 10kg | ¥4,698 | out_of_stock |
気をつける点が2つあります。best_match 以外の並べ替えでは、コストコが一致の範囲を広げるので、ゆずのポン酢のような関係の薄い商品が混ざることがあります。また、この結果では在庫切れの商品が価格に関係なく最後に並びました。最安値を探すときは、受け取った側で availability と price を見て並べ直してください。
ページ送りは page で指定します。page_size を省略すると1ページ24件で、「コーヒー」の2ページ目は "total_results": 149、"total_pages": 7 とともに25位から48位の24件が返りました。page_size は日本では最大100です。
ステップ3:単価を計算する
コストコの商品は内容量がばらばらなので、比べるときは単価に直します。ステップ1の「米」の結果から、タイトルの「10kg」「5kg x 2袋」を読み取って1kgあたりの価格を出す例です。
import re
import requests
resp = requests.post(
"https://api.scavio.dev/api/v1/costco/search",
headers={"Authorization": "Bearer sk_live_your_key"},
json={"query": "米", "country": "jp", "page_size": 100},
timeout=60,
)
for p in resp.json()["data"]["results"]:
m = re.search(r"(\d+(?:\.\d+)?)\s*kg", p["title"])
if not m or p["price"] is None or p["availability"] != "in_stock":
continue # 価格非表示、在庫切れ、内容量がkg表記でない商品は除外
if any(w in p["title"] for w in ("もち", "玄米", "米びつ", "みそ")):
continue # 精米以外の商品は除外
kg = float(m.group(1)) * (2 if re.search(r"x\s*2袋", p["title"]) else 1)
print(f'{p["title"]}: {p["price_formatted"]} / 1kgあたり{p["price"] / kg:,.0f}円')11月2日の結果の一部です(精米のみ)。
| 商品 | 価格 | 1kgあたり |
|---|---|---|
| 業務用特選ブレンド米 10kg | ¥3,998 | 400円 |
| 国産ブレンド米 10kg(パールライスのお米) | ¥4,698 | 470円 |
| 秋田県産あきたこまち 5kg | ¥2,598 | 520円 |
| 北海道産 ゆめぴりか 5kg | ¥3,398 | 680円 |
| 吉兆楽 雪温精法 魚沼産こしひかり 窒素充填包装 5kg x 2袋 | ¥10,380 | 1,038円 |
| 吉兆楽 氷温熟成 魚沼産こしひかり 窒素充填包装 2kg | ¥2,880 | 1,440円 |
在庫ありの精米19商品で比べると、1kgあたり400円から1,440円まで3.6倍の差がありました。
ステップ4:商品詳細を取得する
説明文、すべての画像、カテゴリが必要なときは、検索結果の product_id を item_id として渡します。日本では1回につき1商品です。
curl -X POST 'https://api.scavio.dev/api/v1/costco/product' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"item_id": "1861693", "country": "jp"}'レスポンスの主な部分です(images は24件のうち1件、categories は11件のうち4件に省略)。
{
"data": {
"country": "jp",
"product_id": "1861693",
"title": "カークランドシグネチャー ハウスブレンド コーヒー (豆) 1.13kg",
"english_title": "Kirkland Signature House Blend Coffee (Whole Bean) 1.13kg",
"price": 3980,
"price_hidden": false,
"price_formatted": "¥3,980",
"currency": "JPY",
"rating": 4.5,
"reviews_count": 320,
"availability": "in_stock",
"member_only": false,
"max_order_quantity": 500,
"summary": "コーヒー(豆)\nミディアムロースト\n内容量:1.13kg",
"images": [
"https://www.costco.co.jp/medias/sys_master/images/h96/h4b/314366680891422.jpg"
],
"specifications": [],
"categories": [
"定期購入",
"ドリンク",
"コーヒー豆・粉",
"カークランドシグネチャー"
]
},
"credits_used": 1
}summary と description には、全角のかっこやコロンが ( や : のような文字参照のまま入っていることがあります。画面に出す前に Python なら html.unescape() でデコードしてください。この商品では specifications は空でした。
product_id は国ごとのサイトに固有です。costco.com のIDは costco.co.jp では使えないので、必ず "country": "jp" の検索結果から取ってください。
ステップ5:近くの倉庫店を探す
日本の倉庫店は緯度と経度で検索します(zip はアメリカの郵便番号専用です)。
curl -X POST 'https://api.scavio.dev/api/v1/costco/warehouses' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"latitude": 35.6812, "longitude": 139.7671, "country": "jp", "limit": 10}'東京駅の座標では10店舗が近い順に返り、最寄りは川崎(17.9キロメートル)、10番目はつくば(54.1キロメートル)でした。2番目の新三郷の行です(緯度・経度を省略し、hours は7件のうち2件に省略)。
{
"warehouse_id": "costcoJapanShinmisatoWarehouse",
"name": "新三郷",
"address": {
"line1": "341-0009",
"line2": "埼玉県三郷市新三郷ららシティ3-1-2",
"city": null,
"zip": null,
"country": "JP",
"formatted": null
},
"phone": null,
"distance": "21.8 キロメートル",
"hours": [
"日: 10:00 - 20:00",
"月: 10:00 - 20:00"
],
"services": [
"TIRE_CENTER",
"GAS_STATION",
"FOOD_COURT",
"OPTICAL",
"PHARMACY",
"HEARING_AIDS"
],
"url": "https://www.costco.co.jp/store/Shinmisato"
}日本の倉庫店では、郵便番号は address.line1 に入り、zip と phone は null でした。distance は数値ではなく「21.8 キロメートル」という文字列です。10店舗のうち services に GAS_STATION があったのは、新三郷、木更津、千葉ニュータウン、つくばの4店舗でした(ガソリン価格そのものは日本では取得できません)。
ステップ6:定期的に記録して変化を見る
どの呼び出しもその時点の costco.co.jp を読むので、価格の推移を追うには、検索結果を毎日決まった時刻に保存して前日と比べます。product_id をキーにして price と availability の変化を見れば、値下げと在庫切れを検知できます。price_hidden が true の商品は価格の比較から外してください。
日本で使えるエンドポイント
| エンドポイント | 内容 | クレジット |
|---|---|---|
POST /api/v1/costco/search | キーワード検索。並べ替え、ページ送り、1回最大100件 | 1 |
POST /api/v1/costco/product | 1商品の詳細。説明、画像、仕様、カテゴリ | 1 |
POST /api/v1/costco/warehouses | 緯度・経度から近い倉庫店 | 1 |
倉庫店ごとの価格と在庫、ガソリン価格、クーポンブック、セール情報、クリアランス、レビュー、カテゴリ、オートコンプリートは、アメリカとカナダのコストコ専用で、日本では使えません(クーポンブックはアメリカのみ)。
知っておきたい制限
- 日本の検索で使えるのは
query、sort_by、page、page_sizeだけです。warehouse_id、ブランド、価格や評価の絞り込み、on_sale、in_stockを送ると400になります。sort_byに newest を指定した場合も400で、"sort_by \"newest\" is not available for country jp; use best_match, price_low, price_high or top_rated"が返りました。 - 価格は costco.co.jp のオンライン価格です。costco.co.jp 自身が「倉庫店とオンラインでは販売価格や在庫状況が異なる場合があります」と表示しています。
- 同じ検索でも総件数は多少変わります。「コーヒー」は1回目が150件、2回目が149件でした。
料金
日本の検索、商品詳細、倉庫店検索はいずれも1回1クレジットです。Growthプランの年払い換算では1,000クレジットあたり約2ドルなので、100商品の検索1回は約0.002ドルです。50キーワードを毎日検索しても月に約1,500クレジットで、月30ドルのProjectプラン(7,000クレジット)に収まります。登録時の無料50クレジットで、50回の検索を試せます。詳しくは料金ページをご覧ください。
Costco API 日本を無料で試す(50クレジット、カード登録不要)。Costco API 日本のページでは登録前にライブデモを試せます。ほかのAPIとの比較はコストコ日本の商品・価格データAPIおすすめ5選にまとめています。同じキーで Amazon 日本の価格も取得でき、アメリカとカナダのコストコの店頭価格や在庫は英語版のCostco APIページで扱っています。
Frequently asked questions
costco.co.jp の価格をプログラムで取得するにはどうすればいいですか?
ScavioのCostco API(日本)に、キーワードと "country": "jp" をPOSTで送ります。1回の呼び出しで最大100商品が、円建ての price、表示用の price_formatted、評価、レビュー数、在庫状況つきのJSONで返ります。料金は1回1クレジットで、登録時に50クレジットが無料で付与されます。
価格が null になる商品があるのはなぜですか?
costco.co.jp が価格を表示していない商品です。その場合 price と price_formatted が null、price_hidden が true になります。2026年11月2日の「コーヒー」の検索では100件中29件がそうでした。たとえば HARIO V60 アウトドアコーヒー フルセットは、サイト上でも「ログインして価格を表示」となっています。
コストコの倉庫店の価格や在庫も取得できますか?
日本では取得できません。返るのは costco.co.jp のオンライン価格と、オンラインの在庫状況(availability)です。倉庫店ごとの店頭価格、在庫、ガソリン価格、クーポンのエンドポイントはアメリカとカナダのコストコ専用です。日本の倉庫店については、座標から近い店舗の住所、営業時間、サービスを検索できます。
コストコの価格変動を毎日チェックするといくらかかりますか?
1キーワードの検索で最大100商品が返り、1回1クレジットです。50キーワードを毎日検索すると月に約1,500クレジットで、Growthプランの年払い換算で約3ドル、月30ドルのProjectプラン(7,000クレジット)に収まります。