当社独自のアクセス統計は常に有効です。Google Analyticsは、公開ページ(ログイン後のワークスペースは対象外)の利用状況を把握するためのもので、許可をいただいた場合のみ有効になります。詳しくは プライバシーポリシーをご覧ください。

Douyin商品詳細API

POST

APIの稼働状況

このAPIのステータスデータを一時的に取得できないため、最近の状態は不明です。停止しているという意味ではありません。

数値IDを指定して、Douyin Mallの商品1件を取得します。表示価格と割引価格(CNY)、販売数、ショップ、画像、保証内容、配送に関する注記、バリエーション、販売状況を取得できます。product_idはproduct_searchまたはlive_product_searchから取得してください。SKUやプロモーションIDは使えません。

Douyin Product detailsは、product_idを指定してDouyin Mallの商品1件を読み取り、タイトル、ショップ、表示価格と現在公開されている割引価格、ページ上の販売数、メイン画像と詳細画像、掲げているサービス保証、配送に関する記載、バリエーションの選択肢、販売中かどうかを返します。Douyinでその商品が今いくらで、誰が販売し、どれだけ売れているかがわかるため、競合を追跡するセラー、転売業者を監視するブランド、クリエイターが宣伝する前に商品を確認する代理店に役立ちます。

価格はいずれも人民元です。sold_countは商品の公開販売数のスナップショットで、特定のクリエイター1人の販売数ではありません。shipping_fee_textとshipping_estimate_textはページの表記をそのまま保持しているため、ショップ間で比較する前に解析してください。variant_groupsは各選択肢グループを選択肢名と公開IDのみで一覧にしたもので、選択肢ごとの価格や在庫は含みません。

料金は1,000リクエストあたり$13.33(1回あたり$0.01333)です。失敗した呼び出しと空の結果には課金されません。 同期処理です。時間のかかるジョブでは、ボディに"mode": "async"を追加し、job_idを取得してポーリングしてください。

AIプロンプト

EveryInfraのDouyin 商品詳細エンドポイント(douyin/product_detail)を使ったデータ収集スクリプトの作成を手伝ってください。

エンドポイントの仕組み:
- リクエスト:ヘッダーにAuthorization: Bearer <API key>を指定して、https://api.everyinfra.com/api/v1/socialにPOSTします。APIキーは環境変数EVERYINFRA_API_KEYから読み込み、ハードコードしないでください。
- リクエストボディでplatformにdouyin、actionにproduct_detailを指定し、パラメータはparamsの中に入れます。
- 必須パラメータ:
  - product_id: product_searchまたはlive_product_searchが返す数値のDouyin商品IDです。SKU ID、プロモーションID、タイトル、URLではありません。
- 1つのオブジェクトを返します。主なフィールド: product_id(Douyin Mallの固定商品ID)、title、price_cny(表示されている人民元建ての商品価格)、discount_price_cny(現在公開されている人民元建ての割引価格)、sales_text(商品ページの表示どおりの販売数)、sold_count(商品ページに現在表示されている販売数)、shop_id(Douyin MallのショップID)、shop_name(Douyin Mallのショップ名)、shop_avatar_url(Douyin MallのショップアバターURL)、image_url、main_image_urls(商品のメイン画像およびカルーセル画像のURL)、detail_image_urls(商品の縦長の詳細画像URL)。フィールドは全部で17個です。一覧はhttps://api.everyinfra.com/api/v1/social/catalog?platform=douyinを参照してください。.
- リクエストボディの例:
{
  "platform": "douyin",
  "action": "product_detail",
  "params": {
    "product_id": "3836720422792070096"
  }
}
- 料金:1,000リクエストあたり$13.33。失敗時および結果が空の場合は課金されません。
- 対象が数十〜数百件ある場合は、ボディに"mode": "async"を追加します。すぐにjob_idが返されるので、GET https://api.everyinfra.com/api/v1/jobs/{job_id}をポーリングして結果を取得します。
- 422の場合は、エラーに含まれる推奨パラメータ名と指定可能な値を使ってリクエストを修正します。429または503の場合は、Retry-Afterの指定に従って待ってから再試行します。

コードを書く前に、必要な対象とその件数、必要なフィールド、希望する出力形式を私に質問してください。そのうえで、計画と概算費用を私に確認してください。

リクエストパラメータ

