# DuckDuckGo Search (Node.js ESM) Scraper / wrapper DuckDuckGo Search dengan output lengkap. ## Output format ```json { "query": "Indonesia", "engine": "duckduckgo", "region": "id-id", "total": 8, "results": [ { "position": 1, "title": "Indonesia - Wikipedia", "url": "https://en.wikipedia.org/wiki/Indonesia", "description": "Indonesia, officially the Republic of Indonesia, is a country in Southeast Asia...", "domain": "en.wikipedia.org", "favicon": "https://external-content.duckduckgo.com/ip3/en.wikipedia.org.ico" } ] } ``` ## Install ```bash # Pure scraper (zero dependency) — cukup copy ddg.js # Recommended (lebih stabil, jarang kena captcha) npm i duck-duck-scrape ``` ## Usage ### Library ```js import { search, searchWithLib } from "./ddg.js"; // Pure scraper const data = await search("Indonesia", { maxResults: 10, region: "id-id", // wt-wt | id-id | us-en | uk-en }); // Via library const data2 = await searchWithLib("Indonesia", { maxResults: 10, safeSearch: "moderate", // off | moderate | strict }); ``` ### CLI ```bash node ddg.js "Indonesia" node ddg.js "Node.js tutorial" --lib node ddg.js "react hooks" --max=15 ``` ## Catatan - Butuh Node.js ≥ 18 (native `fetch`) - DuckDuckGo kadang kasih captcha ke IP server → pakai `searchWithLib()` - Field `favicon` hanya muncul kalau tersedia di HTML