What JobRadarly Can and Cannot Do, and the Limits You Will Hit

Updated 2026-10-29

Every tool that reads job boards has a boundary, and most of them keep it out of sight. Here is this one's, written down: the three companies it can read, the request ceiling that belongs to the whole server rather than to you, what each error code actually means, and the questions it will refuse to answer.

The limit is shared, and that changes what it means

This is the single fact most visitors would want to know first, and it is the one no other page on this site says plainly. The request ceiling is not per visitor. It belongs to the server process, and every caller spends from the same budget.

One visitor can use up the refresh budget for everyone. Ten board refreshes a minute is the whole server's allowance, not yours. If two other people refresh a moment before you, your attempt is refused even though you personally have made no request at all. The refusal is honest about this: the body says the limit applies to the whole server, not one caller, and the Retry-After header carries the number of seconds to wait.

The reason is not stinginess. The ceiling exists to protect the three boards this site reads, and it deliberately does not key on an IP address or any request header. Behind a reverse proxy those values are supplied by the caller unless a trusted proxy overwrote them, so keying the limit on them would let anyone escape simply by rotating the value. A limit that the limited party can rewrite is not a limit.

The ceilings, in one table

WhatCeilingWhose budget
Board refreshes10 per minuteThe whole server
Single-posting reads60 per minuteThe whole server
AI fit reviews6 per minuteThe whole server
AI reviews running at once3The whole server

The fourth row is a different kind of bound and it is the one people miss. A rate limit caps how many operations start in a window; it says nothing about how many are open at the same time. Six calls admitted in the first millisecond each hold a provider connection at once, so a rate limit alone would not bound the simultaneous work. A separate gate does, and when it is full the request is refused before any source read or provider call begins.

A cached read does not count against any of these. The refresh limit is taken once per attempt that can actually go out to a board, so browsing within the ten-minute cache window is free and never refused.

Three companies, and no way to add a fourth

JobRadarly reads Figma, GitLab and Robinhood, from their own boards on Greenhouse. That is the entire reachable set. There is no parameter for a company, a board token or a URL, and the request path is assembled from a constant in the source rather than from anything a visitor sends.

This is a deliberate refusal to be useful in a particular way. Supporting any company would mean accepting a board name from the caller, and a route that fetches whatever host a stranger names — from inside the server, under the site's own address — is an open proxy with a job-board interface. Three named boards is the price of not being that.

Those counts move, because they are postings rather than constants. At the last check the three boards carried roughly 154, 223 and 154 postings respectively; a number quoted in a document would be wrong within a week, which is why no test asserts one.

What each answer actually means

The live job API separates facts that are easy to collapse into one message, and the separation is the useful part. A posting the source has stopped advertising and an address that was never a posting at all are not the same problem and do not have the same remedy. Reporting the first as the second tells a reader their link is broken when it is not.

On a single posting

StatusReasonWhat it means
404not-oursThe id does not name a posting on the three whitelisted boards. Nothing was fetched.
404not-listedA whitelisted board answered, and this posting is no longer in its list. It left the list; that is all it means.
404unreadableThe board answered with something that is not a usable posting at all.
502—The board did not answer, so we do not know either way. This is a different fact from a 404 and is deliberately a different status.
429—The shared admission budget is full. See the Retry-After header.
None of these is ever reported as the role having been filled. A posting leaving a list is not evidence of anything except that it left the list, and saying otherwise would be inventing a fact about a company.

On a whole board

The asymmetry with the single-posting case is intentional. A 404 on one posting is an answer about that posting. A 404 on a whole board is a failure, because an unreachable board tells you nothing about whether a company has open roles, and reading it as zero postings would be inventing an empty list.

The same rule covers a subtler case: a board that answers 200 with a body that is not a board at all — a maintenance notice, a bare list, a null where the postings belong. That is a failed read, not a board advertising nothing, and it leaves the previous postings exactly where they were. Before that distinction existed, a maintenance page could make the page show fewer jobs than a moment earlier, dressed up as freshly read.

