前提条件
- Pythonの実行環境が構築されていること
- DMM API IDが発行されていること
- 運営しているサイト
DMM API IDの発行手順
APIを使用するには、DMMへのアカウント登録とDMMアフィリエイトの登録が必要です。
詳細な手順については、下記の記事が参考になります。スクリーンショット付きで丁寧に解説されています。
DMMアフィリエイトの登録には運営しているサイトのURLが必要になるため、事前に用意しておきましょう。
DMM APIの基本的な使い方
API IDとアフィリエイトIDを取得できれば、DMMの様々な情報を取得できるようになります。
基本的な使い方については、下記の公式ドキュメントを参照してください。ただし、最低限の情報しか記載されていないため、以下で具体的な使用方法を解説します。
フロア検索
フロア検索は、パラメータが最小限のため、APIの使用を始めるのに適しています。
使用するURLは以下の通りです。
https://api.dmm.com/affiliate/v3/FloorList?api_id=[APIID]&affiliate_id=[アフィリエイトID]&output=json
[APIID]と[アフィリエイトID]には、取得したAPI IDとアフィリエイトIDを入力してください。前後の[ ]は不要です。
ブラウザでの実行
手軽に情報を取得するには、ブラウザのアドレスバーにこのURLを入力して検索します。
すると、以下のようにデータが画面に表示されます。ただし、この形式では内容が分かりにくいです。

