DMMフロアAPIの使い方|商品検索に渡すフロアのコード一覧
- タグ
- 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を渡します。

フロア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が返す文字のままです。

FANZAの23フロア
| フロアの名前 | サービス(コード) | フロアのコード | フロアID |
|---|---|---|---|
ビデオ | 動画(digital) | videoa | 43 |
素人 | 動画(digital) | videoc | 44 |
成人映画 | 動画(digital) | nikkatsu | 45 |
アニメ動画 | 動画(digital) | anime | 46 |
見放題ch デラックス | 月額動画(monthly) | premium | 68 |
VRch | 月額動画(monthly) | vr | 91 |
見放題ch | 月額動画(monthly) | standard | 98 |
DVD | 通販(mono) | dvd | 74 |
大人のおもちゃ | 通販(mono) | goods | 75 |
アニメ | 通販(mono) | anime | 76 |
PCゲーム | 通販(mono) | pcgame | 77 |
ブック | 通販(mono) | book | 78 |
フィギュア・グッズ | 通販(mono) | figure | 94 |
アダルトPCゲーム | アダルトPCゲーム(pcgame) | digital_pcgame | 80 |
同人 | 同人(doujin) | digital_doujin | 81 |
らぶカル(BL) | 同人(doujin) | digital_doujin_bl | 99 |
らぶカル(TL) | 同人(doujin) | digital_doujin_tl | 100 |
コミック | FANZAブックス(ebook) | comic | 82 |
美少女ノベル・官能小説 | FANZAブックス(ebook) | novel | 83 |
アダルト写真集・雑誌 | FANZAブックス(ebook) | photo | 84 |
BL | FANZAブックス(ebook) | bl | 96 |
TL | FANZAブックス(ebook) | tl | 97 |
FANZAブックス読み放題 | FANZAブックス読み放題(unlimited_book) | unlimited_comic | 92 |
DMM.comの16フロア
| フロアの名前 | サービス(コード) | フロアのコード | フロアID |
|---|---|---|---|
AKB48 | AKB48グループ(lod) | akb48 | 1 |
SKE48 | AKB48グループ(lod) | ske48 | 2 |
NMB48 | AKB48グループ(lod) | nmb48 | 3 |
HKT48 | AKB48グループ(lod) | hkt48 | 4 |
NGT48 | AKB48グループ(lod) | ngt48 | 5 |
REVIVAL!! ON DEMAND | AKB48グループ(lod) | rod | 6 |
STU48 | AKB48グループ(lod) | stu48 | 93 |
コミック | DMMブックス(ebook) | comic | 19 |
写真集 | DMMブックス(ebook) | photo | 20 |
文芸・ラノベ | DMMブックス(ebook) | novel | 21 |
ビジネス・実用 | DMMブックス(ebook) | otherbooks | 22 |
DVD・Blu-ray | 通販(mono) | dvd | 25 |
CD | 通販(mono) | cd | 26 |
本・コミック | 通販(mono) | book | 27 |
ホビー | 通販(mono) | hobby | 29 |
DMMTV | DMMTV(dmmtv) | dmmtv_video | 95 |
表を見ると、同じフロアのコードが別の売り場にもあることが分かります。anime はFANZAの動画と通販の両方にあり、comic・novel・photo は、DMM.comとFANZAの電子書籍で、サービスのコード(ebook)まで同じです。フロアのコードだけでは売り場が決まらないので、サイトとサービスのコードと組にして扱います。

当時の記事でオーナーは、DMMには家電・CD・漫画本・ホビーなどの売り場もあると書いていました。今の一覧には、CD・本・ホビーはあるものの、家電のフロアはありません。また、公式ドキュメントの例に出ているDMM.comの「映画・ドラマ(cinema)」も、今の応答には入っていませんでした。売り場は変わるので、コードはときどきフロアAPIで確かめ直します。
表は、DMM フロア一覧のツールでも、その日の内容で見られます。名前から探すなら、ブラウザのページ内検索が早いと思います。
商品検索とジャンル検索への渡し方
商品検索APIには site・service・floor のコードを3つそろえて、ジャンル検索APIには floor_id の数字を1つ渡します。FANZAのビデオなら、商品検索は site=FANZA&service=digital&floor=videoa、ジャンル検索は floor_id=43 です。

商品検索で組を間違えたときの返り方は、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']) ?>&service=<?= h($service['code']) ?>&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アフィリエイト以外の方法で収入を得ることが、禁止されています。
よくある質問
フロアのコードを、プログラムに直接書いてもいい?
書いて動きますが、売り場は変わります。公式ドキュメントの例にある 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が返す実際のデータを確かめられます。