Every way the AI review can fail, and who is responsible

A paid feature that fails owes the person who paid an explanation, so the AI route does not have one generic error. It has twelve distinct reasons, each mapped to its own status code and its own sentence. The table below is the whole set.

ReasonHTTPWhose sideRetry?What happened
not-configured503OperatorsnoNo server-side AI key is set, so the feature is off. Nothing was sent anywhere.
model-mismatch503OperatorsnoThe configured model id is not the exact one this build supports. Nothing was sent.
unauthenticated401Youyes, after signing inThe signed-in identity could not be verified on the server. There is no demo exemption: a paid call needs a verified session.
forbidden403YounoThe request did not come from this site's own origin. This is a CSRF check, not authentication.
throttled429The serveryes, in a minuteSix reviews a minute for the whole process, and three running at once. When the gate is full no source read and no provider call begins, and the points you reserved are returned in full.
timeout502The provideryesThe provider did not answer within 25 seconds. Nothing was saved and nothing was charged.
provider-error502The provideryes, laterThe provider answered with an error, such as a 429 or a 5xx. Nothing was charged.
malformed502The provideryesThe reply was not the agreed JSON, so it was discarded rather than half-read. Nothing was charged.
invalid-request400YounoThe body was over 64 KB, was not JSON, or the job ids were empty, over 200 characters or more than ten of them. Duplicate ids are collapsed, so repeating an id cannot widen the batch.
insufficient-points402Youyes, after buying pointsThe reservation failed, so the provider was never contacted. The message states the exact shortfall rather than a generic failure.
no-known-jobs400YounoNone of the ids you sent is a job this server knows. Details are not invented for an id the source does not have.
source-unavailable502The boardsyesThe postings could not be read from their sources, so there was no description to review. A job with an empty description is never sent to the model.

Two things in that table are worth calling out because they are where most products quietly lie. First, throttled returns the points reserved for the request in full, because no analysis was attempted. Second, a failure after the provider was reached also returns the reservation in full, because nothing was delivered. The charge is what came back, not what was asked for.

And a review that concludes not a fit does cost a point. That is not a loophole in the refund rule; the work was done, and it is evidenced, which is exactly what was bought. What costs nothing is an answer that never arrived.

Five things this site will never tell you

Boundaries are more useful when they are named than when they are merely absent. These five are the ones a reader is most likely to assume exist.

  • A salary number the posting did not state. The only salary evidence a live record may use is the pay range the board itself supplies. Nothing is estimated, averaged or filled in from a similar role.
  • A list of every company that is hiring. Three boards are read, named in a constant. The reachable set is a line of code somebody can read, not something a request can widen.
  • A sponsorship verdict. The site shows which roles survived your filters and why each one survived. Whether an employer has a sponsorship record is public and you check it yourself.
  • A match score out of a hundred. The AI returns one of four labels with excerpts, never a number. An invented number is not a measurement.
  • A guarantee that a posting is still open. A posting leaving a board's list is evidence that it left the list, and nothing else. The page never says a role was filled, because that cannot be known.
The most useful of those five is the last one. A job board showing a posting it has outlived is a specific, common failure: the timestamp keeps getting refreshed by the page while the data behind it does not. That is why every cached response on this site carries no-store, and why a stale list keeps the time it was actually fetched instead of borrowing the current one.

What is kept where

There is no database behind the job list and no queue and no timer. The cache is a map inside one running server process. That is the whole persistence story, and it has two consequences worth stating rather than hiding: a restart forgets when each posting was first observed, and a second server process would have its own separate view.

Your profile, your saved jobs and your application tracker are not on the server at all — they stay in your own browser. What does live on the server is your points balance and any analysis you paid for, so that re-reading it is free and survives a cleared browser. That split is why buying points requires a signed-in account while browsing does not.

