adafi tips

PR / 18歳未満閲覧禁止

DMMフロアAPIの使い方|商品検索に渡すフロアのコード一覧

公開日
更新日
タグ
API
DMMフロアAPIの使い方|商品検索に渡すフロアのコード一覧

DMMのフロアAPI(FloorList)は、DMM.comとFANZAの売り場を「サイト→サービス→フロア」の3段で返すAPIです。商品検索APIに渡すサービスとフロアのコードと、ジャンル検索APIに渡すフロアIDは、ここで調べられます。2026年10月17日に呼ぶと、2つのサイトに11のサービス、39のフロアがありました。

商品検索APIの service や floor に、何を入れればいいのか。2023年12月のオーナーもそこで手が止まり、商品検索APIの次にフロアAPIを触っています。この記事は、そのときの記録を、記事担当の伊緒が今のAPIで呼び直して書き直したもの。

いちばん大事なのは、同じ売り場でも、APIによって渡す値が違うこと。商品検索にはコードの組を、ジャンル検索には数字のフロアIDを渡します。

「どんなフロアがあるか分からないと使えない」というオーナーの言い分は、珍しく正しいと思います。

昼、デパートの1階のフロア案内の板の前で、伊緒が色分けされた売り場の帯を、上の段から指でたどって確かめている

フロアAPIで返ってくる項目

フロアAPIは条件を指定せずに呼び、全部の売り場を1回で返します。渡すのは、API ID・アフィリエイトID・出力の形式(json か xml)だけです。

階層項目中身例
サイトname・codeサイトの名前とコードFANZA(アダルト)・FANZA
サービスname・codeサービスの名前とコード動画・digital
フロアname・code・idフロアの名前・コード・IDビデオ・videoa・43

商品検索APIの site・service・floor にはそれぞれのコードを、ジャンル検索APIの floor_id にはフロアのIDを渡します。

サービスとフロアのコード一覧

2026年10月17日にフロアAPIが返した39のフロアを、そのまま表にしました。フロアの名前は、APIが返す文字のままです。

図解。フロアAPIが返した売り場は、2つのサイト・11のサービス・39のフロアの入れ子。FANZAは7サービス・23フロアで、動画(digital)4、月額動画(monthly)3、通販(mono)6、アダルトPCゲーム(pcgame)1、同人(doujin)3、FANZAブックス(ebook)5、FANZAブックス読み放題(unlimited_book)1。DMM.comは4サービス・16フロアで、AKB48グループ(lod)7、DMMブックス(ebook)4、通販(mono)4、DMMTV(dmmtv)1。2026年10月17日に呼んだときの形

FANZAの23フロア

フロアの名前サービス(コード)フロアのコードフロアID
ビデオ動画(digital)videoa43
素人動画(digital)videoc44
成人映画動画(digital)nikkatsu45
アニメ動画動画(digital)anime46
見放題ch デラックス月額動画(monthly)premium68
VRch月額動画(monthly)vr91
見放題ch月額動画(monthly)standard98
DVD通販(mono)dvd74
大人のおもちゃ通販(mono)goods75
アニメ通販(mono)anime76
PCゲーム通販(mono)pcgame77
ブック通販(mono)book78
フィギュア・グッズ通販(mono)figure94
アダルトPCゲームアダルトPCゲーム(pcgame)digital_pcgame80
同人同人(doujin)digital_doujin81
らぶカル(BL)同人(doujin)digital_doujin_bl99
らぶカル(TL)同人(doujin)digital_doujin_tl100
コミックFANZAブックス(ebook)comic82
美少女ノベル・官能小説FANZAブックス(ebook)novel83
アダルト写真集・雑誌FANZAブックス(ebook)photo84
BLFANZAブックス(ebook)bl96
TLFANZAブックス(ebook)tl97
FANZAブックス読み放題FANZAブックス読み放題(unlimited_book)unlimited_comic92

DMM.comの16フロア

フロアの名前サービス(コード)フロアのコードフロアID
AKB48AKB48グループ(lod)akb481
SKE48AKB48グループ(lod)ske482
NMB48AKB48グループ(lod)nmb483
HKT48AKB48グループ(lod)hkt484
NGT48AKB48グループ(lod)ngt485
REVIVAL!! ON DEMANDAKB48グループ(lod)rod6
STU48AKB48グループ(lod)stu4893
コミックDMMブックス(ebook)comic19
写真集DMMブックス(ebook)photo20
文芸・ラノベDMMブックス(ebook)novel21
ビジネス・実用DMMブックス(ebook)otherbooks22
DVD・Blu-ray通販(mono)dvd25
CD通販(mono)cd26
本・コミック通販(mono)book27
ホビー通販(mono)hobby29
DMMTVDMMTV(dmmtv)dmmtv_video95

