DuckDuckGoのAPIがとても便利だった

Jul 28, 2024 16:15 · 4697 words · 10 minute read Tools Python

DuckDcukGoのAPIを試しました。色んな部分で活用できそうだったので、ブログに残します。

目次

DuckDcukGo APIでできること、活用例

DuckDuckGoの機能をAPI経由で使えます。 APIで提供している機能は下記の通り。 通常のテキスト検索だけでなく、ニュースの検索や翻訳などもできます。

ddgs --help
Usage: ddgs [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

  dukduckgo_search CLI tool

Options:
  --help  Show this message and exit.

Commands:
  answers      CLI function to perform a answers search using DuckDuckGo...
  chat         CLI function to perform an interactive AI chat using...
  images       CLI function to perform a images search using DuckDuckGo API.
  maps         CLI function to perform a maps search using DuckDuckGo API.
  news         CLI function to perform a news search using DuckDuckGo API.
  suggestions  CLI function to perform a suggestions search using...
  text         CLI function to perform a text search using DuckDuckGo API.
  translate    CLI function to perform translate using DuckDuckGo API.
  version
  videos       CLI function to perform a videos search using DuckDuckGo API.

GitHub - deedy5/duckduckgo_search: Search for words, documents, images, videos, news, maps and text translation using the DuckDuckGo.com search engine. Downloading files and images to a local hard drive.

APIの活用例

API全体をざっと使ってみた結果、下記のような場面で使えそうだなと感じました。

  • 定期的にキーワードを検索する
    • 自社に関連するキーワードを定期検索
    • 特定のイベントに関するキーワードを定期検索
  • 自分が開発しているツールに翻訳機能を追加する
  • 自分が開発しているツールにチャット機能を追加する

テキストの検索や翻訳API、GPT-3.5やClaude3相当のChatAIを全て無料で使えるのはかなり魅力的だと思います。

DuckDcukGoの検索精度と使い勝手は想像以上

無料で使えたとしても検索精度が悪くては使う気になりません。 1週間程メインの検索エンジンとしてDuckDcukGoを使ってみましたが、検索結果は想像以上でした。

検索結果の情報量では王者のGoogleには敵いませんが、それでも使っていて困ることはほぼありませんでした。 APIの結果から推測するに、おそらく独自のクローリングデータにプラスしてBing Search APIを使っているようです。 Web UIがシンプルなこともあり、Bingよりも使いやすい印象でした。

検索結果が不十分な場合でも、「!g {検索キーワード}」と検索するとGoogle検索にすぐに移動できるので、そこまで不便を感じません。

テキスト検索のサンプルコード

テキスト検索をする場合のサンプルコードです。 ダブルクォートで検索文字列を囲うと、検索文字列に完全に一致する結果だけ取得できます。

import json

from duckduckgo_search import DDGS


with DDGS() as ddgs:
    results = list(ddgs.text(
        keywords='"blog.kapiecii.com"',
        region='jp-jp',
        safesearch='Off',
        timelimit=None,
        max_results=10,
    ))

for line in results:
    print(json.dumps(line, ensure_ascii=False, indent=2))

テキスト検索以外のAPI

テキスト検索以外も試しました。CLIツールの実行結果を残しておきます。

answers

ddgs answers --help
Usage: ddgs answers [OPTIONS]

  CLI function to perform a answers search using DuckDuckGo API.

Options:
  -k, --keywords TEXT  answers search, keywords for query  [required]
  -o, --output TEXT    csv, json (save the results to a csv or json file)
  -p, --proxy TEXT     the proxy to send requests, example:
                       socks5://127.0.0.1:9150
  --help               Show this message and exit.

実行結果

-o でjsonやcsvを指定した場合はファイルに結果が出力され、CLIには結果は出力されません。

ddgs answers -k spacex
1.          ====================================================================
icon        None
text        Space Exploration Technologies Corporation, commonly referred to as SpaceX, is
            an American spacecraft manufacturer, launch service provider and
            satellite communications company headquartered in Hawthorne,
            California. The company was founded in 2002 by Elon Musk with the
            goal of reducing space transportation costs and ultimately
            developing a sustainable colony on Mars. The company currently
            produces and operates the Falcon 9 and Falcon Heavy rockets along
            with the Dragon, and Starship as a hybrid between a rocket and a
            spacecraft. The company offers internet service via its Starlink
            subsidiary, which became the largest-ever satellite constellation
            in January 2020 and, as of April 2024, comprised more than 6,000
            small satellites in orbit. Meanwhile, the company is developing
            Starship, a human-rated, fully-reusable, super heavy-lift launch
            system for interplanetary and orbital spaceflight. On its first
            flight in April 2023, it became the largest and most powerful
            rocket ever flown.
topic       None
url         https://en.wikipedia.org/wiki/SpaceX

2.          ====================================================================
icon
text        SpaceX Kategorie
topic       None
url         https://duckduckgo.com/c/SpaceX

chat

ddgs chat --help
Usage: ddgs chat [OPTIONS]

  CLI function to perform an interactive AI chat using DuckDuckGo API.

Options:
  -l, --load             load the last conversation from the json cache
  -p, --proxy TEXT       the proxy to send requests, example:
                         socks5://127.0.0.1:9150
  -ml, --multiline       multi-line input
  -t, --timeout INTEGER  timeout value for the HTTP client
  -m, --model [1|2|3|4]
  --help                 Show this message and exit.

m =1でgpt-3.5、m = 2でclaude-3-haiku、m =3でllama-3-70b、m = 4でmixtral-8x7bが使えます。 回答のtokenも表示されます。

ddgs chat -m 1
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=0]: hi
AI: Hello! How can I assist you today?
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=10]:
ddgs chat -m 2
------------------------------------------------------------------------------
You[model='claude-3-haiku' tokens=0]: hi
AI: Hello! I'm an AI assistant created by Anthropic. I'm happy to chat with you and help out however I can. Please let me know if you have any questions or if there's anything I can assist with.
------------------------------------------------------------------------------
You[model='claude-3-haiku' tokens=15]
ddgs chat -m 3
------------------------------------------------------------------------------
You[model='llama-3-70b' tokens=0]: hi
AI: Hi! It's nice to meet you. Is there something I can help you with or would you like to chat about something in particular?
------------------------------------------------------------------------------
You[model='llama-3-70b' tokens=29]:
ddgs chat -m 4
------------------------------------------------------------------------------
You[model='mixtral-8x7b' tokens=0]: hi
AI:  Hello! How can I assist you today? I'm here to provide anonymous and private assistance, as DuckDuckGo's privacy layer ensures that all user chats are completely anonymous and your personal information is safe. I can help you with a wide range of topics, including answering questions, providing explanations, and even offering programming advice. Just let me know what you need!
------------------------------------------------------------------------------
You[model='mixtral-8x7b' tokens=80]

