# Changelog of Local Lead Finder | $1.8/1K | Businesses Without Websites (`apivault_labs/apify-actor-local-leads`) Actor

- **URL**: https://apify.com/apivault\_labs/apify-actor-local-leads/changelog.md
- **Full Actor documentation**: https://apify.com/apivault\_labs/apify-actor-local-leads.md

## Changelog

All notable changes to this Actor are documented here.

### \[2.7] — 2026-09-18

#### Added — MCP-first workflows and guided input

- Added an explicit `workflow` selector for local search, URL enrichment,
  combined runs, and backward-compatible automatic routing.
- Added compact `sales` and `contacts` output presets while preserving the
  complete legacy record as the default.
- Added a typed dataset schema, dedicated Output links, and stable `SUMMARY`
  and `ERRORS` records for API and MCP clients.
- Grouped the Console form into numbered user tasks plus a clearly marked
  advanced collection section.

#### Changed

- New runs default to a 25-row cost cap. Set `maxResults: 0` explicitly when
  an uncapped full-market export is intentional.
- Invalid workflow inputs now return stable error codes and actionable next
  steps instead of only a free-form failure message.

### \[2.6] — 2026-08-01

#### Fixed

- **Restored results.** YellowPages began serving a Cloudflare challenge to the
  free reader backend, which returned an empty page that was mistakenly treated
  as "no businesses" — stopping the fallback chain and returning zero leads.
  The primary collection engine (which still returns rows) is now tried first,
  the fallback chain advances on any empty result, and Cloudflare challenge
  pages are detected and retried instead of being read as empty.

### \[2.5] — 2026-07-02

#### Changed — internal

- Simplified the engine-selection labels and streamlined backend configuration.
  No change to behaviour, output or pricing.

### \[2.4] — 2026-06-14

#### Fixed — automated quality test / "under maintenance"

- A run that collected **0 businesses** (when the data source is momentarily
  busy) used to end as **failed**, which tripped Apify's automated quality test
  and flagged the actor as *Under maintenance*. It now **finishes successfully**
  with zero leads and a clear status message — no data is pushed, so you are
  still not charged.
- Added an overall **wall-clock budget (~200 s)** for the collect + enrich
  phase so the run always completes well within Apify's 5-minute automated-test
  window, pushing whatever leads were gathered. Large manual runs can narrow the
  search (`maxPages` / `maxResults`) or be re-run for the rest.

### \[2.3] — 2026-06-11

#### Changed — reliability & speed overhaul (same $2/1K price)

A single release rolling up the day's collection-engine and performance work:

- **New primary collection engine + triple redundancy.** Listings are now
  collected through a fast rendering engine that handles anti-bot protection,
  with **two independent backup engines** behind it (automatic fallback), so
  runs keep succeeding even when one provider is temporarily down. An optional
  free API key raises rate limits on very large runs.
- **Built-in rotating proxy (no key needed).** Collection routes through
  Apify's rotating datacenter proxy by default, so each request uses a fresh IP
  and the free engine's per-IP rate limit never causes pauses. Optional custom
  proxy field is also supported; toggle off for direct requests.
- **Overlapped pipeline.** Businesses are enriched the moment each result page
  arrives while later pages are still being collected, so large searches finish
  noticeably faster (total time approaches the slower phase, not their sum).
- **Tuned for speed.** Faster polling, smarter per-page time budgets, optimal
  collection parallelism (~10), and **bulk dataset writes** (results saved in
  large chunks instead of one row at a time) cut tens of seconds off big runs.
- **Default scan depth** set to cover the full local market (~1,000+ leads on
  large metros); lower "Max pages" for faster, cheaper runs.

### \[2.2] — 2026-06-10

#### Changed — far more leads per run (same $2/1K price)

- **Auto-scans the whole local market.** The actor keeps pulling result pages
  automatically until the directory runs out, instead of collecting a single
  page. A typical search now returns **hundreds to 1,000+ businesses** in one
  run — roughly a **50× increase** in leads for the same price.
- **New `maxPages` control** sets how deep auto-pagination goes; leave `pages`
  at 0 for full auto, or set it to pin an exact page count.