名前場所型必須デフォルト説明
Authorizationheaderstringはい-Bearerの後にAPIキーを続けます。APIキーはコンソールで作成してください。URLやコードリポジトリには絶対に含めないでください。
platformbodystringはいdouyinプラットフォームの識別子です。値は固定です。
actionbodystringはいproduct_detail機能の識別子です。値は固定です。
product_idbody.paramsstringはい-product_searchまたはlive_product_searchが返す数値のDouyin商品IDです。SKU ID、プロモーションID、タイトル、URLではありません。

コードサンプル

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "douyin",
  "action": "product_detail",
  "params": {
    "product_id": "3836720422792070096"
  }
}'

OpenAPI定義(JSON)サンプルは環境変数EVERYINFRA_API_KEYからAPIキーを読み込みます。コピーしたコードにAPIキーが含まれることはありません。

レスポンス例

フィールドプレビュー

このパラメータのサンプルレスポンスはまだありません。このプレビューはAPI定義に基づくレスポンスの構造とフィールドを示したもので、値は…で表しています。実際の呼び出し結果ではありません。

json
{
  "id": "req_…",
  "platform": "douyin",
  "action": "product_detail",
  "results": {
    "product_id": …,
    "title": …,
    "price_cny": …,
    "discount_price_cny": …,
    "sales_text": …,
    "sold_count": …,
    "shop_id": …,
    "shop_name": …,
    "shop_avatar_url": …,
    "image_url": …,
    "main_image_urls": …,
    "detail_image_urls": …,
    "assurances": …,
    "shipping_fee_text": …,
    "shipping_estimate_text": …,
    "variant_groups": …,
    "on_sale": …,
    "platform": …
  },
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

レスポンスフィールド

業務データはresultsに含まれます。この表はレコードに含まれうるフィールドの一覧です。プラットフォームに表示されない値を作り出すことはありません。

フィールド意味
product_idDouyin Mallの固定商品ID。
titleタイトルです。プラットフォームにタイトルがない場合(テキストのみの投稿など)はnullになります。
price_cny表示されている人民元建ての商品価格。
discount_price_cny現在公開されている人民元建ての割引価格。値がない場合に定価から算出することはありません。
sales_text商品ページの表示どおりの販売数。
sold_count商品ページに現在表示されている販売数。取得時点のスナップショットであり、特定のクリエイター単独の販売数ではありません。
shop_idDouyin MallのショップID。
shop_nameDouyin Mallのショップ名。
shop_avatar_urlDouyin MallのショップアバターURL。
image_url画像のリンクです。複数の画像を返す機能では、image_urls配列が返される場合があります。
main_image_urls商品のメイン画像およびカルーセル画像のURL。
detail_image_urls商品の縦長の詳細画像URL。
assurances商品に表示されているサービス保証ラベル。
shipping_fee_textページの表示どおりの送料または発送元の表記。
shipping_estimate_textページの表示どおりの発送予定の表記。
variant_groupsバリエーショングループとその選択肢。グループ名、選択肢名、公開されている選択肢IDのみで、選択肢ごとの価格や在庫は含まれません。
on_sale取得時点で商品が販売中と表示されていたかどうか。
platform取得元プラットフォームの識別子で、リクエストのplatformと同じです(例:xiaohongshu、tiktok)。

FAQ

product_idはどこで取得できますか?

Douyin Product searchまたはLive product search機能の結果から取得できます。これらの結果には、Douyin Mallの数値の商品IDが含まれています。一部の結果にはSKU ID、プロモーションID、商品タイトルも表示されますが、渡すのは商品IDの数値です。ここで出品を特定できるのは商品IDだけです。

sold_countはクリエイターの販売数を示しますか?

いいえ。呼び出した時点で商品ページに公開表示されている販売個数で、商品全体の数値です。そのため、特定のクリエイターやライブ配信については何もわかりません。販売推移を把握するには呼び出し日とあわせて保存し、ページの表記そのままの文言はsales_textに残しておいてください。

一部の商品でdiscount_price_cnyがないのはなぜですか?

呼び出し時点で商品に公開の割引価格が表示されている場合のみ値が入ります。値がない場合はprice_cnyを表示価格として扱ってください。割引額が推定されたり、この値から算出されたりすることはありません。どちらの値も人民元建てなので、両方ある場合はそのまま比較できます。

エラーと課金

401
キーが未指定か無効です。
402
残高が不足しています。先にチャージしてください。
422
パラメータ名または値が無効です。エラーに含まれる候補を参考に修正してください。課金はされません。
429
1分あたりのリクエスト上限に達しました。Retry-Afterの指定に従って待ってから再試行してください。
503
処理を完了できませんでした。保留中の請求額は残高に戻されます。結果が不明な場合は、再試行する前に確認してください。
200(空)
データがありません。課金はされません。

エラー