日本語も使えます。

ddgs chat -m 1
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=0]:
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=0]: can you use japanese?
AI: はい、日本語を使用することができます。どのようにお手伝いしましょうか?
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=37]: こんにちは
AI: こんにちは!お困りごとはありますか?お手伝いできることがあればお知らせください。
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=69]: 日本の総理大臣は誰ですか?
AI: 2021年11月時点で日本の総理大臣は岸田文雄(きしだ ふみお)氏です。
------------------------------------------------------------------------------
You[model='gpt-3.5' tokens=103]:

images

ddgs images --help
Usage: ddgs images [OPTIONS]

  CLI function to perform a images search using DuckDuckGo API.

Options:
  -k, --keywords TEXT             keywords for query  [required]
  -r, --region TEXT               wt-wt, us-en, ru-ru, etc. -region
                                  https://duckduckgo.com/params
  -s, --safesearch [on|moderate|off]
  -t, --timelimit [Day|Week|Month|Year]
  -size, --size [Small|Medium|Large|Wallpaper]
  -c, --color [color|Monochrome|Red|Orange|Yellow|Green|Blue|Purple|Pink|Brown|Black|Gray|Teal|White]
  -type, --type_image [photo|clipart|gif|transparent|line]
  -l, --layout [Square|Tall|Wide]
  -lic, --license_image [any|Public|Share|Modify|ModifyCommercially]
  -m, --max_results INTEGER       maximum number of results, default=90
  -o, --output TEXT               csv, json (save the results to a csv or json
                                  file)
  -d, --download                  download and save images to 'keywords'
                                  folder
  -th, --threads INTEGER          download threads, default=10
  -p, --proxy TEXT                the proxy to send requests, example:
                                  socks5://127.0.0.1:9150
  --help                          Show this message and exit.

画像はBingをsourceにしている場合が多い印象です。

