TikTok広告レポート自動化のやり方|Marketing APIからAI分析まで

広告分析
読了時間 約16分
TikTok広告のレポートを毎朝手で集めているなら、自動化の選択肢は3つ。管理画面のスケジュールレポート、コネクタ・ETLツール、Marketing API直連携。API利用に必要な開発者登録・アプリ審査の通し方、無期限アクセストークンの取得、/report/integrated/get/でのレポート取得の実コード(curl・Python・GAS)、日別取得の30日制限やCVが後から増える仕組み、集めたデータをAIにつなぐクリエイティブ疲弊検知の要点を、2026年7月時点の公式情報を軸にまとめた。

TikTok広告のレポートを自動化しようとすると、GoogleやMetaと同じつもりで進めて最初の審査で止まります。APIの入口に「会社としての審査」が置かれている一方で、いったん通ればアクセストークンは無期限。Metaのようなトークン失効との戦いはありません。入口が重くて運用が軽い、という構造です。

もう1つの特徴は、レポートAPIの仕様が細かく決まっていることです。日別データは1リクエスト30日まで、数値はすべて文字列で返る、CVは後から増える。知らずに作ると必ず踏む仕様が並んでいます。

それぞれのやり方の設定手順と限界、本命のMarketing API直連携の審査を通すコツから無期限トークンの取得、レポート取得の実コード、さらに集めたデータをAIにつないで分析まで自動化する方法までを、2026年7月時点の公式ドキュメントに沿って順に見ていきます。


自動化のやり方は3つ、どれを選ぶか

先に結論です。

管理画面のスケジュールレポート
  • 難易度: ★☆☆(画面操作のみ)
  • 出力先: メール(CSV/XLSX・5宛先まで)
  • 費用: 無料
  • 弱点: 3か月DLされないと自動停止
コネクタ/ETLツール
  • 難易度: ★★☆(画面設定+SQL)
  • 出力先: BigQuery・Looker Studio
  • 費用: ツール月額(有料)
  • 弱点: Looker Studio公式コネクタは無い
Marketing API 直連携(/report/integrated/get/)
  • 難易度: ★★★(開発者登録審査+アプリ審査+実装)
  • 出力先: 自由(スプシ/DB/BI)。API自体は無料・トークン無期限
  • 弱点: 会社ドメインでの審査が入口。個人・フリーランスは通りにくい
TikTok広告レポート自動化の3つのやり方。API直連携はトークン無期限で運用が楽なぶん、入口の開発者審査がハードルになる
  • 毎朝メールで数字が届けば十分 → やり方1(スケジュールレポート)
  • 実装せずにBigQueryやBIへ流したい → やり方2(コネクタ/ETLツール)
  • 無料で完結させたい・AI分析まで組み込みたい → やり方3(Marketing API)

Metaと同じく「スクリプト」という中間のやり方はありません。コードを書くならAPI直行です。

やり方1: 毎朝メールで届けば足りるのか(スケジュールレポート)

広告マネージャーのカスタムレポートには、スケジュール実行(Scheduled running)があります。頻度は毎日・毎週・月初・月末から選べ、最大5つのメールアドレスにCSVまたはXLSXを自動送付できます。配信時刻は広告アカウントのタイムゾーンで朝5〜6時ごろが目安です(公式SLAは公表なし・実運用ベース)。

地味な落とし穴が1つ。3か月間誰もレポートをダウンロードしないと、配信が自動停止する仕様です。「メールで受け取って眺めるだけ」の運用だと気づかないうちに止まるので、定期的に開く習慣か、停止時に気づける体制をセットにしてください。

やり方2: コネクタ・ETLツールでBigQueryやBIへ流す

実装なしでBigQueryやLooker Studioに流すなら、有料ツールです。構図はMetaと同じで、Looker StudioのTikTok公式コネクタはありません。

  • Looker Studioで見たい: SupermetricsやWindsor.aiなどのパートナーコネクタを契約します
  • BigQueryに蓄積したい: trocco(日本語ドキュメントあり)・Fivetran・AirbyteにTikTok Adsコネクタがあります

ツール費用の対価は、この後説明するAPI審査・仕様制約・型変換をすべて肩代わりしてくれることです。ツール比較の全体像は広告レポート自動化ツール比較|主要9ツールの料金・対応媒体・選び方にまとめています。

