Tony Wang5 Min. LesezeitSo scrapst du DuckDuckGo 2026 (API & Python)
DuckDuckGo 2026 scrapen — Web-, Bild-, News-, Shopping- und Video-Ergebnisse als JSON mit decodierten URLs — DIY, No-Code oder API.
Der schnellste Weg, DuckDuckGo 2026 zu scrapen, ist der Aufruf einer strukturierten API, die normalisiertes JSON über fünf Verticals liefert — Web, Bilder, News, Shopping und Video —, statt DuckDuckGos server-gerenderte Ergebnisseiten selbst zu parsen. Es gibt keinen offiziellen Weg, organische Web-Ergebnisse programmatisch zu bekommen: DuckDuckGos eigene Instant Answer API liefert nur Instant-Answer-Themenzusammenfassungen, nicht die gerankte Ergebnisliste. Dieser Guide deckt alle drei Ansätze ab, was jeder liefert, wo DIY scheitert, und die rechtlichen Grundlagen.
Warum DuckDuckGo scrapen?
DuckDuckGos Ergebnisse treiben:
- Datenschutzorientiertes SERP-Tracking — DuckDuckGo betreibt eigene, gemischte Ergebnisse (kein reiner Google- oder Bing-Spiegel), was eine von beiden unabhängige Abdeckung ergänzt.
- Suchrecherche auf einer nicht-personalisierten Engine — DuckDuckGo baut keine Nutzerprofile auf, daher sind die Ergebnisse eine sauberere Baseline, um organisches Ranking ohne Personalisierungsrauschen zu untersuchen.
- Vertical-übergreifendes Monitoring — verfolge eine Query oder Marke über Web-, Bild-, News-, Shopping- und Video-Ergebnisse in einem Durchgang.
- Wettbewerbs- und Marktvergleich — der Filter
regionzeigt dir, wie dieselbe Query in unterschiedlichen Märkten anders rankt. - Recency-gefiltertes News- und Web-Tracking — der Filter
time_rangegrenzt Web-Ergebnisse auf den letzten Tag, die letzte Woche, den letzten Monat oder das letzte Jahr ein für aktualitätssensibles Monitoring.
Ist es legal, DuckDuckGo zu scrapen?
Option 1: DIY in Python (und warum es scheitert)
Ein naiver Ansatz ruft die Ergebnisseite ab und parst das 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
Das funktioniert einmal und geht dann kaputt. Die wiederkehrenden Kosten:
- Keine offizielle Web-Ergebnisse-API. DuckDuckGo veröffentlicht eine Instant Answer API, aber sie liefert Instant Answers und Themenzusammenfassungen — nicht die organische Ergebnisliste —, sodass es keine sanktionierte Alternative zur HTML-Seite gibt.
- Rate-Limiting und Challenge-Seiten. Jenseits geringen Hobby-Volumens liefert DuckDuckGo 202/403-Antworten oder eine CAPTCHA-Wand an automatisierten Traffic, und naive
requests-Aufrufe treffen darauf schnell. - Verpackte Ergebnislinks. Jede Ergebnis-URL ist ein Click-Tracking-Redirect (
duckduckgo.com/l/?uddg=...), also musst du es selbst decodieren, um die tatsächliche Ziel-URL und den Hostnamen zu bekommen. - Fünf separate Verticals. Web-, Bild-, News-, Shopping- und Video-Ergebnisse rendern jeweils mit eigenem Markup, sodass ein einzelner Parser nicht alle abdeckt — du brauchst einen pro Vertical, und jeder driftet unabhängig.
Der größte Teil der Kosten ist nicht der erste Scrape — es ist, fünf Parser gleichzeitig gegen Layout-Änderungen und Rate-Limits am Leben zu halten.
Option 2: No-Code-Tools
Browser-Erweiterungen und Point-and-Click-Scraper können eine einmalige DuckDuckGo-Ergebnisseite abrufen, aber sie decodieren das Click-Tracking-Redirect nicht für dich, decken nicht alle fünf Verticals in einem Workflow ab und gehen weiterhin kaputt, wenn sich DuckDuckGos Markup oder Rate-Limits ändern. Für wiederkehrende Sammlung, die eine Pipeline speist, passt eine API besser.
Option 3: Eine strukturierte DuckDuckGo-API
Crawloras DuckDuckGo Search API kapselt Request-Handling, Region-/Recency-/Safe-Search-Filter, Redirect-Decodierung und Normalisierung hinter einem dokumentierten Endpoint pro Vertical. Durchsuche die Web-Ergebnisse:
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"])
Eine Response ist normalisiertes JSON mit bereits decodiertem Redirect (die gezeigten Felder sind exemplarisch — prüfe die Docs für das aktuelle Schema):
{
"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."
}
]
}
}
Gleicher Key, vier weitere Verticals — tausche den Pfad und behalte dieselben Parameter q und 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"]
Ein Crawlora-API-Key deckt alle fünf Verticals ab — kein separates Credential pro Ergebnistyp.
Was du sammeln kannst
- Web-Ergebnisse: Titel, Ziel-URL (decodiert aus DuckDuckGos Redirect), Hostname und Beschreibungs-Snippet — filterbar nach
time_range(d/w/m/y) undsafe_search(strict/moderate/off) - Bildergebnisse über den dedizierten Images-Endpoint
- News-Ergebnisse über den dedizierten News-Endpoint
- Shopping-Ergebnisse über den dedizierten Shopping-Endpoint
- Videoergebnisse über den dedizierten Video-Endpoint
- Regionale Varianten jedes Verticals über den Parameter
region, für Markt-zu-Markt-Vergleich
Einschränkungen und typische Herausforderungen
- Keine offizielle Web-Ergebnisse-API als Fallback. DuckDuckGos Instant Answer API liefert Themenzusammenfassungen, nicht die organische Ergebnisliste, also gibt es keine sanktionierte Alternative, falls ein strukturierter Endpoint nicht verfügbar ist.
- Rate-Limiting und Challenge-Seiten für DIY. Automatisierter Traffic jenseits geringen Hobby-Volumens bekommt 202/403-Antworten oder CAPTCHA-Wände; eine strukturierte API übernimmt das hinter einem Key, statt dass du es pro Request managst.
- Verpackte Ergebnislinks. DuckDuckGos Redirect-Wrapper bedeutet, dass rohes HTML-Scraping Tracking-URLs statt Ziele liefert, sofern du sie nicht selbst decodierst.
- Fünf Verticals, fünf Formen. Web-, Bild-, News-, Shopping- und Video-Ergebnisse teilen sich kein Schema — nutze den dedizierten Endpoint für das benötigte Vertical statt eines generischen Parsers.
- Nutzungsbedingungen schränken automatisierte Nutzung ein. DuckDuckGos ToS erlauben keine automatisierte, nicht-persönliche Nutzung der Seite — berücksichtige das bei der Verwendung gesammelter Daten.
Wo das zum Einsatz kommt
- Datenschutzorientiertes SERP-Tracking — schnappe Web-Rankings auf einer nicht-personalisierten Engine neben Google und Bing.
- Vertical-übergreifendes Markenmonitoring — prüfe dieselbe Query über Web-, Bild-, News-, Shopping- und Video-Ergebnisse in einem Durchgang.
- Aktualitätssensibles News-Tracking — nutze
time_range=doderw, um zu erfassen, was in den letzten Tag oder die letzte Woche rankt.
Quellen
Loslegen
Probier es zuerst kostenlos aus: Schick eine beliebige öffentliche URL durch den Free Web Scraper, oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
DuckDuckGo ist am nützlichsten als datenschutzorientierte zweite oder dritte Engine neben Google und Bing — die Response-Formate sind einheitlich genug, um alle drei mit demselben Code zu erfassen. Kombiniere es mit wie man Brave Search scrapt für einen weiteren unabhängigen Index, oder wie man Bing scrapt für die größte Non-Google-Alternative. Für einen breiteren Tool-Vergleich siehe die besten SERP APIs 2026.
Leg los, indem du den Endpoint im Playground testest, das Request- und Response-Schema in den API-Docs liest und die Credit-Kosten auf der Preisseite prüfst. Siehe auch Ist Web Scraping legal.
Häufig gestellte Fragen
Gibt es eine offizielle DuckDuckGo-Such-API?
Nicht für Web-Ergebnisse. DuckDuckGo veröffentlicht eine Instant Answer API, aber sie liefert Instant Answers und Themenzusammenfassungen statt der organischen Ergebnisliste. Crawloras Endpoints lesen DuckDuckGos eigene server-gerenderte Suchseiten aus und geben diese Ergebnisse als JSON zurück.
Welche Verticals werden unterstützt?
Web, Bilder, News, Shopping und Video — jedes mit eigenem Endpoint, der denselben Parameter q plus eine Region entgegennimmt.
Kann ich Ergebnisse auf die letzte Woche oder den letzten Monat begrenzen?
Ja, bei der Websuche. time_range akzeptiert d, w, m oder y für den letzten Tag, die letzte Woche, den letzten Monat oder das letzte Jahr, und safe_search akzeptiert strict, moderate oder off.
Bekomme ich die echte Ziel-URL?
Ja. DuckDuckGo verpackt jeden Ergebnislink in ein Click-Tracking-Redirect; dieser Endpoint decodiert es und gibt die Ziel-URL zusammen mit dem Hostnamen zurück.
Wie durchsuche ich DuckDuckGo mit einer API?
Sende ein Keyword als q an Crawloras Endpoint /duckduckgo/search und erhalte normalisierte organische Ergebnisse als strukturiertes JSON — kein DuckDuckGo-Konto nötig.