A job board's staleness problem isn't missing listings — it's listings that look current and aren't. A posting from three weeks ago that's already filled, still sitting in search results with no expiry flag, costs more than an empty response would: you build an outreach list, a sourcing pipeline, or a hiring-demand dashboard around a data point that was already dead when you pulled it.
If you're an agent (or building one) reading this rather than a human, the full machine-readable schema for every endpoint below lives at mindcase.co/skills.md.
What does "freshness" actually mean for job data?
Not a timestamp on its own — a timestamp only tells you when a listing was created, not whether it's still open. The real test is operational: can you constrain a pull to a specific posting window before you fetch, and once you have the row, is there any signal on it that tells you whether the role is still live? Indeed Jobs, Naukri Jobs, and Upwork Jobs answer that differently enough that the choice matters for anything built on top of them.
Which of these lets you filter by posting window directly?
Two of the three do, and one doesn't.
Naukri has the most granular control. Its freshness parameter takes
a direct day count — 1, 3, 7, 15, 30, or all — so a pull for
roles posted in the last 24 hours is one input, not a post-fetch filter
you write yourself.
Indeed does it with a rolling window instead of fixed tiers. fromDays
takes any integer, so fromDays: 3 returns only jobs posted in the last
three days — finer-grained than Naukri's fixed steps, but you're choosing
the number yourself rather than picking from a documented set.
Upwork has no posting-window filter at all. sortBy only takes
relevance or newest — an ordering, not a cutoff. There's no input that
excludes anything older than N days; you'd have to pull results, read
each row's posted field, and discard the ones outside your window
yourself.
How do you actually pull a tight posting-window search?
How do you pull only recently-posted Naukri listings?
Say you're running a daily digest for a staffing agency and only want roles that went live since yesterday:
curl -X POST "https://api.mindcase.co/v1/data/naukri/job/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"inputs": "software engineer",
"cities": ["Bangalore"],
"freshness": "1",
"sortBy": "date",
"maxResults": 100
}
}'
# $0.002 per job returnedSetting freshness and sortBy together does two things at once: it
excludes anything older than the window, and it orders what's left by
posting date instead of Naukri's relevance ranking — so the newest listing
in your result set is also the first row.
What does the same pull look like on Indeed?
curl -X POST "https://api.mindcase.co/v1/data/indeed/jobs/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"keyword": "warehouse associate",
"location": "Houston, TX",
"fromDays": 1,
"sort": "date",
"maxItems": 100
}
}'
# $0.00005 per job returnedSame shape, different mechanism: fromDays is a window you set yourself
rather than a documented tier. fromDays: 1 and Naukri's freshness: "1"
answer the same question — "what opened in the last day" — through two
different input designs.
Why doesn't Upwork give you a posting-window filter?
Because a posting window isn't the freshness risk that matters most on a gig marketplace. A Naukri or Indeed listing sits open for weeks; an Upwork job post can draw dozens of proposals within hours and close before a day-old cutoff would even catch it. Age alone tells you less than activity does.
That's what Upwork's row gives you instead: applicants, interviewing,
invitesSent, unansweredInvites, and hired on every listing. A post
from six hours ago with hired: true is dead data no matter how it sorts
under newest. A post from three days ago with hired: false and low
applicants is a real open lead. Indeed and Naukri don't return anything
equivalent — no field on either endpoint tells you whether a role has
already been filled, only when it was posted.
The practical split: Naukri and Indeed let you shrink the risk window before you fetch. Upwork doesn't shrink the window, but it hands you the one signal that actually catches a stale listing regardless of age.
What can't you get from Mindcase?
Two cases.
Neither Indeed nor Naukri tells you when a listing closes. fromDays
and freshness filter on posting date, not expiry — a role that's been
live and unfilled for three weeks passes the same sort=date check as
one posted an hour ago, once both are outside the tight window. There's
no filledAt or closedAt field on either endpoint to catch that gap.
Upwork's activity fields are a point-in-time read, not a stream.
applicants and hired reflect the state of the listing at the moment
you called the endpoint. A job that's open now can be filled an hour
later, and the only way to catch that is to re-poll — there's no webhook
or push notification on any of the three endpoints.
Which endpoint should you use for which job?
| Endpoint | Freshness control | Price | Best for |
|---|---|---|---|
| Naukri Jobs | freshness tiers (1/3/7/15/30/all) | $0.002 / job | India hiring pulls where a tight, documented posting window matters |
| Indeed Jobs | fromDays (any integer) | $0.00005 / job | Broad market sweeps where you need a custom, finer-grained window |
| Upwork Jobs | None — applicants/hired on each row instead | $0.003 / job | Gig listings where "still open" matters more than "recently posted" |
FAQ
Naukri and Indeed both let you filter to jobs posted within a specific number of days before you fetch — Naukri with fixed tiers (1, 3, 7, 15, 30 days), Indeed with any integer via fromDays. Upwork has no equivalent input.
Yes, every row includes a posted field, and sortBy can be set to newest. What's missing is a filter that excludes anything older than a chosen cutoff — you'd have to read posted yourself and discard rows outside your window.
Check the hired field on the row, alongside applicants, interviewing, invitesSent, and unansweredInvites. None of these exist on Indeed or Naukri.
No. Neither endpoint returns a field for that. A listing that's been open and unfilled for weeks looks the same as a fresh one once both fall inside your posting-date filter.
Indeed is $0.00005 per job, Naukri is $0.002 per job, and Upwork is $0.003 per job — a 60x spread between the cheapest and most expensive of the three.
