# Changelog of FMCSA New Carrier Leads 🚚 (fresh trucking authority feed) (`tagadanar/fmcsa-carrier-leads`) Actor

- **URL**: https://apify.com/tagadanar/fmcsa-carrier-leads/changelog.md
- **Full Actor documentation**: https://apify.com/tagadanar/fmcsa-carrier-leads.md

## Changelog

### 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 "FMCSA has registered no new
  carriers in your window", "your filters dropped all 4,213 of them" and
  "monitor mode has already reported every one" were the same blank green line.
  Each is now its own sentence, and every one of them carries the number of
  carrier records actually fetched and the date window that was asked for —
  including the reminder that FMCSA's census file lags two to three days, which
  is why a one-day window is routinely empty.
- A monitor run that seeds its baseline says so explicitly ("nothing is reported
  or charged on a first run by design") rather than looking like a quiet day.
- The wording lives in one pure, unit-tested function (`src/status.js`).
- README pricing table now names the charge events and states the Store discount
  tiers; added a Related actors section.

### 2026-08-19

- The User-Agent contact is now the actor's own Apify URL instead of an email
  address. Same identification, same reachability (the actor page's Issues tab),
  no published mailbox.

### 2026-07-17

- Initial build.
- Watch new US trucking-carrier registrations on the official FMCSA Company Census File (Socrata SODA API), keyless, no login.
- Filter by look-back window, physical-address state, for-hire status, minimum/maximum power units, and require-an-email toggle.
- Flat schema per lead: legal/DBA name, physical address, phone, email, classification, carrier operation, power units, driver count, registration date (raw and ISO), and a ready-to-click SAFER lookup link.
- Monitor mode: persistent seen-set keyed by DOT number returns only newly registered carriers since the last run, with a Slack-compatible webhook digest.
- Input is tolerant of common shapes for the states list (a bare string / bare object / delimited string is coerced into a list); anything that is not a clean 2-letter state code is dropped rather than passed through. Bad input (e.g. a minimum power-unit filter above the maximum) ends the run successfully with a clear status message instead of failing it.
