# Changelog of Duck.ai Guest Answers Scraper (`searchapi/duck-duck-ai-answers-scraper`) Actor

- **URL**: https://apify.com/searchapi/duck-duck-ai-answers-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/searchapi/duck-duck-ai-answers-scraper.md

## Changelog

### 2.1.1 - 2026-10-26

- The service-error retry now reloads the chat URL and waits for the composer before each attempt. A submitted prompt leaves the previous UI consumed, so the old retry retyped into a page that had no usable input and reported `EXTRACTION` ("Could not find Duck.ai chat input element") instead of the target's own outage.
- If the composer never returns after the target's service-error surface, the run fails closed as `UPSTREAM_UNAVAILABLE` carrying the attempt count and the observed excerpt, rather than blaming the extractor.

### 2.1.0 - 2026-10-26

- Duck.ai's own "temporarily unavailable" notice is no longer stored as an answer. It renders inside the assistant message container as real prose, so the previous length check accepted it (`isAnswer: true`, `hasError: false`, `requestStatus: "complete"` on run `KdBae8NTaqBf52tfx`).
- `classifyChatText` now separates an answer from the target's service-error surface and from placeholder/empty text; a service error is retried up to three times and then fails closed as `UPSTREAM_UNAVAILABLE` with the observed excerpt, so nothing is fabricated.
- The chat UI is awaited explicitly before the first prompt, and a blank or challenged document is reported as `BLOCKED` instead of `EXTRACTION`.

### 2.0.0 - 2026-09-22

- Updated navigation and extraction for the current Duck.ai guest chat UI.
- Switched the Playwright runtime from Firefox to Chromium.
- Added displayed model, conversation, source, response metrics, provenance, and metadata fields.
- Removed the webdriver override and the undocumented sample region option.
