I spent a week assuming my scraper was fine. Then a sanity check told me 0% of Greenhouse postings were older than six months, which is not a thing that happens on a real job board.
The culprit was one field. And it is not exotic β if you have ever scraped a job feed, you have probably made the same mistake.
The mistake is updated_at
Our Greenhouse connector read:
postedAt = row . get ( " updated_at " ) or row . get ( " created_at " )
Enter fullscreen mode
Exit fullscreen mode
That reads fine. It is wrong twice over. First, the Greenhouse board API does not return created_at for a job, so the fallback never fires. Second β and this is the part that matters β updated_at is when a recruiter last touched the requisition , not when the job went live.
Here is what that does to real data. Account Executive, AI Native came back with a recent updated_at . Its actual first_published is 2024-12-20 . A req opened in 2024 and edited yesterday looks one day old.
The fix is one line:
postedAt = ( row .β¦