Tony Wang5 分で読めますDuckDuckGo を2026年にスクレイピングする方法(API & Python)
2026年に DuckDuckGo をスクレイピングする方法 — Web・画像・ニュース・ショッピング・動画の結果をデコード済み URL 付きの構造化 JSON として取得。DIY・ノーコード・構造化 API のいずれでも。
2026年に DuckDuckGo をスクレイピングする最速の方法は、DuckDuckGo のサーバーレンダリングされた結果ページを自分でパースするのではなく、Web・画像・ニュース・ショッピング・動画という5つの垂直分野にわたって正規化された JSON を返す構造化 API を呼び出すことです。オーガニックな Web 結果をプログラムから取得する公式な方法はありません。DuckDuckGo 自身の Instant Answer API は、ランキング済みの結果一覧ではなく、インスタントアンサーのトピック要約しか返さないためです。このガイドでは、3つのアプローチそれぞれが何を返すか、DIY がどこで壊れるか、そして法律面の基本を扱います。
DuckDuckGo をスクレイピングする理由
DuckDuckGo の結果は、次のような用途を支えています:
- プライバシー重視の SERP トラッキング — DuckDuckGo は独自のブレンド結果を運用しており(純粋な Google や Bing のミラーではありません)、どちらとも異なるカバレッジを追加してくれます。
- 非パーソナライズ化エンジンでの検索リサーチ — DuckDuckGo はユーザープロファイルを構築しないため、その結果はパーソナライゼーションによるノイズのない、オーガニックランキングを研究するためのよりクリーンなベースラインになります。
- 垂直分野を横断したモニタリング — クエリやブランドを、Web・画像・ニュース・ショッピング・動画の結果にわたって一度に追跡できます。
- 競合・市場比較 —
regionフィルターを使えば、同じクエリが市場ごとにどう異なる順位になるかを確認できます。 - 鮮度でフィルターしたニュース・Web トラッキング —
time_rangeフィルターで Web 結果を過去1日・1週間・1か月・1年に絞り込み、鮮度が重要なモニタリングに対応できます。
DuckDuckGo をスクレイピングするのは合法ですか?
選択肢1: Python での自前実装(そしてなぜ壊れるのか)
素朴なやり方は、結果ページを取得して HTML をパースするものです。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://html.duckduckgo.com/html/",
params={"q": "ai agents"},
headers={"User-Agent": "Mozilla/5.0"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Result links are wrapped in DuckDuckGo's own redirect
# (duckduckgo.com/l/?uddg=...) and have to be decoded before use
これは一度は動きますが、すぐに壊れます。繰り返し発生するコストは次のとおりです。
- 公式の Web 結果 API がない。 DuckDuckGo は Instant Answer API を公開していますが、返ってくるのはインスタントアンサーとトピック要約であり、オーガニックな結果一覧ではありません。そのため、HTML ページの代わりに呼び出せる公認された手段が存在しません。
- レート制限とチャレンジページ。 低い趣味レベルの利用量を超えると、DuckDuckGo は自動トラフィックに対して 202/403 レスポンスや CAPTCHA の壁を返します。素朴な
requests呼び出しはすぐにこれに突き当たります。 - ラップされた結果リンク。 すべての結果 URL はクリック追跡用のリダイレクト(
duckduckgo.com/l/?uddg=...)であり、実際の URL とホスト名を得るには自分でデコードしなければなりません。 - 5つの独立した垂直分野。 Web・画像・ニュース・ショッピング・動画の結果はそれぞれ独自のマークアップでレンダリングされるため、1つのパーサーではすべてをカバーできません。垂直分野ごとに1つ必要で、それぞれが独立して変化していきます。
コストの大半は最初のスクレイピングではなく、レイアウトの変化とレート制限の両方に対して、5つのパーサーを同時に動かし続けることにあります。
選択肢2: ノーコードツール
ブラウザ拡張機能やポイント&クリック式のスクレイパーは、一回限りの DuckDuckGo 結果ページの取得には使えますが、クリック追跡用リダイレクトを自動でデコードしてくれず、5つの垂直分野すべてを1つのワークフローでカバーすることもできず、DuckDuckGo のマークアップやレート制限が変わればやはり壊れます。パイプラインに供給する継続的な収集には、API のほうが適しています。
選択肢3: 構造化された DuckDuckGo API
Crawlora の DuckDuckGo Search API は、リクエスト処理・地域/鮮度/セーフサーチのフィルター・リダイレクトのデコード・正規化を、垂直分野ごとに1つのドキュメント化されたエンドポイントの背後にまとめています。Web 結果を検索してみましょう。
curl -G "https://api.crawlora.net/api/v1/duckduckgo/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
--data-urlencode "q=ai agents" \
--data-urlencode "region=us-en" \
--data-urlencode "time_range=w" \
--data-urlencode "safe_search=moderate"
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/duckduckgo/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"q": "ai agents", "region": "us-en", "time_range": "w", "safe_search": "moderate"},
)
for row in resp.json()["data"]["results"]:
print(row["title"], row["url"], row["hostname"])
レスポンスは、リダイレクトがすでにデコードされた正規化済みの JSON です(示しているフィールドは説明用です。最新のスキーマは ドキュメント をご確認ください)。
{
"code": 200,
"msg": "OK",
"data": {
"query": "ai agents",
"results": [
{
"title": "Example result title",
"url": "https://example.com/",
"hostname": "example.com",
"description": "Snippet text shown under the result."
}
]
}
}
同じキーで、残り4つの垂直分野も使えます — パスを差し替えて、同じ q と region パラメータを使うだけです。
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/duckduckgo"
images = requests.get(f"{base}/images", headers=h, params={"q": "ai agents", "region": "us-en"}).json()["data"]
news = requests.get(f"{base}/news", headers=h, params={"q": "ai agents", "region": "us-en"}).json()["data"]
shopping = requests.get(f"{base}/shopping", headers=h, params={"q": "ai agents", "region": "us-en"}).json()["data"]
video = requests.get(f"{base}/video", headers=h, params={"q": "ai agents", "region": "us-en"}).json()["data"]
Crawlora の API キー1つで、5つの垂直分野すべてをカバーできます。結果タイプごとに別々の認証情報は必要ありません。
収集できるもの
- Web 結果: タイトル、実際の URL(DuckDuckGo のリダイレクトからデコード済み)、ホスト名、説明スニペット —
time_range(d/w/m/y)とsafe_search(strict/moderate/off)でフィルター可能 - 画像結果 — 専用の images エンドポイント経由
- ニュース結果 — 専用の news エンドポイント経由
- ショッピング結果 — 専用の shopping エンドポイント経由
- 動画結果 — 専用の video エンドポイント経由
- 地域別バリエーション — 任意の垂直分野を
regionパラメータで、市場ごとの比較のために取得可能
制約とよくある課題
- 頼れる公式の Web 結果 API がない。 DuckDuckGo の Instant Answer API はオーガニックな結果一覧ではなくトピック要約を返すため、構造化エンドポイントが使えない場合の公認された代替手段がありません。
- 自前実装にはレート制限とチャレンジページが立ちはだかる。 低い趣味レベルの利用量を超える自動トラフィックは 202/403 レスポンスや CAPTCHA の壁に直面します。構造化 API なら、リクエストごとに自分で管理する代わりに、これを1つのキーの背後で処理してくれます。
- ラップされた結果リンク。 DuckDuckGo のリダイレクトラッパーのせいで、生の HTML スクレイピングでは自分でデコードしない限り、実際の URL ではなく追跡用 URL しか得られません。
- 5つの垂直分野、5つの形。 Web・画像・ニュース・ショッピング・動画の結果は1つのスキーマを共有していません。汎用の1つのパーサーではなく、必要な垂直分野専用のエンドポイントを使ってください。
- 利用規約が自動的な利用を制限している。 DuckDuckGo の利用規約は、サイトの自動的・非個人的な利用を許可していません。収集したデータの使い方には、この点を考慮してください。
活用例
- プライバシー重視の SERP トラッキング — Google や Bing と並べて、非パーソナライズ化エンジンでの Web ランキングをスナップショットします。
- 垂直分野を横断したブランドモニタリング — 同じクエリを Web・画像・ニュース・ショッピング・動画の結果にわたって一度にチェックします。
- 鮮度が重要なニューストラッキング —
time_range=dやwを使って、過去1日や1週間でランクインしているものを捉えます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を 無料 Web スクレイパー に通すか、アンチボットチェッカー でサイトがボットをブロックするかどうかを確認できます。登録は不要です。
DuckDuckGo は、Google や Bing と並べる プライバシー重視の2番目・3番目のエンジン として最も役立ちます。レスポンスの形が十分揃っているので、同じコードで3つすべてをスナップショットできます。もう1つの独立したインデックスには Brave Search をスクレイピングする方法 を、Google 以外で最大の代替には Bing をスクレイピングする方法 を組み合わせてください。より広いツール比較は 2026年のベスト SERP API をご覧ください。
まずは Playground でエンドポイントを試し、API ドキュメント でリクエストとレスポンスのスキーマを読み、料金ページ でクレジットのコストを確認して始めましょう。Web スクレイピングは合法か もあわせてご覧ください。
よくある質問
DuckDuckGo の公式検索 API はありますか?
Web 結果については存在しません。DuckDuckGo は Instant Answer API を公開していますが、これはオーガニックな結果一覧ではなく、インスタントアンサーとトピック要約を返すものです。Crawlora のエンドポイントは DuckDuckGo 自身のサーバーレンダリングされた検索結果ページを読み取り、その結果を JSON として返します。
どの垂直分野に対応していますか?
Web・画像・ニュース・ショッピング・動画です。それぞれが独自のエンドポイントを持ち、同じ q パラメータと地域指定を受け付けます。
結果を過去1週間や1か月に絞り込めますか?
はい、Web 検索では可能です。time_range は過去1日・1週間・1か月・1年に対応する d、w、m、y のいずれかを受け付け、safe_search は strict、moderate、off のいずれかを受け付けます。
実際の遷移先 URL を取得できますか?
はい。DuckDuckGo はすべての結果リンクをクリック追跡用のリダイレクトでラップしていますが、このエンドポイントはそれをデコードし、ホスト名とともに実際の遷移先 URL を返します。
API で DuckDuckGo を検索するにはどうすればよいですか?
キーワードを q として Crawlora の /duckduckgo/search エンドポイントに送信すると、正規化されたオーガニック結果が構造化 JSON として返ってきます。DuckDuckGo のアカウントは不要です。