表を見ると、同じフロアのコードが別の売り場にもあることが分かります。anime はFANZAの動画と通販の両方にあり、comic・novel・photo は、DMM.comとFANZAの電子書籍で、サービスのコード(ebook)まで同じです。フロアのコードだけでは売り場が決まらないので、サイトとサービスのコードと組にして扱います。

図解。フロアのコード comic は、サービスがどちらも ebook で、サイトで見分ける。site=DMM.com ならDMMブックスのコミック(ID 19)、site=FANZA ならFANZAブックスのコミック(ID 82)。フロアのコード anime は、サイトがどちらも FANZA で、サービスで見分ける。service=digital ならFANZAのアニメ動画(ID 46)、service=mono ならFANZAの通販のアニメ(ID 76)。売り場は、サイト・サービス・フロアの3つのコードの組で決まる

当時の記事でオーナーは、DMMには家電・CD・漫画本・ホビーなどの売り場もあると書いていました。今の一覧には、CD・本・ホビーはあるものの、家電のフロアはありません。また、公式ドキュメントの例に出ているDMM.comの「映画・ドラマ(cinema)」も、今の応答には入っていませんでした。売り場は変わるので、コードはときどきフロアAPIで確かめ直します。

表は、DMM フロア一覧のツールでも、その日の内容で見られます。名前から探すなら、ブラウザのページ内検索が早いと思います。

同じ名前のコードが、DMM.comとFANZAの両方にあるんです。表に写しながら、2回ほど取り違えそうになりました。

商品検索とジャンル検索への渡し方

商品検索APIには site・service・floor のコードを3つそろえて、ジャンル検索APIには floor_id の数字を1つ渡します。FANZAのビデオなら、商品検索は site=FANZA&service=digital&floor=videoa、ジャンル検索は floor_id=43 です。

図解。同じ売り場「FANZAのビデオ」に、商品検索APIは site=FANZA・service=digital・floor=videoa の3つのコードの組で、ジャンル検索APIは floor_id=43 の数字のIDを1つで入る

商品検索で組を間違えたときの返り方は、2026年10月17日に試すと次のようになりました。

間違え方返り方
サービスを省く400のエラー(floor が Invalid)
サービスに無いフロア400のエラー(floor が Invalid)
サイトが違うエラーにならず、0件
フロアを省く通販の全フロアから返る(100件のうちDVD 56件・大人のおもちゃ35件など)

渡した値は、上から順に次のとおりです。

site=FANZA&floor=videoa
site=FANZA&service=digital&floor=dvd
site=DMM.com&service=digital&floor=videoa
site=FANZA&service=mono

3つ目のように、エラーにならずに0件で返る組があります。商品検索で0件が返ってきたら、まずこの表でサイトとサービスの組を確かめてください。

夕方、デパートの階段の踊り場で、伊緒が行きたかった階を通り過ぎたことに気づき、手すりに手を置いて下の階をふり返っている

ジャンル検索は、フロアによって0件のところがあります。AKB48グループの7フロア・DMMTV・見放題ch(98)・FANZAブックスのBL(96)とTL(97)は、ジャンルが1件も返りませんでした。

PHPのコード:フロアの一覧と、渡す値を表にする

オーナーが2023年に書いたコードは、2026年10月17日にそのまま動かしても、2サイト・11サービス・39フロアを警告なしで表示できました。ただ、当時の記事にあった「パラメーターの api_key を書き換えて」は、実際のパラメーター名 api_id の書き間違いです。

自分のサイトで使うなら、エラーのときに理由が見えるようにして、文字もエスケープしておきたいところ。各APIに渡す値をそのまま書いた表の形に、コードを直しました。

<?php
// DMM フロアAPI(FloorList)で、売り場の一覧と、各APIに渡す値を表にする
const API_ID = 'あなたのAPI ID';
const AFFILIATE_ID = 'あなたのアフィリエイトID'; // 末尾が990〜999のもの

$query = http_build_query(['api_id' => API_ID, 'affiliate_id' => AFFILIATE_ID, 'output' => 'json']);
$context = stream_context_create(['http' => ['ignore_errors' => true, 'timeout' => 10]]);
// 先頭の @ は、つながらなかったときの警告に API ID 入りの URL を出さないため
$body = @file_get_contents('https://api.dmm.com/affiliate/v3/FloorList?' . $query, false, $context);
$result = json_decode((string) $body, true)['result'] ?? null;
$sites = $result['site'] ?? null;
if (!is_array($sites)) {
    // エラーの理由は result に入っている。応答の request には API ID が入っているので、本文をそのまま出さない
    exit('APIのエラー: ' . htmlspecialchars(json_encode($result ?? '応答がありません', JSON_UNESCAPED_UNICODE)));
}

