AliExpress API:商品・価格・送料を円建ての JSON で
AliExpress の公式 API(アフィリエイト API やドロップシッピング API)は、登録したアフィリエイトやドロップシッピングの事業者向けのものです。この API はそれとは別に、買い手が見る公開ページを読み、日本から見たときの価格(円)、SKU ごとの在庫、日本までの送料と到着予定を JSON で返します。日本向けのデータにするには、配送先の `"country": "JP"`、通貨の `"currency": "JPY"`、言語の `"language": "ja"` を三つとも指定してください。三つは互いに独立していて、一つだけ指定してもほかの二つは既定値(米国・米ドル・英語)のままです。過去の価格はこの API からは取れないため、価格推移を追うなら同じ商品を定期的に呼び出して記録していく形になります。
エンドポイント
| endpoint | 返ってくるもの | 必須 |
|---|---|---|
| search | キーワード検索。価格、元の価格、割引率、販売数、評価を返します。最低・最高価格(円)、発送国、送料無料で絞り込み、関連度・注文数・価格・新着で並べ替えができます。1 ページは 46〜60 件です。 | query |
| product_detail | 商品 ID か URL から商品ページ全体を取得します。SKU ごとの価格と在庫、仕様、画像、動画、配送先までの送料と到着予定、評価、クーポン、出品者が公開していれば重量も含みます。 | すべて任意 |
| reviews | 購入者レビューと評価の分布。1 回の呼び出しで何ページ分もまとめて取得でき、写真付きレビューだけに絞ることもできます。 | すべて任意 |
| similar | 指定した商品に近い商品(元の商品は除く)、またはキーワードから探した類似品。 | すべて任意 |
| description | 出品者が書いた商品説明の本文(テキストと画像)。 | すべて任意 |
| shipping | 指定した配送先への配送方法の一覧。配送業者、送料、日数。 | すべて任意 |
| store_info | ストアのプロフィール。そのストアが扱うキーワードを添えると、ストア評価、高評価の割合、評価件数も返ります。 | すべて任意 |
| deals | キーワードに合うセール品を割引率の高い順に。割引率の下限も指定できます。 | query |
呼び出しごとにクレジットを消費します。失敗した呼び出しとブロックされた呼び出しは無料です。
動作する例
送料を見るときは `shipping_cost` を使ってください。この商品は 0 円ですが、`list_freight` には 300 円が入っています。こちらは送料無料が適用される前の通常の送料で、参考値です。また `sold_count` は null で、販売数は `sold_text`(「50,000+ 点販売」)の文字列にしか入っていません(下の「制限」を参照)。
curl -X POST https://api.reefapi.com/aliexpress/v1/product_detail \
-H "x-api-key: あなたのキー" \
-H "content-type: application/json" \
-d '{"product_id": "1005010439419248", "country": "JP", "currency": "JPY", "language": "ja", "province": "Tokyo"}'{
"ok": true,
"data": {
"product": {
"product_id": "1005010439419248",
"title": "マグセーフ対応 磁気オリジナルクリアケース iPhone 17 16 15 14 Plus 13 12 Mini 11 Pro Max 16E 17E用 透明カバー",
"currency": "JPY",
"price_min": 221.0,
"price_max": 256.0,
"original_price_current": 442.0,
"rating": 4.9,
"review_count": 5485,
"sold_count": null,
"sold_text": "50,000+ 点販売",
"total_stock": 2178,
"sku_variants": [
{
"sku_id": "12000059808812199",
"props": { "カラー": "クリア", "モバイルモデル": "iphone 11" },
"price": { "sale": 230.0, "sale_str": "230円", "original": 461.0, "currency": "JPY" },
"stock": 47,
"available": true
},
...
],
"shipping": {
"ship_to": "JP",
"shipping_cost": 0.0,
"free": true,
"list_freight": 300.0,
"delivery_estimate": "4-11 days",
"delivery_eta": "10月 28日",
"ship_from": "China",
"lines": ["追跡機能を利用可能"]
},
"tags": { "choice": true, ... }
}
},
"meta": { "record_count": 1, "variant_count": 41, "country": "JP", "currency": "JPY", "language_sent": "ja", "province_sent": "Tokyo", "cache_hit": false, "mode": "live" }
}アリエクスプレスのスクレイピングで実際につまずく点
AliExpress は、ページをまたいで同じ商品を出すことがあります。2026年9月の測定では、こちら側の取得範囲の重なりを直したあとでも、隣り合うページの商品の約 7% が重複していました。これは AliExpress 自身の並び順のぶれで、商品単位のオフセットが公開されていないため、product_id で重複を除くしかありません。
評価のない出品者は「未評価」ではなく 0.0 点・0 件として送られてきます。ロゴを登録していないストアには、サイト共通の既定アイコンが入ります。そのまま保存すると、評価 0 点の店や同じロゴの店が大量にあるように見えてしまいます。この API では、どちらも店自身の値ではないものとして null にしています(評価件数の 0 はそのまま残します。2026年8月、20 商品・8 ストアで確認)。
存在しないストア ID を渡すと、AliExpress はエラーではなく HTTP 200 の小さな空ページを返します。以前はこれをブロックと取り違え、40〜60 秒再試行したうえで失敗していました。今は 1 秒かからずに NOT_FOUND を返します。
試しに数十件の価格を拾うだけなら、この API を使う理由はあまりありません。毎日の価格記録を半年続けるとなると話は別で、こうした食い違いを誰が見張り続けるのか、という問題になります。
制限と正直な注記
- AliExpress(Alibaba グループ)が提供している API ではなく、AliExpress との契約や提携もありません。
- 2026年10月24日の測定では、`"language": "ja"` を指定しても search の商品タイトルは英語でした(2 回の検索、計 20 件すべて)。日本語のタイトルは product_detail で返ります。価格は search でも円建てです。
- 検索カードの価格と商品ページの価格は一致しないことがあります。同じ日の測定で、スマホケースは検索で 441 円、product_detail では 221 円(元値 442 円)、Baseus のイヤホンは検索で 2,600 円、商品ページでは 2,920 円でした。SKU ごとの正確な価格は product_detail の `sku_variants` を見てください。
- 日本語の商品ページでは `sold_count` が null になり、販売数は `sold_text`(「50,000+ 点販売」)にしか入りません。英語表記の検索カード(「10,000+ sold」)では数値として返ります。
- product_detail の `store` 欄は、いまは当てにしないでください。今回、まったく別の 2 商品(スマホケースとイヤホン)で同じストア(ID 1103573332)が返りました。2026年8月の監査でも、無関係な 5 商品すべてで同じストアが返っています。AliExpress から届く応答そのものにこの値が入っているため、まだ解消できていません。
- 応答は保存していません。同じ商品でも呼ぶたびに AliExpress へ取りに行くので、セールの開始や在庫切れはそのまま次の呼び出しに反映されます。