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


AI-assisted analysis of santifer/career-ops@1696bec4d0 (2026-09-01). Data as JSON: /api/errors/36622fc75c9d8258. Report an issue: GitHub.