Duckduckgo-search

Latest version: v2025.4.1

Safety actively analyzes 723200 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 12 of 28

5.1.0

What's Changed
* [BUGFIX: _text_api() - update request payload (api blocks requests)](https://github.com/deedy5/duckduckgo_search/commit/9c72db0fb4ecdcfe982a23e94ee4f50b20d8610a)
* Add mypy type-checking, recode to comply by deedy5 in https://github.com/deedy5/duckduckgo_search/pull/193
* [maps(): raise exception if coordinates are not found](https://github.com/deedy5/duckduckgo_search/commit/cfc13617d3487448cb6f420ac6970b6a6b8f5439)
* [DDGS: make _loop class variable](https://github.com/deedy5/duckduckgo_search/commit/05b82bdf845b9e4ebf660280a6056b907164a8cb)
* [AsyncDDGS: make _executor class variable](https://github.com/deedy5/duckduckgo_search/commit/013636a064461d6639ca5a9ba25b3885021809ae)
* [utils.py: _is_500_in_url() - decorate with lru_cache](https://github.com/deedy5/duckduckgo_search/commit/ebefde6adfaa5d05f71c2efa08b520190b49d504)
* [AsyncDDGS.__init__(): add 'self._parser' for reuse lxml HtmlParser within class instance](https://github.com/deedy5/duckduckgo_search/commit/e4005837f594df848ebd07dade92d4d4793857b2)


**Full Changelog**: https://github.com/deedy5/duckduckgo_search/compare/v5.0...v5.1.0

5.0

What's Changed
1) **[BREAKING CHANGES]** DDGS, AsyncDDGS : all functions are now not generators, but return a list of dictionaries
2) Results return is dramatically sped up by asynchronous requests under the hood, especially for large max_results values
3) DDGS: reuse shared event loop,running in thread
4) AsyncDDGS: add global _SHARED_EXECUTOR for using in run_in_executor
5) maps(): removed MapsResult model, results are saved directly by the dictionary
6) maps(): divide bbox only if distance between coordinates > 1km
7) _extract_vqd(): replace regex pattern with .index
8) text(): simplify xpath patterns in _text_html() and _text_lite()
9) using orjson if installed
10) update CLI and tests to keep up with the changes
12) update dependencies: curl-cffi to 0.6.2, ruff to 0.3.0

**Full Changelog**: https://github.com/deedy5/duckduckgo_search/compare/v4.5.0...v5.0

5.0b1

1) AsyncDDGS, DDGS: remove `max_clients` parameter (unclear behavior).
2) AsyncDDGS, DDGS: add `concurrency` parameter to limit the number of concurrent requests (using asyncio.Semaphore).
3) AsyncDDGS.maps(): add squares into queue only if distance between coordinates > 1km.
4) AsyncDDGS.maps(): bugfix exception when work_bboxes_results element is a dict.
5) _extract_vqd(): replace regex pattern with .index().
6) Update dependencies: curl-cffi to 0.6.2. ruff to 0.3.0.

**Full Changelog**: https://github.com/deedy5/duckduckgo_search/compare/v5.0b...v5.0b1

5.0b

What's Changed
1) **[BRAKING CHANGES!!!]** DDGS, AsyncDDGS : all functions are now not generators, but return results as a list of dictionaries,
2) DDGS, AsyncDDGS: added `max_clients` parameter to regulate the number of concurrent HTTP clients.
3) DDGS, AsyncDDGS: added possibility to use without context manager (it is not necessary to use `with` block).
4) Results return is dramatically sped up by asynchronous requests under the hood, especially for large max_results values.
5) maps(): removed MapsResult model, results are saved directly by the dictionary.
6) updated CLI and tests to keep up with the changes.
7) updated README.


**Full Changelog**: https://github.com/deedy5/duckduckgo_search/compare/v4.5.0...v5.0b

4.5.0

**Full Changelog**: https://github.com/deedy5/duckduckgo_search/compare/v4.4.3...v4.5.0

4.4.3

1) Bugfix in maps(): no result was returned if only the zip parameter was used

**Full Changelog**: https://github.com/deedy5/duckduckgo_search/compare/v4.4.2...v4.4.3

Page 12 of 28

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.