How a bad day at one board is handled

1
Sources fail separately.One board failing never removes the postings the other two returned.
2
A failure never overwrites good data.The previous postings stay, carrying the time they were actually fetched, and are labelled as older than this attempt.
3
Zero and silence stay different.A board with no open roles is a fact with a count of zero. A board that did not answer is a failure. They are not the same answer.
4
Total failure is an error, never an empty list.A refresh where nothing could be shown returns an error with a retry, not a result dressed up as no jobs found.

Each board gets fifteen seconds before the request is abandoned. Within the ten-minute cache window no request goes out at all; past it, the next read does. A click that arrives while a refresh is already running joins that refresh instead of starting a second one, so an impatient double-click cannot become a burst.

Frequently asked questions

How many requests can I make?

Ten board refreshes per minute and sixty single-posting reads per minute. Both ceilings belong to the whole server process, not to you, so another visitor's traffic counts against the same budget. Normal browsing never comes close: a page load is one refresh and a few detail reads, and a cached read does not count at all.

Which companies can JobRadarly show jobs from?

Three, and only three: Figma, GitLab and Robinhood, read from their own boards on Greenhouse. There is no parameter for adding a company. Support for any company would mean accepting a board name from the caller, and a route that fetches whatever host a stranger names is an open proxy.

Why is the request limit shared instead of per user?

Because the limit exists to protect the three boards we read, not to meter individual visitors, and the server cannot trust a caller-supplied IP header. A forwarded header is client-controlled unless a trusted proxy overwrote it, so keying the limit on it would let anyone escape by rotating the value.

What does 404 mean on a job page?

That the source answered and the posting is not in its list any more. It is an answer, not a failure. The response also carries a reason: not-ours for an address that was never a posting on the whitelist, not-listed for one the source has stopped advertising, and unreadable for a reply that was not a posting at all. None of these means the role was filled.

What does 502 mean on a job page?

That the source did not answer, so we do not know whether the posting is still live. This is deliberately a different status from 404, because the two are different facts and only one of them is about the posting.

How long is a job list reused before it is read again?

Ten minutes. Within that window the page answers from memory and does not touch the boards at all. Past it, the next read goes out. Cached reads are cheap and are never refused by the refresh limit, which is the point of the split: the limit bounds outbound work, not reading.

What happens when one of the three boards is down?

The other two still answer, and their postings still show. The failing board's previous postings stay on the page carrying the time they were actually fetched, marked as older than this attempt. Nothing re-dates an old list as a fresh one.

Can JobRadarly tell me whether a company will sponsor me?

No, and no tool can. It reads the companies' own boards and shows which roles survived your filters, with a reason for each. Sponsorship history lives in public filing data and you check it yourself. Any tool that implies otherwise is selling certainty it does not have.

How many jobs can I analyse with AI at once?

Ten per request, and you pay only for the analyses that come back. A job with no description, an analysis the provider never answered, and an answer that failed validation all cost nothing. An analysis concluding not a fit still costs one point, because the work was done and it is evidenced.

Does the AI return a match score or a percentage?

No. There is no numeric score, percentage or confidence field anywhere in the review, deliberately. A number invented by a language model is not a measurement. You get one of four labels, plus strengths, gaps and unknowns, each backed by an excerpt that must appear in the posting text.

What is the daily short list based on?

Your own constraints, applied to what the boards currently advertise. The result is sometimes three jobs and sometimes zero, and zero is a real answer rather than an error. A search page returning four hundred results is doing its job as a search engine and failing you as a decision tool.

Do saved jobs and my profile live on your server?

No. Your profile, saved jobs and application tracker stay in your own browser. What lives on the server is your points balance and any paid analysis you bought, so that re-reading it is free and survives a cleared browser.

See a short list instead of a search page

JobRadarly reads three companies' own job boards and shows you the few roles that match your constraints, with the reason each one fits.

Try JobRadarly