ddgs images -k olympic -r jp-jp -s off
1.          =========================================================================
title       オリンピックチャンネル - Wikipedia
image       https://upload.wikimedia.org/wikipedia/commons/a/a4/Olympic_Channel_logo.png
thumbnail   https://tse3.mm.bing.net/th?id=OIP._9c2ogimnI0coQuJts_BcwHaE8&pid=Api
url         https://ja.wikipedia.org/wiki/オリンピックチャンネル
height      800
width       1200
source      Bing

2.          =========================================================================
title       Berliner Tageszeitung - Olympic icon Felix making presence felt at ...
image       https://www.berlinertageszeitung.de/media/shared/articles/2e/34/61/Olympic-icon-Felix-making-presence--479451.jpg
thumbnail   https://tse3.mm.bing.net/th?id=OIF.KIQui3+8vXfAycNzMg86Ug&pid=Api
url         https://www.berlinertageszeitung.de/en/Sports/461958-olympic-icon-felix-making-presence-felt-at-paris-games.html
height      533
width       950
source      Bing

3.          =========================================================================
title       Perth SC vs Olympic Kingsway Prediction, Odds & Betting Tips 07/26/2024
image       https://cdn.betimate.com/800x0/left/top/smart/https://betimate.com/uploads/images/news/perth-sc-vs-olympic-kingsway-content-1721890943.jpg
thumbnail   https://tse1.mm.bing.net/th?id=OIF.eUvVZOWp5mtN0+RmBMNkUA&pid=Api
url         https://betimate.com/en/news/previews/perth-sc-vs-olympic-kingsway-prediction-odds-betting-tips-07262024-1440987
height      276
width       474
source      Bing

「-d」を指定すると検索結果の画像を一括でダウンロードできます。 関係する画像を一気にダウンロードしたい場合に便利そうです。

