Tony Wang4 分で読めますeBayをスクレイピングする方法【2026年版】(APIとPython)
2026年にeBayのリスティング・商品・セラー情報をスクレイピングする3つの方法 — 自作Python、ノーコードツール、構造化API — それぞれ何が取得でき、法律面の基本はどうかを解説します。
eBayを2026年にスクレイピングする最速の方法は、eBayのリスティングページを自分で解析するのではなく、正規化されたJSON — 検索結果、商品の詳細、価格、セラーのデータ — を返す構造化マーケットプレイスAPIを呼び出すことです。Pythonで自作のスクレイパーを組むこともできますが、変わり続けるレイアウト、アンチボット対策、ページネーションのせいで、動作を維持し続けるコストは高くつきます。
eBayは確かに公式のBrowse APIとMarketing APIを提供していますが、これらにはアプリ登録・OAuth・承認が必要で、リサーチで使いたい公開リスティングの形をそのまま公開しているとは限りません。自分が所有していないリスティング全体にわたって価格やセラーのインテリジェンスを得るには、構造化スクレイピングAPIのほうが手早い方法です。
eBayをスクレイピングするのは合法ですか?
リスティングとセラーのページは公開されており、公開データの収集は、一般に、非公開のアカウントへのアクセスとは区別して扱われます — ただし、以下のような通常の条件が伴います。
- 収集するのは公開されているリスティングとセラーのページのみにする — 買い手/売り手のアカウントにはアクセスしない。
- レート制限とeBayの利用規約を守る。合法的な利用の責任は利用者にあります。
- 個人を特定しうるもの(セラーが個人であるケース)には注意する。
- ユースケースや法律で認められる範囲を超えて、著作権のあるリスティングのメディアを再利用しない。
これは法的助言ではありません — より詳しい解説は2026年、Webスクレイピングは合法か?をご覧ください。
選択肢1: Pythonで自作する(そしてなぜ壊れるのか)
素朴なアプローチでは、検索結果ページを取得して商品カードを解析します。
import csv, requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.ebay.com/sch/i.html",
params={"_nkw": "mechanical keyboard"},
headers={"User-Agent": "Mozilla/5.0", "Accept-Language": "en-US,en;q=0.9"},
)
soup = BeautifulSoup(resp.text, "html.parser")
rows = []
for card in soup.select("li.s-item"):
title = card.select_one(".s-item__title")
price = card.select_one(".s-item__price")
rows.append({"title": title.get_text(strip=True) if title else None,
"price": price.get_text(strip=True) if price else None})
with open("ebay.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["title", "price"]); w.writeheader(); w.writerows(rows)
# ...then keep these selectors alive, parse currency/shipping, and paginate
一度は動きますが、そこからメンテナンスが始まります。
- アンチボット対策がデータセンターのIPをブロックするため、ローテーションするプロキシが必要になります。
- レイアウトの多様さ — オークション形式か固定価格か、プロモーションされたリスティングか自然なリスティングかで、内容が異なります。
- 価格の解析 — 通貨、価格帯、送料があるため、「その価格」を特定するのは単純ではありません。
- ページネーションと重複排除 — 結果は複数ページに散らばり、重複します。
選択肢2: ノーコードツールと既製ツール
拡張機能を使えば1ページ分の結果をエクスポートできますが、転売や価格リサーチでは、検索をスケジュールに沿って再実行し、履歴を蓄積する必要があります。それは手作業のエクスポートよりも、APIで扱ったほうが適したパイプラインの仕事です。
選択肢3: 構造化されたeBay API
CrawloraのeBay APIは、リクエスト処理・プロキシ・解析・正規化を、検索・商品詳細・セラー向けのドキュメント化されたエンドポイントの背後にまとめています。
curl -X POST "https://api.crawlora.net/api/v1/ebay/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword": "mechanical keyboard", "page": 1, "limit": 24, "listing_type": "all"}'
import requests
resp = requests.post(
"https://api.crawlora.net/api/v1/ebay/search",
headers={"x-api-key": "YOUR_API_KEY"},
json={"keyword": "mechanical keyboard", "page": 1, "limit": 24, "listing_type": "all"},
)
for item in resp.json()["data"]["items"]:
print(item["title"], item["price"], item["item_id"])
レスポンスは正規化されたJSONです(フィールドは説明のための例です — リクエストボディとスキーマはドキュメントで確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"items": [
{
"item_id": "1234567890",
"title": "Example mechanical keyboard",
"price": 79.99,
"currency": "USD",
"condition": "New",
"url": "https://www.ebay.com/itm/1234567890"
}
]
}
}
検索結果から、商品の詳細全体や、セラーのプロフィール・ショップ・フィードバックを取得できます。
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/ebay"
item = requests.get(f"{base}/item/196435705622", headers=h).json()["data"]
seller = requests.get(f"{base}/seller/poloblade", headers=h).json()["data"]
shop = requests.get(f"{base}/seller/poloblade/shop", headers=h, params={"page": 1}).json()["data"]
feedback = requests.get(f"{base}/seller/poloblade/feedback", headers=h, params={"per_page": 48}).json()["data"]
セラーのエンドポイントは、プロフィール・自己紹介・フィードバックをまとめて返します。在庫やレビューをページ送りするには、専用のショップおよびフィードバックのエンドポイントを使ってください。
収集できるもの
- 検索結果: タイトル、価格、通貨、コンディション、リスティングのURL
- 特定の
item_idに対する商品の詳細 - セラーのプロフィール、ショップの在庫、フィードバック
- オークションと固定価格を分けるための、ページネーションとリスティング種別のフィルター
制約とよくある課題
- 公式APIはゲートされており、部分的です。 eBayのBrowse・Finding・Marketingの各APIはアプリ登録とOAuthを必要とし、カタログAPIはメタデータ(商品ID)しか公開しません — 公開リスティングの詳細全体を得るには、やはりスクレイピングが必要です。
- リスティングの多様さ。 オークションか固定価格か、プロモーションか自然か、単一かマルチバリエーションかでリスティングは異なります。「その価格」は、送料と通貨を加えた価格帯になることもあります。
- アンチボット。 現実的なヘッダーのないリクエストはブロックされ、データセンターのIPはスロットリングされます — 構造化APIは、ヘッダー・プロキシ・リトライを1つのキーの背後で処理します。
- メディアは著作権で保護されています。 価格・タイトル・コンディションは収集できる事実ですが、リスティングの写真や説明文には著作権があります — ユースケースと法律で認められる範囲を超えて再公開しないでください。
出典
この機能が活きる場面
まずは無料で試す: 任意の公開URLを無料Webスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認しましょう — サインアップ不要です。
eBayのデータは、転売価格の設定、競合およびアービトラージのリサーチ、カタログのエンリッチメントに役立ちます。AmazonスクレイピングAPIやeコマース商品インテリジェンスのワークフローと組み合わせれば、マーケットプレイスをまたいだ価格追跡ができます — これはAmazonの商品データをスクレイピングする方法やShopifyストアをスクレイピングする方法と同じアプローチを、他のマーケットプレイスに応用したものです。ツールキット全体については、WebスクレイピングAPIの選び方をご覧ください。
まずはPlaygroundでエンドポイントをテストし、APIドキュメントでリクエストとレスポンスのスキーマを読み、料金ページでクレジットの消費量を確認して、始めてみましょう。
よくある質問
ブロックされずにeBayをスクレイピングできますか?
Crawloraは現実的なヘッダー、プロキシ、リクエストのペース調整、リトライをAPIの背後で処理し、利用できないページに対してはドキュメント化されたエラーを返します。そのため、スクレイパーをメンテナンスする代わりに、正規化されたJSONを受け取れます。(eBayは適切なヘッダーのないリクエストをブロックし、データセンターのIPをスロットリングします。)
eBayには公式APIがありますか?
はい。ただしゲートされており、部分的です。eBayのBrowse・Finding・Marketingの各APIはアプリ登録・OAuth・承認を必要とし、カタログAPIはメタデータ(商品ID)しか公開しないため、公開リスティングの詳細全体を得るには、やはりスクレイピングが必要です。CrawloraのeBayエンドポイントは、公開されている検索・商品・セラーのデータを、1つのAPIキーから正規化されたJSONとして返します。
eBayからどんなデータが取得できますか?
タイトル・価格・通貨・コンディション・URLを含む検索結果、item_idによる商品の詳細全体、セラーのプロフィール・ショップ在庫・フィードバックです。価格とコンディションは事実ですが、リスティングの写真や文章には著作権があります。
eBayのセラーをスクレイピングできますか?
はい。セラーのエンドポイントは、公開セラーのプロフィール・Aboutタブ・フィードバックをまとめて返し、専用のショップおよびフィードバックのエンドポイントで在庫とレビューをページ送りできます(per_pageは24/48/72)。個人を特定しうるデータは慎重に扱ってください。
価格の推移を追跡できますか?
はい。検索や商品の照会をスケジュールに沿って再実行し、結果を保存することで、価格と在庫の履歴を構築できます。
どのくらいの頻度でデータを更新できますか?
プランのクレジットが許す限り、何度でも可能です。各レスポンスはリクエスト時点のeBayを反映します。