- **Faster collection** — higher default parallelism plus a fast enrichment
  mode that kicks in automatically on large result sets.

#### Notes

- Fully backwards-compatible: every existing field and toggle is unchanged.
  If you previously passed `pages`, it still works exactly as before.

### \[2.1] — 2026-06-08

#### Fixed — reliability & polish

- **More reliable collection.** Added automatic retries so a temporary hiccup
  on the data source no longer ends the run empty — the actor keeps trying
  within a time budget and recovers on its own.
- **Honest empty-run handling.** If the source is briefly unavailable and
  returns nothing, the run says so clearly and **does not charge you**.
- **Cleaner run log.** Redesigned the console output into a clear summary
  (totals, lead tiers, leads without a website, deliverable emails) instead of
  noisy line-by-line logging.
- **Email-suggestion fix.** Fixed a bug where email guesses were skipped for
  some business domains (e.g. domains ending in "…bing.com" such as
  *plumbing.com*). Plumbers and similar categories now get suggestions correctly.

### \[2.0] — 2026-06-07

#### Added — full lead-intelligence enrichment (same $2/1K price)

Every lead is now enriched into a **sales-ready record** instead of a raw
listing. All enrichment is included in the price and can be toggled off
individually.

- **Lead score 0-100 + tier** (`leadScore`, `leadTier`, `leadScoreReasons[]`).
  No website is the highest-value signal; dead and DIY-builder sites score high
  too. Results are sorted hottest-first.
- **Website status + tech** — `websiteAlive`, `websiteStatus`,
  `websiteSslValid`, `websiteTechStack[]` (12 platforms: Wix, Squarespace,
  WordPress, Shopify, Webflow, GoDaddy, Weebly, WordPress.com, Joomla, Drupal,
  ClickFunnels, GoHighLevel).
- **Real contact emails + deliverability score** — `emailsFromWebsite[]`,
  plus a per-email 0-100 score so you know which inbox is safe to contact.
  Adds `emailDetails[]`, `bestEmail`, `bestEmailConfidence`, `bestEmailStatus`.
- **Owner / decision-maker name** (`ownerName`) so outreach can open with a
  real first name.
- **Phone E.164 + click-to-call** (`phoneE164`, `phoneTel`, `phonesFromWebsite[]`).
- **Real social profiles** (`socialProfiles{}`) — the business's actual
  FB / IG / LinkedIn / X / YouTube / TikTok links, with `socialSearchUrls{}`
  search fallbacks.
- **Mobile-friendliness + SEO check** (`mobileFriendly`, `mobileSignals[]`,
  `seoAudit{}`).
- **Personalised outreach pitch** (`outreachPitch`) with 10 industry-specific
  angles, tailored to no-website / dead-site / DIY-builder.
- **Smart contact lookup** (`crawlSubpages`) — looks at common contact pages
  when a homepage has no email.
- **Brand age** (`brandAgeYears`), **chain / franchise detection**
  (`isChain`, `chainBrand`) + `excludeChains` filter, and optional
  **geocoding** (`enrichGeocode` → `lat`/`lng`).
- **Best-contact recommendation** (`bestContact{}`).
- **Direct URL / domain mode** (`startUrls`) — enrich your own list without a
  directory search.
- **CSV export** (`exportFormat`) with HubSpot / Pipedrive column names.
- **Cost control** — `minLeadScore` and `maxResults`.

#### Changed

- `category` + `location` are no longer strictly required — supply them, OR
  `startUrls`, OR both.
- Results are sorted by lead score (hottest first).
- The per-run summary is not counted as a billable result.

#### Migration

Fully additive. All v1 fields are unchanged; new fields appear alongside.
Disable any new behaviour via the matching `enrich*` / `crawlSubpages` /
`verifyEmails` / `extractOwnerName` toggle.

### \[1.0] — 2026-05-11

#### Added

- Initial release
- Find local businesses by category + location
- `hasWebsite` flag for "businesses without website" filtering
- `onlyWithoutWebsite` filter
- Multi-page collection
