# Changelog of Europages B2B Supplier Scraper 🏭 (phone, email, address) (`tagadanar/europages-scraper`) Actor

- **URL**: https://apify.com/tagadanar/europages-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/tagadanar/europages-scraper.md

## Changelog

### 2026-10-01

- Runs are gentler on Europages: at most 5 requests to Europages are in flight
  at once, started at least 150 ms apart, instead of up to 20 at once. A burst
  from one address trips Europages' anti-bot protection (30 Sep: a depth run lost
  24 company profiles and a listing page in about 14 seconds). Visits to
  companies' own websites for email enrichment still use full concurrency.
  Blocked-request back-off (5/15/30/60 s) is unchanged.
- On the Apify platform, requests to Europages now go through Apify's datacenter
  proxy (no extra charge) instead of the container's single address. When
  Europages' anti-bot protection challenges a request, that proxy session is
  retired so the retry leaves from a different address and waits 2-10 s instead
  of 5-60 s (the long waits only made sense for the same flagged address). Each
  address is also used for at most 25 requests. Visits to companies' own
  websites for email enrichment still go direct. If the proxy cannot be set up
  the run logs an error and continues without it; local runs are unchanged.
- Runs now start direct, which is several times faster for small runs (the
  datacenter proxy costs ~7-9 s per request vs ~1.4 s direct). The run switches
  to the proxy for the rest of the run at the first anti-bot challenge, or
  after 45 direct requests (Europages flagged a direct address after ~55), and
  never switches back. The switch and the direct/proxied request counts are logged.

### 2026-09-30

- Every run now ends with a status line saying what was delivered (companies,
  emails, your limit) or exactly why nothing was: a URL that is not a category
  listing, your own filters, or pages Europages would not serve. Until now the
  Store showed "Starting the crawler." on every run.
- When Europages' anti-bot protection refuses the run, the status now says so
  plainly ("Europages' anti-bot wall answered this run with a challenge page
  … please retry in a few minutes") instead of a generic "never served a page".
  Blocked requests now wait (5 s, 15 s, 30 s, 60 s) before each retry, rather
  than spending all their retries in about a second while the block lasts.
- Anti-bot detection is more precise: it now looks for the actual challenge
  page, not for the word "captcha" (which every normal Europages page contains).
- A start URL that does not exist on Europages (HTTP 404) is now reported as
  exactly that — "Europages has no page at <url> (HTTP 404)" — with how to get
  a working URL. Note that an unknown category name is not a 404: Europages
  treats it as a search and returns whatever matches.
- Fixed: a company profile that no longer exists (the listing still links it)
  could be read as a company named "Oops!" and delivered — and charged — as a
  row.
  Deleted profiles are now skipped, not charged, and counted in the status.
- Fixed: a run could deliver (and charge) one or two companies more than your
  "Max results" limit when several profiles finished at the same moment.

### 2026-09-14

- Price is now $3 per 1,000 companies and $3 per 1,000 email hits, with a
  $0.005 run start fee (in effect since September 2). Platform usage stays
  included in the price.

### 2026-08-07

- Pasting the URL from Europages' own search box (`/en/search?q=…`) or a
  `europages.com` address no longer returns an empty result set. Both are now
  read as the category they point at, and search-box URLs follow pagination
  instead of stopping after the first 30 companies.
- A starting URL that is not a category listing now says so in the run log,
  instead of the run finishing quietly with no results and no explanation.
- Runs restricted to certain countries are far faster: companies from other
  countries are now skipped straight from the listing instead of being opened
  first and discarded. Same results, a fraction of the work.

### 2026-08-05

- Companies whose listing publishes a multi-line street address, or more than
  one address or trading name, no longer come back blank or drop out of the
  results entirely.
- Latitude and longitude are now always returned as numbers. Listings that
  publish them as text used to lose their coordinates.

### 2026-07-13

- README: pricing table now discloses the $0.001 actor-start fee, which the 07-12 floor raise added but the copy never mentioned.

### 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-09

- Input is now tolerant of common shapes that previously failed the run: a bare
  string / bare object / delimited string for searchUrls is coerced into a list
  instead of erroring. Empty input still errors.

### 2026-07-06

- Initial public release on Apify Store.
- Company name, phone, website, address, geo, employee count, founding year, VAT ID and keywords.
- Email enrichment: real addresses found on each company's own website.
- Whole-category crawl from a single URL — every page followed automatically.
