DEV Community

Mr Zack
Mr Zack

Posted on

211 US class action settlements are open right now, 155 need no receipt. I scrape and score the whole board in one HTTP request.

Most people find out about a class action settlement the way I used to: a friend forwards a link two days after the claim deadline. The board that lists all of them — ClassAction.org — is public, updates daily, and nobody I know checks it. So I turned it into a dataset.

This morning's run: 211 open settlements, 155 claimable with no proof of purchase, 118 of those pay cash (not vouchers or credits), 43 added recently, 31 closing in the next few days. The top of the board right now is a cluster of data-breach settlements paying $50–$5,000 with no receipt required and 40–56 days left.

Why a scraper and not a bookmark

The board is a wall of cards. Each card has a headline, a dollar range somewhere in the text, a deadline, and a "proof of purchase required?" line buried in the details. Comparing 200 of them by hand is the kind of work that makes you give up after page one — which is exactly why so many settlements end with unclaimed money.

The scraper does three things per card:

  1. Parse the messy bits. Payout text like "Up to $5,000", "$20 - $4,480" or "Varies" becomes payoutMinUsd / payoutMaxUsd (nulls stay null — no fake zeros). Deadlines become deadlineDate + daysLeft + an urgency bucket.
  2. Flag what matters. proofRequired (tri-state — unknown stays null), payoutKind (cash vs non-cash vouchers/credits), and the combination people actually want: isNoProofCash.
  3. Score it. claimScore 0–100 = payout size (log-scaled, 40 pts) + no proof needed (30) + comfortable time window (15) + freshness (15). Sort by it and the "file this tonight" list is the top 20 rows.

Every row also carries the official claim-site URL (not the ClassAction.org page — the actual administrator's site where you file), so the workflow is: run → filter isNoProofCash → click.

The technical part

Nothing exotic. The board is server-rendered HTML — one GET, one parse, ~210 rows, done in a few seconds with no browser and no proxies. The interesting work is in the normalizer:

// payout text → numbers, without inventing data
const m = text.match(/\$([\d,]+)(?:\s*[-–]\s*\$([\d,]+))?/);
const min = m ? Number(m[1].replace(/,/g, '')) : null;
const max = m && m[2] ? Number(m[2].replace(/,/g, '')) : (/up to/i.test(text) ? min : null);
Enter fullscreen mode Exit fullscreen mode

and in the gates I run before every deploy: 13 assertions against the live page (row count within range, ≥60% rows with a parsed payout, no duplicate settlement IDs, daysLeft never negative for open cases, claimScore in [0,100] or null). When ClassAction.org changes its markup — and it will — the gate turns red before a user sees an empty dataset. I learned that lesson the hard way on another Actor that "succeeded" for two days while returning 42 rows instead of 500.

Running it

It's an Apify Actor: Class Action Settlements Scraper | Claim Deadlines & Payouts. Default input {} returns the full board sorted by claimScore. The inputs I actually use:

{ "noProofOnly": true, "cashOnly": true, "sortBy": "claimScore" }
Enter fullscreen mode Exit fullscreen mode

for the weekly "worth filing" list, and

{ "maxDaysLeft": 10, "noProofOnly": true }
Enter fullscreen mode Exit fullscreen mode

on a daily schedule with a Slack/email integration so cash claims closing soon don't slip past. Pay per result — a filtered run is a few cents. It's also MCP-ready if you'd rather have an agent ask "any new no-proof cash settlements this week?" and get a table back.

Honest limitations

  • It reads one board (ClassAction.org). Settlements that never make it there won't appear.
  • "No proof required" is what the settlement says; administrators can still ask for an attestation. Always read the official claim site before filing.
  • This is a data tool, not legal advice.

If you build on it, the changelog and a "found this useful?" section are in the README — a bookmark or a short review on the Store page is what tells me which fields to add next. Issues tab gets answered within 24 hours.

Related Actors from the same series: Bulk Email Verifier, Contact Details Scraper, Microns Startup Listings Scraper.

Top comments (0)