# Changelog of Perplexity Search Answers Scraper (`searchapi/perplexity-search-answers-scraper`) Actor

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

## Changelog

All notable changes to the Perplexity Search Answers Scraper are documented here.

### Unreleased

#### Fixed

- Replaced stale query-string navigation with the current `/search/new` textbox-and-submit workflow.
- Added current Search, Deep research, Model council, and Learn step-by-step modes while preserving `web` as a Search alias.
- Added initial response validation, bounded runtime controls, sessions, strict proxy failure handling, and immediate auth-wall classification.
- Honored explicit proxy-disabled input on Apify Cloud instead of silently creating a default proxy.
- Reduced streaming stability samples and the default answer timeout so transient failures retry within the target runtime.
- Added dataset required fields and nested schemas for sections, citations, sources, and follow-up questions.
- Isolated exact dependencies, pinned patched transitive releases, switched Docker builds to `npm ci`, and restored local Firefox execution.

### \[2.0.2] - 2026-07-20

#### Fixed

- **Answer truncation bug**: the previous code relied on the "Stop generating"
  button disappearing, which fired immediately on the auth-gate placeholder
  ("Sign up and repeat your request.") — so the captured `answerText` was
  only a fraction of the real answer. The new `waitForStreamingComplete`
  helper waits for both (a) the Stop button to be gone and (b) the prose
  text length to stay stable across multiple 1.5s samples, guaranteeing the
  full streamed answer is captured.
- **Auth-gate placeholder detection**: short placeholder strings (e.g. "Sign
  up and repeat your request.", "Sign in to continue") are now compared
  against a known allow-list and, when matched, the run throws a typed
  `BLOCKED` error so we never persist a fake answer.
- **Related questions extraction**: the extractor now harvests "Related"
  question chips in addition to the "Follow-ups" buttons.
- **Section count**: section parsing now picks up `<ul>`/`<ol>` items as
  proper bullet entries, so a 7-section climate-change answer is reported
  as 7 sections instead of 2.

### \[2.0.0] - 2026-06-13

#### Added

- **Initial production release** of the Perplexity Search Answers Scraper.
- AI answer content extraction (plain text + HTML preserving formatting).
- **Model detection** (e.g. `pplx-pro`, `gpt-4o`, `claude-3.7-sonnet`, `sonar`).
- **Focus mode** support (web, academic, social, youtube, reddit, writing).
- **Citation extraction** (count + indexes, paired with `perplexity-search-links-scraper`).
- **Related questions** + **follow-up suggestions** extraction.
- **Section breakdown** — answer split into logical sections (paragraphs / headers / lists).
- **Batch query mode** via `queries[]` for running multiple searches per actor run.
- **Perplexity's Next.js SSR-friendly** extraction — uses Playwright (Firefox) with stealth.
- `validate-datasets.js` for local dataset output validation.
- `Dockerfile` using `apify/actor-node-playwright-firefox` image.
- `README.md` with full Apify usage guide.
- Canonical normalizer in `src/canonical.js` (self-contained, no external deps).