ddgs images -k olympic -r jp-jp -s off -d
Downloading  [###-----------------------------------------------]  6/90    6%  00:00:28

maps

ddgs maps --help
Usage: ddgs maps [OPTIONS]

  CLI function to perform a maps search using DuckDuckGo API.

Options:
  -k, --keywords TEXT        keywords for query  [required]
  -p, --place TEXT           simplified search - if set, the other parameters
                             are not used
  -s, --street TEXT          house number/street
  -c, --city TEXT            city of search
  -county, --county TEXT     county of search
  -state, --state TEXT       state of search
  -country, --country TEXT   country of search
  -post, --postalcode TEXT   postalcode of search
  -lat, --latitude TEXT      if lat and long are set, the other params are not
                             used
  -lon, --longitude TEXT     if lat and long are set, the other params are not
                             used
  -r, --radius INTEGER       expand the search square by the distance in
                             kilometers
  -m, --max_results INTEGER  number of results, default=50
  -o, --output TEXT          csv, json (save the results to a csv or json
                             file)
  -proxy, --proxy TEXT       the proxy to send requests, example:
                             socks5://127.0.0.1:9150
  --help                     Show this message and exit.

店舗の営業時間や電話番号、緯度経度を調べたい場合に便利かもしれません。

ddgs maps -k "tokyo tower" -p "tokyo"
1.          =========================================================================
title       Tokyo Tower
address     4-chome 2-8, 芝公園, JP 105-0011
country_codeNone
url         https://www.tokyotower.co.jp
phone       +81334335111
latitude    35.6585581
longitude   139.7455037
source      https://www.tripadvisor.com/Attraction_Review-g14129730-d320047-Reviews-Tokyo_Tower-Shibakoen_Minato_Tokyo_Tokyo_Prefecture_Kanto.html?m=63959
image
desc
hours       {'Fri': '09:00:00-23:00:00', 'Mon': '09:00:00-23:00:00', 'Sat':
            '09:00:00-23:00:00', 'Sun': '09:00:00-23:00:00', 'Thu':
            '09:00:00-23:00:00', 'Tue': '09:00:00-23:00:00', 'Wed':
            '09:00:00-23:00:00', 'closes_soon': 0, 'is_open': 0, 'opens_soon':
            1, 'state_switch_time': '09:00'}
category    Point of interest
facebook
instagram
twitter

postcodeも使えるらしいので、「郵便番号から住所を検索したいときに便利なのでは?」と思ったのですが、日本の郵便番号には対応していないかもしれません。 下記を実行しましたが、レスポンスが空でした。

ddgs maps -k "japan" -post 105-0004
ddgs maps -k "japan" -post 1050004
ddgs maps -k "japan" -post "1050004"
ddgs maps -k "japan" -post "105-0004"
ddgs maps -k "*" -post "105-0004"

テキスト検索機能で郵便番号を検索することはできますが、これをするなら別の方法で住所検索をする方が良さそうです。

ddgs text -k "postcode 105-0004" -r "jp-jp" -m 2
1.          =========================================================================
title       Postal Code 105-0004: Shin Bashi, Minato-ku, Tokyo
href        https://www.japanpostalcode.net/cp110440/zip-code-105-0004-shin-bashi-minato-ku-tokyo
body        Details for Japan Zip Code 105-0004: Shin Bashi, Minato-ku, Tokyo. Including
            how to write address correctly in the envelope or label so your
            correspondence or parcel arrive there. ... Toggle navigation Japan
            Postal Code. How Postal Codes are Structured; Home > Tokyo >
            Minato-ku > Shin Bashi Postal Code 105-0004: Shin Bashi, Minato-
            ku, Tokyo ...

2.          =========================================================================
title       郵便番号 105-0004 の検索結果 - 日本郵便 - Japan Post
href        https://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=105-0004
body        郵便番号の一部から、お探しの郵便番号と住所を調べることができます。

news

ddgs news --help
Usage: ddgs news [OPTIONS]

  CLI function to perform a news search using DuckDuckGo API.

Options:
  -k, --keywords TEXT             keywords for query  [required]
  -r, --region TEXT               wt-wt, us-en, ru-ru, etc. -region
                                  https://duckduckgo.com/params
  -s, --safesearch [on|moderate|off]
  -t, --timelimit [d|w|m|y]       day, week, month, year
  -m, --max_results INTEGER       maximum number of results, default=25
  -o, --output TEXT               csv, json (save the results to a csv or json
                                  file)
  -p, --proxy TEXT                the proxy to send requests, example:
                                  socks5://127.0.0.1:9150
  --help                          Show this message and exit.

特定のキーワードに関係するニュースを定期的にチェックしたい場合に便利そうです。

ddgs news -k olympic -r jp-jp -m 10
1.          =========================================================================
date        2024-07-27T18:06:00+00:00
title       夏季五輪 日本 メダル総数500個達成 パリオリンピック
body        パリオリンピックで、柔道女子48キロ級の角田夏実選手が金メダルを獲得し、夏のオリンピックでの日本のメダルが合計500個に達しました。初参加から112年、日本
            の選手たちが世界の舞台で築き上げてきた金字塔です。
url         https://www3.nhk.or.jp/news/html/20240728/k10014526821000.html
image       https://www3.nhk.or.jp/news/html/20240728/K10014526821_2407280422_0728043857_01_02.jpg
source      NHK

2.          =========================================================================
・・・

suggestions

ddgs suggestions --help
Usage: ddgs suggestions [OPTIONS]

  CLI function to perform a suggestions search using DuckDuckGo API.

Options:
  -k, --keywords TEXT  keywords for query  [required]
  -r, --region TEXT    wt-wt, us-en, ru-ru, etc. -region
                       https://duckduckgo.com/params
  -o, --output TEXT    csv, json (save the results to a csv or json file)
  -p, --proxy TEXT     the proxy to send requests, example:
                       socks5://127.0.0.1:9150
  --help               Show this message and exit.

キーワードに関係する別のキーワードを提案してくれるAPIです。

ddgs suggestions -k summer -r jp-jp
1.          =========================================================================
phrase      summer

2.          =========================================================================
phrase      summer sonic

3.          =========================================================================
phrase      summer pockets

4.          =========================================================================
phrase      summer 久石譲

5.          =========================================================================
phrase      summer game fest 2024

6.          =========================================================================
phrase      summer clover

7.          =========================================================================
phrase      summertime

8.          =========================================================================
phrase      summer 楽譜

text

ddgs text --help
Usage: ddgs text [OPTIONS]

  CLI function to perform a text search using DuckDuckGo API.

Options:
  -k, --keywords TEXT             text search, keywords for query  [required]
  -r, --region TEXT               wt-wt, us-en, ru-ru, etc. -region
                                  https://duckduckgo.com/params
  -s, --safesearch [on|moderate|off]
  -t, --timelimit [d|w|m|y]       day, week, month, year
  -m, --max_results INTEGER       maximum number of results, default=20
  -o, --output TEXT               csv, json (save the results to a csv or json
                                  file)
  -d, --download                  download results to 'keywords' folder
  -b, --backend [api|html|lite]   which backend to use
  -th, --threads INTEGER          download threads, default=10
  -p, --proxy TEXT                the proxy to send requests, example:
                                  socks5://127.0.0.1:9150
  --help                          Show this message and exit.

実行結果

ddgs text -k "tokyo sky tree" -r jp-jp
1.          =========================================================================
title       Tokyo Skytree
href        https://www.tokyo-skytree.jp/en/
body        TOKYO SKYTREE is the world's tallest tower at 634 meters, offering panoramic
            views of Tokyo and various attractions. Check the opening hours,
            today's lighting, and special events for TOKYO SKYTREE 2024.

2.          =========================================================================
title       Tokyo Skytree - Wikipedia
href        https://en.wikipedia.org/wiki/Tokyo_Skytree
body        Tokyo Skytree (東京スカイツリー, Tōkyō Sukaitsurī, [toːkʲoː sɯ̥kaitsɯriː]) is a
            broadcasting and observation tower in Sumida, Tokyo.It became the
            tallest tower in Japan in 2010 and reached its full height of 634
            meters (2,080 ft) in March 2011, making it the tallest tower in
            the world, displacing the Canton Tower, and the third tallest
            structure in the world after Merdeka ...

translate

ddgs translate --help
Usage: ddgs translate [OPTIONS]

  CLI function to perform translate using DuckDuckGo API.

Options:
  -k, --keywords TEXT  text for translation  [required]
  -f, --from_ TEXT     What language to translate from (defaults
                       automatically)
  -t, --to TEXT        de, ru, fr, etc. What language to translate,
                       defaults='en'
  -o, --output TEXT    csv, json (save the results to a csv or json file)
  -p, --proxy TEXT     the proxy to send requests, example:
                       socks5://127.0.0.1:9150
  --help               Show this message and exit.

実行結果。翻訳の精度はわかりません。翻訳精度に不満がある場合は、chat APIに翻訳してもらうのもありかもしれません。

ddgs translate -k "こんにちは" -t en
1.          ==============================================================================
language    ja
translated  Hello
original    こんにちは

ddgs translate -k "こんにちは" -t ko
1.          ==============================================================================
language    ja
translated  안녕하세요
original    こんにちは

version

ddgs version
6.2.4

videos

ddgs videos --help
Usage: ddgs videos [OPTIONS]

  CLI function to perform a videos search using DuckDuckGo API.

Options:
  -k, --keywords TEXT             keywords for query  [required]
  -r, --region TEXT               wt-wt, us-en, ru-ru, etc. -region
                                  https://duckduckgo.com/params
  -s, --safesearch [on|moderate|off]
  -t, --timelimit [d|w|m]         day, week, month
  -res, --resolution [high|standart]
  -d, --duration [short|medium|long]
  -lic, --license_videos [creativeCommon|youtube]
  -m, --max_results INTEGER       maximum number of results, default=50
  -o, --output TEXT               csv, json (save the results to a csv or json
                                  file)
  -p, --proxy TEXT                the proxy to send requests, example:
                                  socks5://127.0.0.1:9150
  --help                          Show this message and exit.

実行結果

ddgs videos -k "rainy75" -m 2
1.          =========================================================================
content     https://www.youtube.com/watch?v=XBhQN0QnD-E
description Pre-order Rainy75 Here:
            https://www.kickstarter.com/projects/keeb/rainy-75-keyboard-
            redefining-90-ish-mechanical-keyboards Rainy75 Specs:
            https://www.wobkey.com/pages/specs Rainy75 Json Files:
            http://woblab.cn/ Glad I tried this long review format but not
            doing it again. 0:00 Intro/Unboxing 0:28 Context/Unboxing 0:54
            Packaging/Unboxing 1:06 ...
duration    11:26
embed_html  <iframe width="1280" height="720"
            src="https://www.youtube.com/embed/XBhQN0QnD-E?autoplay=1"
            frameborder="0" allowfullscreen></iframe>
embed_url   https://www.youtube.com/embed/XBhQN0QnD-E?autoplay=1
image_token 65fbc1dd2834c774a37cf72f9b04ed0c8d85eadd07e2f0c9ec7e36b79e4bdc1d
images      {'large':
            'https://tse2.mm.bing.net/th?id=OVP.DBJGAp3nC-Q7BkR6hkJwWwEsDh&pid
            =Api', 'medium': 'https://tse2.mm.bing.net/th?id=OVP.DBJGAp3nC-Q7B
            kR6hkJwWwEsDh&pid=Api', 'motion': 'https://tse3.mm.bing.net/th?id=
            OM1.mt7LKOqz6BWiBQ_1708406101&pid=Api', 'small': 'https://tse2.mm.
            bing.net/th?id=OVP.DBJGAp3nC-Q7BkR6hkJwWwEsDh&pid=Api'}
provider    Bing
published   2024-01-29T14:00:32.0000000
publisher   YouTube
statistics  {'viewCount': 16127}
title       Easy to use and love | In-depth Rainy75 Review
uploader    alcekeys

2.          =========================================================================
content     https://www.youtube.com/watch?v=vpFL6Qq-Gj4
description The Wobkey Rainy75 is a gasket mount 75% keyboard with 2.4 GHz and Bluetooth
            Wireless, pre-lubed HMX Violet switches, double-shot PBT keycaps,
            RGB lighting, flex cuts, 1.2 mm PCB, Polypropylene flex cut plate,
            pre-lubed M-One stabilizers, an Aluminum case, bottom weight, and
            VIA compatibility. This board sems to tick every feature there is
            to ...
duration    12:47
embed_html  <iframe width="1280" height="720" src="https://www.youtube.com/embed/vpFL6Qq-
            Gj4?autoplay=1" frameborder="0" allowfullscreen></iframe>
embed_url   https://www.youtube.com/embed/vpFL6Qq-Gj4?autoplay=1
image_token 2df0f46d1670d62fe143bd39d9bb593e03a25005991db550447b70eee2e0c326
images      {'large': 'https://tse1.mm.bing.net/th?id=OVP.ZOasPnyC_kt-
            hjx8-9aCZgHgFo&pid=Api', 'medium':
            'https://tse1.mm.bing.net/th?id=OVP.ZOasPnyC_kt-
            hjx8-9aCZgHgFo&pid=Api', 'motion': 'https://tse3.mm.bing.net/th?id
            =OM2.TnAat_7_izOJQA_1707074189&pid=Api', 'small':
            'https://tse1.mm.bing.net/th?id=OVP.ZOasPnyC_kt-
            hjx8-9aCZgHgFo&pid=Api'}
provider    Bing
published   2024-01-14T16:00:35.0000000
publisher   YouTube
statistics  {'viewCount': 20777}
title       Wobkey Rainy75 Review: So Much Keyboard For So Little Money!
uploader    The Manic Geek

プライバシーへの配慮もDuckDuckGoの強み

DuckDuckGoはユーザーのプライバシーを大切にしています。 そのため、ユーザーの検索結果を学習データに使ったりトラッキングはしません。 また、外部のChat AI(Chat GPT、Claude3)にデータを送信する場合にもユーザーのIPアドレスなど個人に関する情報は削除した上でChatGPTなどに送信しており、更にユーザーのテキストデータを学習に使わない契約や、30日経過後にデータを削除する契約を結んでいるようです。

How does DuckDuckGo AI Chat protect my privacy? | DuckDuckGo Help Pages

最後に

DuckDuckGoのAPIを試してみました。検索に関係する定型作業を自動化するときに便利そうですね。 APIの実行結果を見ていると、一部の検索結果でBing Web Search APIの結果を使っていそうです。 おそらく自前のクローラーが集めたデータにプラスしてBing Searchの結果を使っているのではないかと思います。

Bing Search APIやChatGPT、Claudeなど、本来有料のサービスの機能をAPIで無料で提供してくれるなんてかなり太っ腹ですね。ユーザーとしてはとてもありがたいのですが、DuckDuckGo側が大丈夫なのかと心配してしまいます。 それなりの期間APIの提供を継続しているようなので(※1)、おそらく予算面のバランスは取れているのでしょう(※2)。

DuckDuckGoはMailのリレーサービスなども提供しています。検索APIだけでなくメールの方も便利に使わせてもらおうと思います。

※1 duckduckgo-searchのライブラリが2021年4月から公開されているので、少なくともその頃にはAPIが提供されていたようです。

※2 流石に無制限で検索できるわけではなく、Rate Limitは設定されているみたいです。
What is the exact rate limit of DDG? · Issue #198 · deedy5/duckduckgo_search · GitHub

tweet Share