# Changelog of Business Locations Analyzer — Bulk CSV API (`apivault_labs/business-locations-analyzer`) Actor

- **URL**: https://apify.com/apivault_labs/business-locations-analyzer/changelog.md
- **Full Actor documentation**: https://apify.com/apivault_labs/business-locations-analyzer.md

### 2026-10-05 — Position as a business-location analyzer

- Lead the Store title and README with internal market research and aggregate analytics.
- Add a snapshot analytics-only example and clarify its country-level output.
- Keep optional record exports explicit and preserve usage safeguards and existing inputs.

### 2026-10-05 — Clarify responsible use and contract precedence

- Make internal use, resale and harmful-use boundaries visible near Quick start.
- Cover redistribution of subsets/reformatted records and preserve aggregated research.
- Clarify user obligations, non-excludable Creator duties and inactive custom terms.
- Update privacy scope for official-site records; no additional input gate.

### 2026-10-05 — Remove extra first-run gate

- Remove the acceptTerms checkbox and runtime export gate at the owner request.
- Existing inputs with acceptTerms=false now run normally; legacy input is ignored.
- Keep described usage restrictions; default missing intendedUse to internal research.

### 2026-10-05 — First-run acknowledgement

- Put the required acknowledgement at the top of the input form.
- Return an action-required summary without a traceback when acknowledgement is absent.
- Preserve explicit consent: no export or row charge when acceptTerms is false.

## Changelog

### 0.2.30 — 300 MiB multi-project seed storage

- Moved checkpoints into a dedicated small Neon control project.
- Added automatic data-project creation through the encrypted Neon API key so
  each seed data collection has an independent project storage allowance.
- Rotates data storage partitions at 150 MiB with a 300 MiB safety ceiling and retrieves
  connection URIs just in time instead of persisting data collection passwords.
- Migrated all existing checkpoints and registered the four legacy storage partitions as
  sealed without modifying or deleting their data.

### 0.2.29 — automatic seed data collection rotation

- Added an internal shard catalog and automatic PostgreSQL data collection creation.
- Candidate writes rotate at 128 MiB to preserve operational headroom below the
  configured 200 MiB hard ceiling for each logical data collection.
- Kept source-level transactions and checkpoints intact, and exposed only safe
  data collection names and byte counts in the private run report.
- Added a resumable owner-side batch runner for processing all configured
  countries without exposing source or destination credentials.

### 0.2.28 — private resumable seed bridge

- Added an owner-only internal export path that reads the existing encrypted
  country shards without exposing their connection strings or source rows.
- Streams website, company, country, category, city and freshness hints into the
  separate collector data collection using bounded-memory aggregation and batch UPSERT.
- Added per-source transactional checkpoints so interrupted multi-shard imports
  safely continue without double-counting completed shards.
- Kept the Actor private and the internal mode out of the customer input schema.

### 0.2.27 — single-entity data license positioning

- Clarified that pricing covers collection, cleaning, coordinate normalization,
  deduplication, structuring, maintenance, querying, analytics and delivery—not
  ownership of underlying public business facts.
- Limited permitted use to the purchasing individual or one legal entity and
  prohibited sharing, redistribution, SaaS/API/data collection embedding and AI/LLM
  training without a separate legally valid written license.
- Added brand non-affiliation, commercial-value disclaimer and five-row sample
  guidance while keeping refunds and liability governed by Apify's terms.

### 0.2.26 — competitor-pattern use governance

- Kept Apify's Standard Actor Contract as the governing agreement, including its
  output-verification rule, as-is disclaimer and USD 100 liability cap.
- Added a dedicated acceptable-use policy modeled on common controls used by
  established public-web-data vendors without copying their text.
- Added a mandatory five-option `intendedUse` declaration, seven-day commercial
  review period, abuse reporting and risk-based refusal/suspension language.
- Clarified that the custom terms draft is inactive and cannot provide users
  materially less protection than Apify's standard contract.

### 0.2.25 — transparent duplicate reporting

- Added `duplicateRowsSkipped` to the run summary so cross-source duplicate
  suppression is visible to the customer.

### 0.2.24 — portable removal enforcement

- Bundled the creator-managed suppression registry with the Actor so approved
  removals are enforced even when encrypted deployment variables are preserved.
- Kept an optional secret override for urgent removals between source updates.

### 0.2.23 — privacy-by-design output and analytics

- Removed source-specific IDs, photos, email, booking links and raw source
  attributes from the public row contract.
- Added provider-neutral `locationId` values, freshness metadata and six
  documented analytical indicators with a versioned methodology.
- Added exact aggregate-only market analytics without individual Dataset rows.
- Added mandatory responsible-use acknowledgement, creator-managed suppression
  filtering, duplicate suppression and a 10,000-row export cap with no offset
  traversal.
- Added prominent accuracy/age disclaimers, privacy and data-request procedures,
  and draft custom end-user contract language for legal review.

