# Changelog of YellowPages Lead Scraper 📇 $1.50/1k (phone, website, no key) (`tagadanar/yellowpages-us`) Actor

- **URL**: https://apify.com/tagadanar/yellowpages-us/changelog.md
- **Full Actor documentation**: https://apify.com/tagadanar/yellowpages-us.md

## Changelog

### 2026-10-01

- **A connection hiccup is no longer mistaken for YellowPages refusing the
  run.** A page that gets no answer is now retried on a fresh connection, and
  after 20 seconds instead of 60. Before, a few such hiccups in a row were read
  as a block, and that page and the next four were sent over the slower
  fallback route for no reason.
- If a page still cannot be reached after four tries, that search stops there
  and the final status says so — "stopped early on a connection failure, not a
  refusal" — next to the leads the other searches delivered. Leads are only
  charged when delivered, as before.

### 2026-09-30

- **Fixed: a search with no matches, or a pasted URL that does not exist, was
  reported as a temporary failure** ("No YellowPages page could be read … please
  retry in a few minutes"). YellowPages answers both with a "not found" page,
  which the run used to skip without recording. Now each gets its honest
  outcome:
  - a search YellowPages has nothing for ends with "YellowPages returned no
    listings for "…" — its own page says "No results found for … in …"";
  - a pasted URL YellowPages has no page for ends with "YellowPages has no page
    at <your URL> (HTTP 404) — the URL is wrong or the page was removed",
    naming the URL so you can fix it;
  - a search YellowPages rejects as an "Invalid Search" (usually a location it
    does not recognise) says so and suggests a city and state.
- "No listings" is now only claimed when YellowPages itself says "No results
  found". A page with no readable leads and no such notice is reported as a
  page-format problem (and saved for inspection), never as an empty search.
- Genuine refusals by YellowPages are unchanged: they still say so and ask you
  to retry in a few minutes. Nothing is charged beyond the run start fee in any
  of these cases.

### 2026-09-19

- When the "Max business leads" cap is reached before all your searches have run, the final status now says how many searches were not run. The charge-limit message now names the input by its real label.

### 2026-09-06

- Fixed a case where a search could come back empty for no good reason.
  YellowPages had quietly stopped serving all but one of the browser identities
  this actor rotates through, so if that one identity was challenged on a given
  request, every remaining retry was guaranteed to be refused as well. The
  retries now use identities YellowPages was measured serving on the same day,
  so a single challenged request no longer costs you the page.
- Runs that hit YellowPages' rate limit now wait and try again instead of
  burning through their retries in a second. This only shows up on large jobs,
  where it turns a handful of skipped pages into pages you actually get.
- Nothing changes in how you use the actor: same inputs, same price, still no
  proxy settings to configure.

### 2026-08-30

- The residential fall-through added earlier today is now proven on the Apify
  platform, not just in the code: a run forced onto that path fetched
  YellowPages through a US residential exit on the first try and returned leads,
  and its status message said so ("1 of 1 page needed the residential proxy").
  So a day when the cheap exits are all banned now costs you nothing extra and
  still returns a full lead list.
- The switch that forces that path is a diagnostic we set on our side for one
  run; it is off in the published version, and it is deliberately not an input,
  so there is still nothing about proxies for you to see or configure. Normal
  runs try the cheap exits first, exactly as before.
- Fixed: YellowPages had started refusing every page with a flat Cloudflare ban,
  so runs came back with no leads at all. The actor now falls through to a US
  residential exit for any page the cheap exits cannot get, and the run says how
  many pages needed it. Nothing changes for you: there is still no proxy setting,
  and platform usage is still included in the price per lead.
- Cheap exits are still tried first on every search, and are retried again a few
  pages later rather than being written off for the rest of the run, so a passing
  block costs a page or two instead of a whole sweep.

### 2026-08-29

- Every run now ends with a status message you can read straight from the run
  list. It used to end with a bare exit, so a wall, an empty search and a
  300-row sweep were the same green line: everything the run knew stayed in the
  log. A finished run now says how many leads came from how many pages across
  how many searches, and names any search that was refused (with the HTTP
  status) or that returned nothing.
- "YellowPages returned no listings for this" is now a claim the run has to
  earn. It is only said after a page the actor actually recognised as a
  search-results page came back empty; a page whose markup no longer carries
  that scaffolding is reported as a possible format change with the HTML saved
  to EMPTY_PAGE_SNAPSHOT, and a refusal is never reported as an empty search.
  Byte count cannot tell those apart — YellowPages' zero-result page is the same
  order of size as a full page of results — so the results container is what
  decides. Wording lives in one pure, unit-tested function (`src/status.js`).

### 2026-07-12

- Invalid input no longer fails the run. The run now finishes cleanly with a clear explanation in its status message, so a typo or an empty list is easy to spot and fix.
- List inputs now accept datasets piped straight from another scraper: entries
  that are objects are read through their usual key names (url/link,
  query/keyword/title, name/company and similar) instead of being rejected.

### 2026-07-11

- Billing: on paid runs every row is billed before it is written, and a run
  now stops visibly if billing fails instead of continuing unbilled.

### 2026-07-10

- Fixed a bug that made the actor treat normal result pages as blocked and return nothing.
- Dropped the US residential proxy for a far cheaper one; platform usage on your bill shrinks accordingly.
- Price cut: $3.00 to $1.50 per 1,000 leads, and platform usage is now included in the price. What you see is the whole bill.

### 2026-07-09

- Initial public release on Apify Store.
- Scrape YellowPages.com business listings by category and location, or from a pasted YellowPages search URL.
- Clean lead records: name, phone, website, street address split into street / city / state / ZIP, categories, star rating, review count, years in business, a review snippet, open status, and the YellowPages page link.
- Searches every category across every location in one run, deduping businesses across pages.
- Drops contentless promo cards with no phone, website or address, and flags sponsored listings with `isAd`, so every result is a usable lead.
- Reads YellowPages result pages directly over HTTP. No browser, no login.
- US residential proxy by default. Pay per business lead returned, platform usage billed to your run, no subscription.
