santifer/career-ops · error · Error
echojobs: this feed is gone — echojobs.io/api/jobs is now be
Error message
echojobs: this feed is gone — echojobs.io/api/jobs is now behind bot protection (HTTP 429, Vercel checkpoint) and the site's robots.txt disallows /api (#2976). This provider is retired, not broken-and-fixable: remove `provider: echojobs` from portals.yml. See docs/SUPPORTED_JOB_BOARDS.md.
What it means
Error "echojobs: this feed is gone — echojobs.io/api/jobs is now behind bot protection (HTTP 429, Vercel checkpoint) and the site's robots.txt disallows /api (#2976). This provider is retired, not broken-and-fixable: remove `provider: echojobs` from portals.yml. See docs/SUPPORTED_JOB_BOARDS.md." thrown in santifer/career-ops.
Source
Thrown at providers/echojobs.mjs:138
// `posted_at` is already epoch milliseconds.
if (Number.isFinite(j.posted_at) && j.posted_at > 0) job.postedAt = j.posted_at;
return job;
}
/** @type {Provider} */
export default {
id: 'echojobs',
detect(entry) {
return entry?.provider === 'echojobs' ? { url: FEED_BASE } : null;
},
async fetch() {
// Deliberately no network call: the feed is confirmed gone (see the file
// header), and career-ops does not work around bot protection. Throwing
// immediately, with a message naming the cause, is what turns "expected
// { jobs: [...] }" into something a user can act on.
throw new Error(RETIRED_MESSAGE);
},
};
View on GitHub (pinned to 1696bec4d0)
When it happens
Trigger: Thrown at providers/echojobs.mjs:138 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- HTTP status errors: handling 4xx and 5xx responses — how to handle 4xx and 5xx responses properly.
AI-assisted analysis of santifer/career-ops@1696bec4d0 (2026-09-01).
Data as JSON: /api/errors/36622fc75c9d8258.
Report an issue: GitHub.