### 0.2.22 — provenance and responsible-use disclosure

- Documented that the Actor queries a stored, pre-collected snapshot assembled
  from publicly accessible pages without an official paid listings API.
- Added internal-use positioning, a bulk-resale and competing-directory
  prohibition, downstream compliance duties and a correction/removal channel.
- Kept the disclosure explicit that public accessibility and user duties do not
  eliminate the Creator's own legal responsibilities.

### 0.2.20 — neutral location-data surface

- Removed third-party map-brand references from the Actor package.
- Removed provider-specific URL and CID fields from selectable and returned
  location data.

### 0.2.19 — README image placement

- Restored the product hero immediately below the README title.
- Moved the realistic analyst photograph from the upper use-case area to the
  middle of the README, immediately before the Output section.

### 0.2.18 — transparent price positioning

- Added exact five, 100, 1,000 and 10,000-location price examples to README.
- Added a sourced, apples-to-apples-qualified comparison with contact-data and
  Places API pricing without claiming that enriched contacts equal locations.
- Added exact maximum export-price explanations to all private Task descriptions.

### 0.2.17 — Store positioning and output clarity

- Added the 28M+ record scale to the visible Actor title while keeping the main
  search phrase first.
- Reworked the README around the ready-made data collection value proposition and added
  a realistic mid-page product image, output example, comparison and FAQ.
- Made country and collection catalogs available in every run and replaced empty
  optional output links with explicit instructions for their required modes.
- Expanded the private saved Task catalog from 12 to 20 scenarios.

### 0.2.16 — tiered PPE pricing

- Restored pay-per-event monetization after a temporary Free pricing record.
- Set delivered locations to $7/1K on paid plans and $15/1K on the Free tier.
- Kept the Actor-start event and user-paid platform usage enabled.

### 0.2.15 — Store artwork v2

- Replaced the transparent-looking icon with an opaque blue-background design.
- Replaced the decorative README image with a wide product hero containing the
  exact title, coverage and search proposition.

### 0.2.14 — private launch surface cleanup

- Removed the owner quality diagnostic from the customer-facing Input and Output schemas.
- Added the generated Store hero to the README and prepared a 512px icon asset.
- Kept the Actor and all saved Tasks private.

### 0.2.13 — charge-limit correctness

- Use `ChargeResult` to count rows actually accepted by the default Dataset.
- Stop uploading when a PPE run reaches its maximum charge and return an exact
  resumable `nextOffset` instead of overstating `rowsReturned`.

### 0.2.12 — large-export tuning and launch audit

- Dynamically size shard pages to cap the global merge buffer near 24,000 rows.
- Reduce remote SQL round trips for one-country exports while preserving the
  bounded-memory behavior for all-country runs.
- Verified every one of the 40 ready-made collections end-to-end.
- Added exact per-source quality and freshness diagnostics across all 196 sources.
- Prepared 12 private saved Task scenarios and Store icon/hero assets.

### 0.2.11 — global merge hardening

- Added deterministic global sorting across every selected country and data collection segment.
- Replaced shard-by-shard pagination with a globally merged continuation stream.
- Added one-row lookahead so `hasMore` is exact at page boundaries.
- Made source failures fail closed before any paid Dataset rows are created.
- Spool verified result windows to temporary JSONL and upload in bounded-memory batches.

### 0.2

- Expanded coverage again to 28.2M+ records and 14 countries with Germany, Italy and Spain.
- Audited 97 new sources: all available, schema-compatible and free of sampled overlaps.
- Added transparent support for both text-based and typed PostgreSQL source schemas.
- Expanded the ready-made catalog from 14 to 40 high-demand business collections.
- Made collection aliases exact against discovery categories to prevent substring false positives.
- Sorted country choices and `listCountries` from largest to smallest verified coverage.
- Expanded coverage to 15.2M+ locations across 11 countries and 99 unique data segments.
- Added verified country volumes to the Input UI and `listCountries` output.
- Added multi-source country querying with bounded concurrency for counts and categories.
- Excluded one mislabeled Netherlands segment that duplicated Belgian data.
- Added 14 ready-made business collections with category aliases and safe exclusions.
- Added a free `listCollections` catalog for API and MCP clients.
- Added company and brand name search with contains, starts-with and exact modes.
- Added include and exclude category filters to remove irrelevant name matches.
- Added normalized addresses, cities, coordinates, ratings, category arrays and opening hours.
- Added multi-country pagination, Output Schema, Dataset Schema and MCP-ready contracts.
- Moved count and category discovery results out of the paid Dataset.
- Added postal-code, state, claimed-profile, opening-hours and closed-location filters.
- Added coordinate radius search with a calculated distance in every result.
- Added nearest, most-reviewed and alphabetical sorting modes.
- Added business status, booking, neighborhood and attribute fields.
- Added a free country-catalog mode for API and MCP clients.
- Fixed owner-run summaries reporting zero rows when Dataset writes succeeded but PPE was not charged.