やり方3: Marketing APIで自由に取得する

無料で完結し、自由度も最大のやり方です。現行バージョンはv1.3(ベースURL https://business-api.tiktok.com/open_api/v1.3)。利用開始までの流れはこうなります。

開発者登録会社ドメイン審査・〜3営業日
アプリ作成用途・権限審査・2〜3営業日
広告主の認可認可URLを承認
トークン発行無期限・更新不要
個人メール・個人サイトでは開発者登録が通らない。会社ドメインのメールアドレスと、事業内容が分かる公開済みの自社サイトを先に用意する
TikTok Marketing API利用開始までの流れ。審査は2段階だが、通ってしまえばトークンは無期限で使える

手順1: 開発者登録(Developer Registration)を通す

TikTokのAPIで最初の山は実装ではなく審査です。チェックされるのは「実在する会社か」で、事前に次の条件を満たしていることを確認してください。

  • 会社ドメインのメールアドレスを用意する(例: taro@yourcompany.co.jp。Gmail・Yahoo・iCloudなどのフリーメール、および ~.wixsite.com のような無料サブドメインは却下されます)
  • 事業内容が分かる公開済みの自社サイトがあり、そのドメインがメールのドメインと一致している(Facebookページ・Xプロフィール・楽天/Amazon店舗ページ・bit.lyなどの短縮URLは不可)
  • API利用目的の説明文を日本語または英語で準備する(例: 「自社が運用するTikTok広告アカウントの配信実績(インプレッション・クリック・費用・コンバージョン)を日次でBigQueryに保存し、社内BIで可視化するため」)
  • TikTok for Businessアカウントの新規作成時にはSMS認証(携帯番号必須)とメール認証の2段階があるため、会社携帯または業務用番号を事前に用意しておく

準備できたら、以下の手順で登録します。

  1. ブラウザで https://business-api.tiktok.com/portal を開きます
  2. 画面右上の Log in(ログイン)ボタンをクリックし、TikTok for Businessアカウントでログインします。TikTok for Businessアカウントがない場合は、同じログイン画面下部の Sign up から会社ドメインのメールアドレスで新規作成します(この段階でフリーメールを入れると次のステップで詰みます。作成時にはパスワード設定に加え、メール認証コード入力とSMS認証コード入力の2段階を求められます)
  3. ログイン後、ポータルのトップ画面に「Become a developer」の案内が出るので、その中の Register ボタン、または画面右上のアバターアイコン → Developer infoRegister をクリックします
  4. 「Developer registration」フォームが開きます。次のフィールドを埋めてください(フィールド名は英語表記のままです)。
    • Company / Organization name: 登記されている法人名(例: Evast Inc.
    • Company website: 事業内容が分かる自社サイトのトップURL(例: https://evast.jp)。上のメールと必ず同一ドメインにすること
    • Business email: 会社ドメインのメールアドレス
    • Country/Region: Japan
    • Industry: 自社の該当業種(例: Marketing & Advertising
    • Use case: 用意しておいた利用目的の説明文を貼り付け
  5. 画面下部の Submit ボタンをクリック。送信直後に画面上部に「Your application is under review」と表示されれば申請成功です。同じ内容が登録メールにも届きます
  6. 審査結果は概ね3営業日以内にメールで通知されます(件名例: [TikTok API for Business] Developer registration result)※TikTokは公式SLAを公表していないため実務ベースの目安です。承認されるとポータル右上のバッジが Registered developer に変わります

※画面表記はTikTok側の更新でバージョンによって差異が出る場合があります。ラベルが微妙に違っても、意味が対応していれば問題ありません。

手順2: 開発者アプリ(Developer App)を作成する

開発者登録が承認されたら、次に「アプリ」を作ります。アプリ単位で App IDSecret、認可URL、レート制限枠が発行されます。

  1. https://business-api.tiktok.com/portal にログインした状態で、画面左サイドバーの My Apps をクリックします
  2. 一覧画面の右上、青い + Create an app ボタンをクリックします
  3. 「Create an app」フォームが開くので、次のフィールドを埋めます。
    • App name: 任意の識別名(例: evast-tiktok-report)。あとから広告主に見える名前なので、社名を含めて分かりやすくします
    • App description: アプリの機能を1〜3文で(例: Fetches daily ad performance (spend, impressions, clicks, conversions) for our own TikTok Ads accounts and stores it in BigQuery for internal dashboards.
    • Advertiser Redirect URL: OAuth認可後にリダイレクトされるURL。HTTPS必須・絶対URL・クエリパラメータ不可です。本番URLが未定なら、いったん https://example.com/callback と入力してください(後から Edit で変更可能)。localhostは登録不可なので、ローカル検証時はngrokなどでHTTPS化するか、ダミーURLに来た auth_code をブラウザのアドレスバーからコピペする運用にします
    • Scope of Permission: レポート取得だけなら以下2つにチェックを入れれば十分です。
      • Ad Account ManagementAd Account Information(読み取り)
      • ReportingAds Reporting(読み取り)
      • ※不要なスコープを付けると審査で「用途と一致しない」と差し戻される確率が上がります
  4. 画面下部 Confirm をクリック。確認モーダルが出るのでもう一度 Confirm をクリックします
  5. 一覧の該当アプリの Status 列が Under review になれば申請成功です。概ね2〜3営業日で承認されると In service に変わります(TikTokは公式SLA未公表・実務ベースの目安)
  6. 承認後、アプリ名をクリックすると詳細画面に遷移し、次の情報が表示されます。このページは何度でも開けますが、Secret は初回表示のみコピー可能な場合があるので、その場でメモしてシークレットマネージャに保存してください。
    • App ID: 19桁前後の数字(実装上そう見えることが多いだけで公式仕様ではありません)
    • Secret: 40文字程度の英数字
    • Advertiser authorization URL: 手順3で広告主に開いてもらう認可URL(https://business-api.tiktok.com/portal/auth?app_id=...&state=...&redirect_uri=... の形式)。※このURLは In service 承認後にのみ有効です。審査中は表示されていてもクリックしないでください(もしくは後述のSandbox用URLを使ってください)

なお、Sandbox環境はアプリ詳細画面上部の Sandbox タブから作成できます。+ Create Sandbox をクリックすると審査不要でSandbox広告アカウント(モックデータ入り)が発行され、本番審査を待つ間に実装を先に進められます。Sandbox作成直後の画面で専用の access_token が発行されるので、その場でコピーしてシークレットマネージャに保存してください。BASE URLは本番と同じ https://business-api.tiktok.com/open_api/v1.3 で、advertiser_id にSandbox用のIDを渡せば本番と同じコードで動きます。本番承認後は access_tokenadvertiser_id を差し替えるだけで移行できます。

手順3: 広告主の認可を受けて無期限アクセストークンを取得する

アプリ詳細画面の Advertiser authorization URL を、実際に運用したい広告アカウントの管理者権限を持つユーザーに開いてもらいます。

  1. 認可URLを開くと、TikTok for Businessのログイン画面が表示されます。広告アカウント管理者がログインします
  2. 認可対象の広告主(Advertiser)を選択する画面が出るので、対象アカウントにチェックを入れ、Confirm をクリックします
  3. スコープ確認画面が出たら Confirm をクリック。手順2で登録した Advertiser Redirect URL にリダイレクトされ、URLのクエリパラメータに auth_code=XXXX&state=YYYY が付いた状態でブラウザに表示されます
    • ※ダミーURL(https://example.com/callback)を登録した場合、リダイレクト先は404画面になりますがこれは正常です。ブラウザのアドレスバーに表示されているURL全体(例: https://example.com/callback?auth_code=abc123xyz&state=xyz789)をコピーし、auth_code=&state= の間の文字列(この例では abc123xyz)だけを取り出してください
  4. この auth_code30分で失効し、1回しか使えません(TikTok公式仕様: The auth_code expires in 30 minutes and can be used only once)。取得したらすぐに次のトークン交換を実行してください

トークン交換は POST /oauth2/access_token/ にJSONで投げます。まずはcurlで動作確認する例です。

curl -L -X POST 'https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/' \
  -H 'Content-Type: application/json' \
  -d '{
    "app_id": "YOUR_APP_ID",
    "secret": "YOUR_APP_SECRET",
    "auth_code": "AUTH_CODE_FROM_REDIRECT"
  }'

成功すると次のようなJSONが返ります。

{
  "code": 0,
  "message": "OK",
  "data": {
    "access_token": "abcdef0123456789...",
    "advertiser_ids": ["1234567890123456789"],
    "scope": [4]
  }
}

data.access_token が無期限のアクセストークンです。公式ドキュメントに「The token does not expire.」と明記されており、Metaの60日長期トークンのような定期更新は不要です。裏を返すと漏洩時のリスクは大きい。以下を守ってください。

  • コードに直書きせず、環境変数・GCP Secret Manager・AWS Secrets Managerなどに保存する
  • 不要になったらすぐに失効エンドポイントを叩く。curlの例は次のとおり。
curl -L -X POST 'https://business-api.tiktok.com/open_api/v1.3/oauth2/revoke_token/' \
  -H 'Content-Type: application/json' \
  -d '{
    "app_id": "YOUR_APP_ID",
    "secret": "YOUR_APP_SECRET",
    "access_token": "REVOKE_TARGET_ACCESS_TOKEN"
  }'
  • 万が一Gitへコミットしてしまった場合は、リポジトリから消すだけでは不十分。必ず失効エンドポイントで無効化してから再取得する

なお、レスポンスの scope は付与された権限の内部コードで、4Ads Reporting100Ad Account Information に相当します。手順2でチェックを入れたスコープの数だけ配列に入っていれば正しい状態です。

data.advertiser_ids が、このトークンで叩ける広告主IDのリストです。この値は次のレポート取得で必須なのでトークンとセットで保存してください。

手順4: /report/integrated/get/ でレポートを取得する

トークンと advertiser_id が揃えば、あとはレポートAPIを叩くだけです。同期エンドポイント1本が基本で、キャンペーン別×日別の主要指標を取る例がこちらです。

(A)curlで動作確認

curl -G 'https://business-api.tiktok.com/open_api/v1.3/report/integrated/get/' \
  -H 'Access-Token: YOUR_ACCESS_TOKEN' \
  --data-urlencode 'advertiser_id=1234567890123456789' \
  --data-urlencode 'report_type=BASIC' \
  --data-urlencode 'data_level=AUCTION_CAMPAIGN' \
  --data-urlencode 'dimensions=["campaign_id","stat_time_day"]' \
  --data-urlencode 'metrics=["campaign_name","spend","impressions","clicks","conversion","cost_per_conversion"]' \
  --data-urlencode 'start_date=2026-07-01' \
  --data-urlencode 'end_date=2026-07-28' \
  --data-urlencode 'page=1' \
  --data-urlencode 'page_size=200'

{"code": 0, "message": "OK", "data": {"list": [...], "page_info": {...}}} が返れば成功です。code が0以外なら message にエラー内容が入ります。

独特な仕様は次の3つ。

  • 認証ヘッダーは Authorization: Bearer ではなく Access-Token(この名前のカスタムヘッダー)を使う
  • dimensionsやmetricsはJSON配列を文字列にしてURLエンコードして渡す(curlの --data-urlencode が自動でやってくれます)
  • data_leveldimensions の整合が必須。AUCTION_CAMPAIGN なら campaign_id を、AUCTION_AD なら ad_id を必ずdimensionsに含めないと code: 40002 で弾かれる

(B)Pythonでコピペ実行できる完全形

以下は requests だけで動きます。ターミナルで次のようにセットアップします。

# Python 3.9以上を推奨。仮想環境で実行してください
python3 -m venv .venv
source .venv/bin/activate  # Windowsは .venv\Scripts\activate
pip install requests

以下を fetch_tiktok_report.py として保存します。

"""TikTok Marketing API v1.3 で日別キャンペーンレポートを取得する最小例。
使い方:
  1. 下記 2 つの環境変数をセットする
       export TIKTOK_ACCESS_TOKEN="手順3で取得した access_token"
       export TIKTOK_ADVERTISER_ID="advertiser_ids の1つ"
  2. python fetch_tiktok_report.py
"""

import os
import json
import time
import requests

BASE = "https://business-api.tiktok.com/open_api/v1.3"

# ▼▼ 書き換え箇所(環境変数に置くのが安全) ▼▼
TOKEN = os.environ.get("TIKTOK_ACCESS_TOKEN", "YOUR_ACCESS_TOKEN")
ADVERTISER_ID = os.environ.get("TIKTOK_ADVERTISER_ID", "1234567890123456789")
# ▲▲ 書き換え箇所ここまで ▲▲


def fetch_daily_campaign_report(start_date: str, end_date: str):
    """start_date〜end_date(YYYY-MM-DD, 最大30日)のキャンペーン別×日別レポート。"""
    rows, page = [], 1
    while True:
        r = requests.get(
            f"{BASE}/report/integrated/get/",
            headers={"Access-Token": TOKEN},
            params={
                "advertiser_id": ADVERTISER_ID,
                "report_type": "BASIC",
                "data_level": "AUCTION_CAMPAIGN",
                "dimensions": json.dumps(["campaign_id", "stat_time_day"]),
                "metrics": json.dumps([
                    "campaign_name", "spend", "impressions",
                    "clicks", "conversion", "cost_per_conversion",
                ]),
                "start_date": start_date,
                "end_date": end_date,
                "page": page,
                "page_size": 200,
            },
            timeout=60,
        )
        # HTTPレベルのエラー(401/429/5xx など)
        if r.status_code != 200:
            raise RuntimeError(f"HTTP {r.status_code}: {r.text}")
        body = r.json()
        # アプリケーションレベルのエラー(TikTokは常に200を返し、code!=0で失敗を示す)
        if body.get("code") != 0:
            raise RuntimeError(f'TikTok API error {body["code"]}: {body["message"]}')
        rows += body["data"]["list"]
        total_page = body["data"]["page_info"]["total_page"]
        if page >= total_page:
            return rows
        page += 1
        time.sleep(0.2)  # 10QPS制限に配慮した控えめなウェイト


if __name__ == "__main__":
    # 例: 2026年7月分(30日以内)
    result = fetch_daily_campaign_report("2026-07-01", "2026-07-28")
    print(f"取得件数: {len(result)}")
    # metricsの値はすべて文字列で返る。集計する場合は float() / int() 変換必須
    for row in result[:3]:
        d = row["dimensions"]
        m = row["metrics"]
        print(f"{d['stat_time_day']} camp={d['campaign_id']} "
              f"spend={float(m['spend']):.0f}円 CV={float(m['conversion']):.0f}")

実行します。

export TIKTOK_ACCESS_TOKEN="abcdef0123456789..."
export TIKTOK_ADVERTISER_ID="1234567890123456789"
python fetch_tiktok_report.py

取得件数: 84 のように件数が出て、3行分のサンプルが表示されれば成功です。配信実績のない広告アカウントや期間を指定した場合は 取得件数: 0 で終了しますが、エラーが出ずに終わっていれば認証・パラメータともに正しく通っている合図です。実データを見たい場合は、配信実績のあるアカウントIDと期間で再実行してください。

(C)GASでスプレッドシートに書き出す場合

先にGoogleスプレッドシートを新規作成してください(https://sheets.new が最短)。開いたスプレッドシートのメニューから 拡張機能Apps Script をクリックすると、そのシートに紐づいた(コンテナバインドの)Apps Scriptエディタが開きます。※ここで https://script.google.com から「新しいプロジェクト」を作ってしまうと、後述の SpreadsheetApp.getActiveSpreadsheet()null を返し TypeError になるので、必ずスプレッドシート側の拡張機能から開いてください。

エディタが開いたら、以下を貼り付けます。トークンはコード内に直書きせず、エディタ左サイドバーの歯車アイコン プロジェクトの設定 → 下部 スクリプト プロパティスクリプト プロパティを追加 で、TIKTOK_ACCESS_TOKENTIKTOK_ADVERTISER_ID の2つを登録してください。

function fetchTikTokDailyReport() {
  const props = PropertiesService.getScriptProperties();
  const token = props.getProperty('TIKTOK_ACCESS_TOKEN');
  const advertiserId = props.getProperty('TIKTOK_ADVERTISER_ID');

  const params = {
    advertiser_id: advertiserId,
    report_type: 'BASIC',
    data_level: 'AUCTION_CAMPAIGN',
    dimensions: JSON.stringify(['campaign_id', 'stat_time_day']),
    metrics: JSON.stringify(['campaign_name', 'spend', 'impressions', 'clicks', 'conversion', 'cost_per_conversion']),
    start_date: '2026-07-01',
    end_date: '2026-07-28',
    page: 1,
    page_size: 200,
  };
  const qs = Object.entries(params)
    .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
    .join('&');
  const url = `https://business-api.tiktok.com/open_api/v1.3/report/integrated/get/?${qs}`;

  const res = UrlFetchApp.fetch(url, {
    headers: { 'Access-Token': token },
    muteHttpExceptions: true,
  });
  const body = JSON.parse(res.getContentText());
  if (body.code !== 0) throw new Error(`TikTok API error ${body.code}: ${body.message}`);

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear();
  sheet.appendRow(['date', 'campaign_id', 'campaign_name', 'spend', 'impressions', 'clicks', 'conversion', 'cpa']);
  body.data.list.forEach((row) => {
    const d = row.dimensions,
      m = row.metrics;
    sheet.appendRow([
      d.stat_time_day,
      d.campaign_id,
      m.campaign_name,
      Number(m.spend),
      Number(m.impressions),
      Number(m.clicks),
      Number(m.conversion),
      Number(m.cost_per_conversion),
    ]);
  });
}

エディタ上部の関数選択で fetchTikTokDailyReport を選び、実行 ボタンをクリック。初回のみ「承認が必要」ダイアログが出るので、権限を確認 → 自分のGoogleアカウントを選択 → 詳細(プロジェクト名)に移動許可 の順にクリックします。承認画面では 外部URLへの接続(UrlFetchApp)スプレッドシートの表示・編集 の2つのスコープをまとめて求められるので、両方を許可してください。アクティブなシートに1行目ヘッダー+日別行が書き込まれれば成功です。

日次のキャンペーンレポート程度であれば、同期エンドポイント1本で完結します。広告単位で1年分のデータをまとめて取りたくなった時点で、非同期レポート(/report/task/create//report/task/check//report/task/download/ の3段構え)の申請を検討してください(TikTokのドキュメントに「別途申請が必要」と案内されており、実務でも許可制で運用されているようです)。

CVがブレる媒体だからこそAIに毎日見せる

数字が自動で集まるようになったら、分析もAIに任せられます。TikTokで特に価値が出るのは、クリエイティブの疲弊(フリークエンシー上昇とCTR低下)をAIに監視させる使い方です。取得した広告別×日別のCSVをChatGPT・Gemini・Claudeに渡し、こう指示します。

添付はTikTok広告の広告別・日別実績(過去30日)です。
1. CTRが低下傾向にあり、差し替えを検討すべき広告
2. 配信を伸ばすべき広告と、その根拠
3. 全体のCPA推移から読み取れる注意点
を、数字を引用しながら簡潔にまとめてください。

TikTokはクリエイティブの消耗が他媒体より速いため、この監視を週次で回すだけでも成果が変わります。

やり方2・3でBigQueryに蓄積している場合は、「SQLで前日分を集計→生成AIのAPIに考察を書かせる→Slackに配信」という日次パイプラインまで組めます。組み方は他媒体と同じで、コツも同じ。生データを丸投げせず、集計してから渡す。TikTokは数値が文字列で返る仕様もあるため、型変換と集計を済ませたきれいな数十行を渡すのが精度への近道です。

こうしたAI分析・異常検知を既製で載せたい場合は、私たちのアドヨミAIのように、広告データのBigQuery集約とAI考察をセットで提供するサービスという選択肢もあります。

落とし穴は事前に知っておく(実務で刺さる5つ)

公式ドキュメントに書いてはあるものの、作ってみて初めて効いてくるポイントです。

  1. 数値がぜんぶ文字列で返る。spendclicks"34" のような文字列です。型変換せずにBigQueryへ流し込んで集計が壊れるのは定番なので、取り込み時に数値化を挟みます。

  2. 日別取得は1リクエスト30日まで。stat_time_day を含めると期間上限が30日になります。時間ディメンションを含めない合計値なら最大90日までを1リクエストで取得可能です(start_dateend_date に指定できる期間の絶対上限自体は365日ですが、これは複数リクエストに分けたときの累計上限)。過去1年分の日別データが欲しければ、30日ずつ12回に分けてループする実装が必要です。

  3. CVが後から増える。標準の conversion は、CV発生日ではなく広告に接触した日に紐づけて計上されるため、アトリビューション期間内は過去日の数字が遡って増えます。蓄積するなら直近30日程度を毎回洗い替える設計にし、CV発生日ベースが必要なら real_time_conversion を使います。Google(クリック日計上)とも管理画面の見え方とも混同しやすい、TikTok特有の癖です。

  4. 前日分は翌朝9時以降に取る。リアルタイムデータには通常30分〜2時間程度の遅延があり、一部ディメンションでは半日以上遅れて確定するケースも報告されています(TikTok公式に明示的な数値記載は見当たらず、実運用ベースの目安)。日次バッチはアカウントのタイムゾーンで朝9時以降が安全です。

  5. レート制限はアプリ単位。デフォルト(Basic)は一般に10QPSと言及されており、広告アカウント単位ではなくアプリ単位の共有枠として運用されます(日次上限の具体値はTikTokが公表していないため、実測ベースで把握するのが安全です)。代理店が1つのアプリで数十アカウントを回すと枠を食い合うので、リクエストの時間分散か、上位レベルへの引き上げ申請を検討します。

入口は重い、運用は軽い(他媒体との比較)

シリーズ4媒体で比べると、TikTokは「入口が最も重く、運用が最も軽い」媒体です。Googleは開発者トークン、Yahoo!は法人のAPI申し込みMetaはアプリ作成だけで入れる代わりにトークン管理が重いのに対し、TikTokは会社ドメインでの審査を2回通す必要がある一方、通ってしまえば無期限トークンで淡々と回り続けます。

判断はシンプルです。会社ドメインのメールと自社サイトが用意できるなら、迷わずAPI直連携で行くのが総コスト最小。逆に、フリーメールしかない・自社サイトが未整備、あるいはTikTokだけで月10万円未満の小規模運用なら、最初からやり方1のスケジュールレポートか、やり方2のツールに寄せて審査時間を買うのが早い。外注する場合の費用相場は広告レポート自動化の費用は?ツール・代行の料金相場と選び方にまとめています。

私たちのアドヨミAIは、Google・Yahoo!・Meta・TikTokなどの広告データをAPIで自動連携し、自社所有のBigQueryに集約するサービスです。媒体ごとに違う審査・仕様・型の癖を吸収した状態で、初期5万円・月1.5万円〜/媒体から運用できます。

まとめ:審査を通せば、いちばん手のかからないAPI

  • TikTok広告の自動化のやり方は3つ。スケジュールレポート(無料・メール)/コネクタ・ETL(有料)/Marketing API(無料・審査あり)
  • API利用の入口は会社ドメインのメール+自社サイトの審査。個人・フリーランスは実質不可
  • 審査は開発者登録3営業日+アプリ2〜3営業日が実務ベースの目安。Sandboxで実装を先行できる
  • アクセストークンは無期限。Metaのような失効対応は不要
  • 落とし穴は、数値が文字列・日別30日制限・CVの遡り増加・前日分は朝9時以降・アプリ単位のレート制限
  • 審査を通せない場合は、スケジュールレポートかツールに最初から寄せる
  • 集めたデータはAIにつないでクリエイティブ疲弊の検知・日次サマリまで自動化できる

まずはSandboxアカウントでモックデータのレポートを1本取ってみると、仕様の癖が30分で体感できます。


TikTok広告を含む複数媒体のレポート自動化はEvastへ

株式会社EvastのアドヨミAIは、Google・Yahoo!・Meta・TikTokなど主要媒体の広告データをAPIで自動連携し、自社所有のBigQueryに集約する半スクラッチ型の広告レポート自動化・AI分析サービスです。

  • 「媒体ごとのAPI審査や仕様の違いを自社で追いかけたくない」
  • 「TikTokも含めた全媒体を、同じ定義で1つのダッシュボードに揃えたい」
  • 「レポートだけでなく、AIでの分析や異常検知まで載せたい」

現状の運用の棚卸しからで構いません。1媒体・最短2週間から始められます。

アドヨミAIの詳細・料金を見る無料相談を申し込む

よくある質問

TikTok広告のAPIは個人やフリーランスでも使えますか?
実務上は難しいです。開発者登録の審査では会社ドメインのメールアドレスが必須で、フリーメールや個人メールは却下されます。加えて、事業内容が分かる公開済みの自社サイトがあり、メールのドメインと一致していることもチェックされます。SNSページやECモール上のページ、短縮URLは不可です。法人でこの条件を満たせば、開発者登録は概ね3営業日以内、アプリ審査は2〜3営業日が実務ベースの目安です(TikTok公式SLAではありません)。
TikTok広告のアクセストークンに有効期限はありますか?
広告アカウントの認可で取得する長期アクセストークンは無期限です。Metaの長期トークン(約60日)やGoogleのような定期的なトークン更新の実装は不要で、一度取得すれば失効させない限り使い続けられます。そのぶん漏洩時のリスクは大きいため、トークンはコードに直書きせずシークレット管理に置き、不要になったら失効エンドポイントで無効化してください。
プログラミングなしでTikTok広告のレポートを自動化できますか?
できます。広告マネージャーのカスタムレポートにはスケジュール実行機能があり、毎日・毎週・月初・月末の頻度で最大5つのメールアドレスにCSVまたはXLSXを自動送付できます。配信は広告アカウントのタイムゾーンで朝5〜6時ごろが実運用ベースの目安です。1点だけ注意があり、3か月間誰もレポートをダウンロードしないと配信が自動停止します。受け取るだけの運用でも、たまに開く習慣をつけてください。
APIで取ったコンバージョン数が日によって変わるのはなぜですか?
仕様です。標準のconversion指標は、CVが発生した日ではなく広告に接触した日に紐づけて計上されるため、アトリビューション期間内は過去日の数値が後から増えます。昨日取得した先週分と今日取得した先週分が一致しないのはこのためです。BigQueryなどに蓄積する場合は直近30日程度を毎回洗い替える設計にします。CV発生日ベースの数値が必要な場合はreal_time_conversion指標を使い分けてください。
TikTok広告をLooker Studioで見るにはどうすればいいですか?
TikTok公式のLooker Studioコネクタは無いため(2026年7月時点)、方法は2つです。1つはSupermetricsやWindsor.aiなどサードパーティの有料コネクタを使う形。もう1つはETLツール(trocco・Fivetranなど)やMarketing APIでBigQueryにデータを集め、Looker StudioからBigQueryを参照する形です。他媒体との横断分析や自社データとの組み合わせまで見据えるなら、BigQuery集約型が向いています。
Back to Blog

Related Posts

View All Posts

Amazon広告のレポート自動化|Amazon Ads APIの使い方

Amazon広告のレポート自動化は、まず「Amazon Ads API」と出品者業務向けの「SP-API」を混同しないことが出発点です。LWA(Login with Amazon)でのOAuth認証、API利用申請、Profile ID取得の手順から、reporting/reportsへのレポートリクエスト→ステータスのポーリング→ダウンロードという非同期取得の3ステップ、Pythonの実コードまでを、2026年8月時点で確認できる公式情報に沿って整理します。

Google広告レポート自動化のやり方|API・BigQuery連携からAI分析まで

Google広告レポート自動化のやり方|API・BigQuery連携からAI分析まで

Google広告の日次レポートは、無料の公式手段だけで自動化できます。Looker Studio・Google Adsスクリプト・BigQuery Data Transfer・Ads API直連携それぞれの設定のやり方、開発者トークン申請とGAQL・Pythonの実コード、そして集めたデータをChatGPTやGeminiにつないで考察・日次サマリまで自動化する方法、リフレッシュトークン失効などの落とし穴を、2026年7月時点の公式情報で整理します。

Meta広告(Facebook)レポート自動化のやり方|APIからAI分析まで

Meta広告(Facebook)レポート自動化のやり方|APIからAI分析まで

Meta広告のレポート自動化でつまずくのは、公式コネクタが無いことと、トークンの静かな失効です。この記事はMarketing API直連携を軸に、システムユーザートークンでの無期限運用と、管理画面との数値ずれの直し方までまとめました。

Yahoo!広告レポート自動化のやり方|広告APIの使い方とAI分析

Yahoo!広告レポート自動化のやり方|広告APIの使い方とAI分析

Yahoo!広告はLooker Studioの公式コネクタが無く、Google広告と同じ感覚で自動化しようとすると手が止まる。管理画面のメール配信、API申請不要のYahoo!広告スクリプト、そしてLINEヤフー広告APIの直連携まで、それぞれのやり方と実コード、集めたデータをAIにつなぐところまでを2026年7月時点の公式情報で整理した。