このデータを表形式で整理したものが以下になります。フロアの情報を返してくれているわけです。この中のサービスコードやフロアコード、フロアIDは、他のAPIでもパラメータとして使用するので覚えておきましょう。
| サイト | サービス | サービスコード | フロア | フロアコード | フロアID |
|---|---|---|---|---|---|
| DMM.com(一般) | AKB48グループ | lod | AKB48 | akb48 | 1 |
| SKE48 | ske48 | 2 | |||
| NMB48 | nmb48 | 3 | |||
| HKT48 | hkt48 | 4 | |||
| NGT48 | ngt48 | 5 | |||
| REVIVAL!! ON DEMAND | rod | 6 | |||
| STU48 | stu48 | 93 | |||
| DMMブックス | ebook | コミック | comic | 19 | |
| 写真集 | photo | 20 | |||
| 文芸・ラノベ | novel | 21 | |||
| ビジネス・実用 | otherbooks | 22 | |||
| PCゲーム/ソフトウェア | pcsoft | PCゲーム | digital_pcgame | 23 | |
| ソフトウェア | digital_pcsoft | 24 | |||
| 通販 | mono | DVD・Blu-ray | dvd | 25 | |
| CD | cd | 26 | |||
| 本・コミック | book | 27 | |||
| ホビー | hobby | 29 | |||
| 家電・日用品 | kaden | 30 | |||
| DMMTV | dmmtv | DMMTV | dmmtv_video | 95 | |
| FANZA(アダルト) | 動画 | digital | ビデオ | videoa | 43 |
| 素人 | videoc | 44 | |||
| 成人映画 | nikkatsu | 45 | |||
| アニメ動画 | anime | 46 | |||
| 月額動画 | monthly | 見放題ch デラックス | premium | 68 | |
| VRch | vr | 91 | |||
| 見放題ch | standard | 98 | |||
| 通販 | mono | DVD | dvd | 74 | |
| 大人のおもちゃ | goods | 75 | |||
| アニメ | anime | 76 | |||
| PCゲーム | pcgame | 77 | |||
| ブック | book | 78 | |||
| フィギュア・グッズ | figure | 94 | |||
| アダルトPCゲーム | pcgame | アダルトPCゲーム | digital_pcgame | 80 | |
| 同人 | doujin | 同人 | digital_doujin | 81 | |
| FANZAブックス | ebook | コミック | comic | 82 | |
| 美少女ノベル・官能小説 | novel | 83 | |||
| アダルト写真集・雑誌 | photo | 84 | |||
| BL | bl | 96 | |||
| TL | tl | 97 | |||
| FANZAブックス読み放題 | unlimited_book | FANZAブックス読み放題 | unlimited_comic | 92 |
Pythonでの実行
このURLはPythonでも実行できます。以下のコードでAPI_IDとAFFILIATE_IDに実際のAPI IDとアフィリエイトIDを入力してください。
import requests
import json
# DMM API設定
API_ID = "XXXXXXXXXXX"
AFFILIATE_ID = "XXXXXXXXXXX"
# APIエンドポイント
url = "https://api.dmm.com/affiliate/v3/FloorList"
# パラメータ
params = {
"api_id": API_ID,
"affiliate_id": AFFILIATE_ID,
"output": "json"
}
def test_dmm_api():
"""DMM APIの基本的なテスト"""
try:
# APIリクエスト実行
response = requests.get(url, params=params)
response.raise_for_status()
# レスポンスをJSONで取得
data = response.json()
print("API呼び出し成功!")
print(f"ステータスコード: {response.status_code}")
print(f"レスポンス: {json.dumps(data, indent=2, ensure_ascii=False)}")
return data
except requests.exceptions.RequestException as e:
print(f"API呼び出しエラー: {e}")
return None
except json.JSONDecodeError as e:
print(f"JSON解析エラー: {e}")
return None
if __name__ == "__main__":
test_dmm_api()このコードを実行すると、コンソールに出力結果が表示されます。
GitHubなどでコードを管理する場合は、API_IDやAFFILIATE_IDは環境変数で管理してください。Pythonではpython-dotenvライブラリを使用して.envファイルで管理することをお勧めします。
ジャンル検索
次にジャンル検索について説明します。ここでは先ほど取得したフロアのフロアIDを使用する必要があります。
例として「同人」のフロアID81を使用して、同人フロアのジャンルを検索してみましょう。
使用するURLは以下の通りです。
https://api.dmm.com/affiliate/v3/GenreSearch?api_id=[APIID]&affiliate_id=[アフィリエイトID]&floor_id=81&output=json
同様にブラウザで検索するとデータが表示されます。
Pythonでのコードは以下のようになります。
# ジャンル検索のパラメータ例(同人フロアの場合)
params = {
"api_id": API_ID,
"affiliate_id": AFFILIATE_ID,
"floor_id": "81",
"output": "json"
}floor_idパラメータが追加されているのが分かります。
実行すると同人で使用されているジャンルデータを返してくれます。
| ジャンルID | ジャンル名 |
|---|---|
| 12 | 3DCG |
| 160024 | 「90%還元」冬のプレミアム企画 |
| 4118 | アイドル・芸能人 |
| 6551 | iPhone・iPad対応 |
| 160052 | 青姦 |
| 160155 | 赤ちゃんプレイ |
| 156035 | 赤ブー5月イベント |
| 160053 | 悪堕ち |
| 4076 | アクション |
| 514 | アクション・格闘 |
| 19 | アクセサリー |
| 160231 | アクセス上位ジャンル |
| 160163 | アクメ |
| 160116 | 悪役令嬢 |
| 153019 | 脚 |
| 160054 | 足コキ |
| 4127 | アドベンチャー |
| 5005 | アナル |
| 160115 | 兄 |
| 160042 | アヘ顔 |
| 6071 | アンソロジー |
| 6562 | Android対応 |
| 154018 | 委員長 |
| 160117 | 医者 |
| 155010 | 異種姦 |
| 160104 | 異世界転生 |
| 160134 | イチオシ |
| 160180 | 従姉妹/いとこ |
| 72 | 異物挿入 |
| 153032 | 癒し |
| 8 | イラスト・CG集 |
| 5068 | イラマチオ |
| 155022 | 色仕掛け |
| 160037 | 陰キャ・地味 |
| 160043 | 淫語 |
| 154001 | インテリ |
| 154019 | 陰毛・腋毛 |
| 160039 | 淫乱 |
| 1040 | ウェイトレス |
| 153033 | 鬱 |
| 160205 | 鬱勃起 |
| 160126 | 裏垢女子 |
| 152016 | 浮気 |
| 300248 | エアコミケ2 |
| 160160 | 駅弁 |
| 4075 | SF |
| 4001 | SM |
| 160207 | エステ |
| 154002 | エルフ・妖精 |
| 152005 | 遠距離恋愛 |
| 160132 | AI生成 |
| 160004 | ASMR |
| 160118 | 王子様・王子系 |
| 154003 | おかっぱ |
| 153002 | オカルト |
| 152006 | 屋外 |
| 1083 | 幼なじみ |
| 155001 | おさわり |
| 153004 | お尻・ヒップ |
| 154030 | 叔父・義父 |
| 7007 | お嬢様・令嬢 |
| 527 | お嬢様・令嬢 |
| 160031 | おすすめ |
| 160056 | おすすめボイス作品 |
| 160007 | 襲い受 |
| 153003 | おっぱい |
| 160219 | 雄っぱい |
| 160119 | 弟 |
| 153027 | 男無 |
| 160172 | 男の潮吹き |
| 155011 | 乙女受け |
| 160026 | 乙女向け |
| 160055 | オナサポ |
| 5008 | オナニー |
| 160176 | オネエ |
| 528 | お姫様 |
| 152001 | オフィス・職場 |
| 160099 | オホ声 |
| 151001 | おむつ |
| 160003 | オメガバース |
| 5017 | おもちゃ |
| 155002 | おもらし |
| 160070 | おやじ |
| 155003 | オヤジ受け |
| 155012 | 俺様攻め |
| 15 | 音声付き |
| 160221 | 温泉・銭湯・お風呂 |
| 1016 | 女教師 |
| 153023 | 女主人公のみ |
| 1001 | OL |
| 153001 | オールハッピー |
| 160146 | 快楽堕ち |
| 160167 | カウントダウン |
| 155013 | 拡張 |
| 152007 | 家族 |
| 151004 | カチューシャ |
| 154021 | 褐色・日焼け |
| 160195 | 壁尻 |
| 160208 | 感覚遮断 |
| 5010 | 監禁 |
AI生成同人作品の検索方法
ここまでの情報を基に、AI生成作品に絞って同人作品を検索する方法を説明します。
使用するのは商品情報を取得するAPIです。
実際の検索用Pythonコードは以下の通りです。
import requests
import json
# DMM API設定
API_ID = "XXXXXXXXXXX"
AFFILIATE_ID = "XXXXXXXXXXX"
# APIエンドポイント
url = "https://api.dmm.com/affiliate/v3/ItemList"
# パラメータ
params = {
"api_id": API_ID,
"affiliate_id": AFFILIATE_ID,
"site": "FANZA",
"service": "doujin",
"floor": "digital_doujin",
"article": "ai",
"article_id": "2",
"output": "json"
}serviceとfloorパラメータは、先ほど取得したフロア情報を基に入力しています。商品検索ではフロアIDではなくフロアコードを使用することに注意してください。
AIに関するarticleとarticle_idパラメータについては、公式のAPIドキュメントには記載されていません。
これらの値は、AIフロアのURLから推測できます。
AIフロアのURLは以下のようになっています。
https://www.dmm.co.jp/dc/doujin/-/list/=/article=ai/id=2/section=mens
このURLのarticle=aiとid=2が、APIパラメータとして使用されています。
商品検索のリクエストパラメータを確認してみましょう。
| 論理名 | 物理名 | 必須 | 値のサンプル | 概要 |
|---|---|---|---|---|
| APIID | api_id | ○ | 登録時に割り振られたID | |
| アフィリエイトID | affiliate_id | ○ | affiliate-990 | 登録時に割り振られた990~999までのアフィリエイトID |
| サイト | site | ○ | FANZA | 一般(DMM.com)かアダルト(FANZA)か |
| サービス | service | digital | フロアAPIから取得できるサービスコードを指定 | |
| フロア | floor | videoa | フロアAPIから取得できるフロアコードを指定 | |
| 取得件数 | hits | 20 | 初期値:20 最大:100 | |
| 検索開始位置 | offset | 1 | 初期値:1 最大:50000 | |
| ソート順 | sort | rank | 初期値:rank 人気:rank 価格が高い順:price 価格が安い順:-price 発売日:date 評価:review マッチング順:match | |
| キーワード | keyword | 松本いちか | UTF-8で指定 キーワード検索のヒント | |
| 商品ID | cid | mizd00320 | 商品に振られているcontent_id | |
| 絞りこみ項目 | article | actress | 女優:actress 作者:author ジャンル:genre シリーズ:series メーカー:maker 絞り込み項目を複数設定する場合、パラメータ名を配列化します。 例:&article[0]=genre&article[1]=actress | |
| 絞り込みID | article_id | 1011199 | 上記絞り込み項目のID(各検索APIから取得可能) 絞り込み項目を複数設定する場合、パラメータ名を配列化します。 例:&article_id[0]=111111&article_id[1]=222222 | |
| 発売日絞り込み | gte_date | 2016-04-01T00:00:00 | このパラメータで指定した日付以降に発売された商品を絞り込むことができます。 ISO8601形式でフォーマットした日付を指定してください。(ただし、タイムゾーンは指定できません) | |
| 発売日絞り込み | lte_date | 2016-04-30T23:59:59 | このパラメータで指定した日付以前に発売された商品を絞り込むことができます。 フォーマットはgte_dateと同じです。 | |
| 在庫絞り込み | mono_stock | mono | 初期値:絞り込みなし 在庫あり:stock 予約商品(在庫あり):reserve 予約商品(キャンセル待ち):reserve_empty DMM通販のみ:mono マーケットプレイスのみ:dmp ※通販サービスのみ指定可能 | |
| 出力形式 | output | json | json / xml | |
| コールバック | callback | callback | 出力形式jsonで指定した場合に、このパラメータでコールバック関数名を指定すると、JSONP形式で出力されます |
articleとarticle_idパラメータが存在していることが分かります。これらのパラメータを組み合わせることで、AI生成同人作品のみを取得できます。
URLを確認すると、AIで生成された同人作品のページが表示されていることが分かります。
まとめ
AI作品に絞ることで、WordPressなどを使ってアフィリエイトサイトを運営する際に、AI特化サイトとして運用できます。
AI作品は手軽に制作できるため大量に出品されており、アフィリエイト対象作品には困りません。ただし、質の低い作品も含まれているため、適切な選別を行う運用も必要です。

コメント