function h($value): string
{
    return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>DMM フロアAPI</title>
</head>
<body>
  <table border="1" cellpadding="4">
    <tr><th>サイト</th><th>サービス</th><th>フロア</th><th>商品検索に渡す値</th><th>ジャンル検索に渡す値</th></tr>
    <?php foreach ($sites as $site) : ?>
      <?php foreach ($site['service'] as $service) : ?>
        <?php foreach ($service['floor'] as $floor) : ?>
          <tr>
            <td><?= h($site['name']) ?></td>
            <td><?= h($service['name']) ?></td>
            <td><?= h($floor['name']) ?></td>
            <td>site=<?= h($site['code']) ?>&amp;service=<?= h($service['code']) ?>&amp;floor=<?= h($floor['code']) ?></td>
            <td>floor_id=<?= h($floor['id']) ?></td>
          </tr>
        <?php endforeach; ?>
      <?php endforeach; ?>
    <?php endforeach; ?>
  </table>

  <a href="https://affiliate.dmm.com/api/"><img src="https://pics.dmm.com/af/web_service/com_135_17.gif" width="135" height="17" alt="WEB SERVICE BY DMM.com" /></a>
  <a href="https://affiliate.dmm.com/api/"><img src="https://p.dmm.co.jp/p/affiliate/web_service/r18_135_17.gif" width="135" height="17" alt="WEB SERVICE BY FANZA" /></a>
</body>
</html>

API_ID と AFFILIATE_ID を自分の値に書き換えて使います。2026年10月17日に動かすと、39行の表が警告なしで出ました。いちばん下の2つの画像は、APIを使ったサイトに求められているクレジットの表示で、公式のHTMLのまま貼ります。

2023年のオーナーの案を、今の仕様で見直すと

当時の記事でオーナーは、フロアごとのランキングだけでも面白いコンテンツになりそうだ、と書いていました。今も、商品検索APIにサービスとフロアのコードを渡して sort=rank にすれば、そのフロアの人気順が取れます。FANZAのビデオで試すと、100件すべてがビデオのフロアの作品でした。

項目オーナーが2023年に書いたこと2026年10月17日に確かめた結果
ランキングフロアごとのランキングが、コンテンツになりそうできる。service・floor・sort=rank で、フロアの人気順が取れる
SNSと情報収集SNSでの集客や、情報収集にもAPIを使えそう使い方による。紹介するなら、DMMアフィリエイトのリンクで
ジャンル商品を絞るなら、ジャンルまで絞らないと甘いジャンル検索APIは今も使える。フロアIDを渡して、ジャンルの一覧とIDを取る

SNSで使うときに気をつけたいのは、利用規約の禁止事項です。APIで得た情報をほかのアフィリエイトプログラムで使うことと、DMMアフィリエイト以外の方法で収入を得ることが、禁止されています。

SNSでAPIの情報を使うなら、紹介のリンクはDMMアフィリエイトのものだけにしておきましょう。ここは、規約に引っかかりやすいところです。

よくある質問

フロアのコードを、プログラムに直接書いてもいい?

書いて動きますが、売り場は変わります。公式ドキュメントの例にある cinema のように、今の応答には無いフロアもあるくらいです。商品検索で急に0件やエラーが出たら、フロアAPIで今のコードを確かめてください。

サービスだけを指定して、商品検索できる?

できます。site=FANZA&service=mono で呼ぶと、DVD・大人のおもちゃ・フィギュアなど、通販の複数のフロアの作品がまとめて返りました。反対に、フロアだけを指定してサービスを省くと、400のエラーになります。

FANZAとDMM.comで、同じコードのフロアはどう見分ける?

サイトのコードで見分けます。ebook の comic は、site=DMM.com ならDMMブックスのコミック(ID 19)、site=FANZA ならFANZAブックスのコミック(ID 82)です。

この記事で作ったAPIは、ツールで試せます

キーワードや条件を変えて、APIが返す実際のデータを確かめられます。

この記事を書いた人

伊緒

オーナーの下で、記事を担当しているスタッフです。オーナーが試したことを聞いて記事にし、公式の資料やAPIで今も合っているかを確かめ直しています。週末の朝は、道場で弓を引いています。

伊緒の自己紹介|伊緒の業務日誌

「API」のほかの記事

すべて見る