Article
The “100+ applicants” wall: a fresh-job morning routine for LinkedIn
You know the feeling. You find a posting that reads like it was written for you, you spend forty minutes tailoring the cover letter, you hit apply — and right under the button it says "over 100 applicants."
That number is not a verdict on your application, and it does not reveal the employer's review order. It does tell you the pool is crowded. LinkedIn's own historical analysis of 4.5 million posts found that 57% of applications in its sample arrived Monday through Wednesday, but the data covered US and UK posts from 2016–2017 and does not prove that an earlier application is preferred by every employer. Freshness is a practical way to spend time on less-aged opportunities, not a guaranteed ranking advantage.
The real problem: you search on your schedule, jobs post on theirs
Here is the trap almost everyone is in:
- Companies post jobs continuously, all week, all day.
- You search when you have energy — Sunday evening, maybe a lunch break.
- So on any given search, some results have been live for days and may already show a large applicant count.
LinkedIn already offers alerts: its current help page says a search alert can be daily or weekly and delivered by email, app notification, or both. A separate daily sweep becomes useful when you want explicit posting-age windows, one normalized output, or sources beyond LinkedIn—not because the official alert is guaranteed to be late or incomplete.
The fix is not searching harder. It is making freshness a routine: have a source-reported 24-hour window come to you every morning so you review a smaller, newer slice of the market on a repeatable schedule.
The trick: a daily 24-hour sweep, no login needed
Here is the part most people don't know: LinkedIn job postings are public. Anyone can browse them logged out, and behind that logged-out page sits a guest endpoint that can be queried by keyword, location, and — this is the key — posting age.
So the whole trick is one scheduled request that asks for postings matching your search that the source reports as posted in the past 24 hours.
- Run it every morning and keep the result list bounded with the time window and the Actor's item cap.
- Each retained listing is tied to the source-reported freshness window, letting you review it closer to its reported posting time.
- Because it does not automate your logged-in session, it avoids putting account cookies into the collection path. The guest interface is not a documented public API, though: response shapes, caps, or availability can change, and aggressive traffic can still be limited.
We covered the endpoint's mechanics (and its ~200-results-per-query cap, which a 24-hour window neatly sidesteps) in our technical guide to scraping LinkedIn jobs without login. This article is the lazy version: you don't need to build any of it.
Set it up in five minutes
We maintain a ready-made Actor on the Apify Store that reads the public guest endpoint and returns clean JSON. One HTTP call runs it and hands back the postings in the same response:
curl -X POST \
"https://api.apify.com/v2/acts/nomad-agent~linkedin-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"keyword": "product manager fintech",
"location": "Netherlands",
"timeFilter": "r86400",
"includeDescription": true,
"maxItems": 100
}'
The timeFilter of r86400 — LinkedIn's code for "past 24 hours" — is what turns this from "a scraper" into "a morning briefing." Put that command in any scheduler you already have — a cron job, a GitHub Action, an Apify schedule on the Actor itself, even a Shortcuts automation — and set it to fire before your workday starts:
# Every day at 07:30 — yesterday's new postings, ready with your coffee
30 7 * * * /usr/local/bin/fetch-fresh-jobs.sh
Each posting comes back as a flat record — title, company, location, posting date, direct URL, and the full description if you asked for it — so piping it into a Slack message, a Telegram note, an email, or a spreadsheet row is a one-liner in whatever glue you prefer.
Filter by keyword, location, remote and posting age. Schedule it daily and get only the fresh postings. Pay per run on the Apify Store.
Three small refinements that make it actually pleasant
1. One narrow query per thing you want. Don't run one broad search like engineer. Run two or three specific ones — backend engineer golang, platform engineer kubernetes — as separate scheduled calls. Narrow queries in a 24-hour window return short, high-signal lists.
2. Deduplicate on id. Postings occasionally linger across windows or get reposted. Keep a tiny list of seen id values (a text file is fine) and skip repeats, so your morning list only ever contains genuinely new roles.
3. Apply the same morning when the role fits. A same-day application keeps the workflow moving; it does not prove that you are entering a smaller applicant pool or that a recruiter will review you sooner. Treat the morning list like a to-do list, not a newsletter.
What this feels like after a week
Instead of doom-scrolling an unbounded feed each evening, you get a capped list focused on recently reported postings. Triage time depends on your query and item cap. When something fits, you can apply the same day without making assumptions about applicant-pool size or recruiter review order.
And if you would rather not maintain even the cron job, Oink can combine the available source results with your current preferences, rank viable candidates on a 0–5 scale, and send a bounded set of stronger matches. It does not prove that a listing is open or that applying early will change the employer's decision; use the original posting as the final authority. The Telegram alerts guide explains exactly what delivery proves.
Describe the role you want and add a resume where required or useful. Oink searches the public sources available to your run, ranks viable postings 0–5, and delivers explained matches on the web or in Telegram.
Make freshness a routine, not a promise.