• #Amazon
  • #PA-API
  • #アフィリエイト
  • #Python

Amazon PA-API アフィリエイトリンク生成ガイド

概要

Amazon Product Advertising API (PA-API v5) を使って、書籍のISBN/ASINからアフィリエイトリンクを生成する。

必要な認証情報

項目取得場所
ACCESS_KEYAmazonアソシエイト → ツール → Product Advertising API
SECRET_KEY同上
ASSOCIATE_IDアソシエイトID(例: eurekapu55-22

セットアップ

pip install python-amazon-paapi

Pythonスクリプト

使用ライブラリ: python-amazon-paapi (v5.0.1)

基本的な使い方

from amazon.paapi import AmazonAPI
import json

# 認証情報(環境変数推奨)
ACCESS_KEY = "YOUR_ACCESS_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
ASSOCIATE_ID = "eurekapu55-22"
COUNTRY = "JP"

amazon_api = AmazonAPI(ACCESS_KEY, SECRET_KEY, ASSOCIATE_ID, COUNTRY)

# ISBNまたはASINで検索
def get_affiliate_link(keyword):
    """
    キーワード(ISBN、ASIN、書籍名など)からアフィリエイトリンクを取得
    """
    try:
        products = amazon_api.search_items(keywords=keyword)
        if products and 'data' in products and len(products['data']) > 0:
            item = products['data'][0]
            return {
                'title': item.item_info.title.display_value,
                'asin': item.asin,
                'url': item.detail_page_url,  # アフィリエイトリンク
                'image': item.images.primary.large.url if item.images else None
            }
    except Exception as e:
        print(f"Error: {e}")
    return None

# 使用例
result = get_affiliate_link("4062190141")  # ISBN
print(json.dumps(result, ensure_ascii=False, indent=2))

ライブラリで使えるAPI

メソッド用途
search_items(keywords=...)キーワード検索
get_items(item_ids=[...])ASIN/URLから直接取得
get_variations(asin=...)バリエーション取得
get_browse_nodes(browse_node_ids=[...])カテゴリ情報取得

取得可能なデータ(Resources)

カテゴリ内容アクセス例
Images画像URL (Small/Medium/Large)item.images.primary.large.url
ItemInfo.Title商品タイトルitem.item_info.title.display_value
ItemInfo.ByLineInfo著者・メーカー情報item.item_info.by_line_info
ItemInfo.Classifications分類情報item.item_info.classifications
ItemInfo.ProductInfo商品詳細(色など)item.item_info.product_info.color
Offers価格情報item.offers.listings[0].price.amount
BrowseNodeInfoカテゴリ階層item.browse_node_info
DetailPageURLアフィリエイトリンクitem.detail_page_url

レビュー情報はPA-API v5では取得不可(Amazon側で廃止)

CSVから一括処理

import pandas as pd
import json
import time

# CSVから書籍リストを読み込み
df = pd.read_csv('books.csv')
isbn_list = df['ISBN'].astype(str).tolist()

results = []
for isbn in isbn_list:
    result = get_affiliate_link(isbn)
    if result:
        results.append(result)
    time.sleep(1)  # レート制限対策

# JSONに保存
with open('output_amazon_books.json', 'w', encoding='utf-8') as f:
    json.dump(results, f, ensure_ascii=False, indent=2)

出力形式

data/output_amazon_books.json の形式:

[
    {
        "title": "書籍タイトル",
        "asin": "4062190141",
        "detailPageURL": "https://www.amazon.co.jp/dp/...?tag=eurekapu55-22...",
        "images_url": "https://m.media-amazon.com/images/I/...",
        "category": "カテゴリ名",
        "blog_category": "経営管理",
        "description": "",
        "purchaseDate": "2022"
    }
]

注意事項

  1. レート制限: 1秒に1リクエスト程度に抑える
  2. API利用資格: アフィリエイト経由の売上実績がないとAPI利用制限あり
  3. 認証情報: コードにハードコードせず、環境変数や.envファイルで管理推奨

関連ファイル

  • 既存データ: data/output_amazon_books.json
  • 表示ページ: pages/blog/amazon/purchase-*.vue
  • 元スクリプト: C:/Users/numbe/Git_repo/amazonAPI/get_amazon_book.ipynb