PERM Tracker
Live DOL data · Automatic deadlines
Skip to main content
Explainers

How PERM wage data gets published

DOL publishes the wage on decided PERM cases in quarterly files. What the offered wage is, why it's a floor set by the process, and what it leaves out.

PERM Tracker team 7 min read
Software developers on permtracker.app: median certified wage, filings and the wage ladder year by year
Screenshot of permtracker.app, October 15, 2026

Every wage figure on this site comes from the same place: a spreadsheet the Department of Labor publishes four times a year. It's worth knowing what's in that file before you use it to judge an offer, because the number it carries is narrower than "what the job pays". PERM Tracker's wages page shows the full spread of those wages for each occupation, by state and year.

Where the wage numbers come from

When DOL finishes a PERM case, that case joins a quarterly disclosure file. One row per case, with the employer, the job title, the worksite state, the occupation code DOL assigned, the filing and decision dates, the outcome, the law firm, and the wage. The newest is PERM_Disclosure_Data_FY2026_Q3.xlsx, covering decisions through 30 June 2026.

Two things about those files trip people up.

The first is that a file covers the cases decided in its window, whenever they were filed. A case filed in July 2024 and decided in August 2025 sits in the FY2025 file and is absent from FY2026. Read one file on its own and you see an old cohort's slow tail next to a new one's fast head, and both look like the middle. The figures here run over four files, unioned and de-duplicated by case number: 373,939 unique cases decided from October 2023 through June 2026. DOL also changed the ETA-9089 form mid-way through FY2024 and published two files for that quarter, one per form generation, so even the file list has a seam in it.

The second is that no pending case is in them at all. Every row has a decision date. DOL's case status system says where an undecided case stands instead. The case lookup reads it daily, and it does answer for pending cases.

One occupation's page, built from the wages on certified cases in DOL's files. Screenshot of permtracker.app, October 15, 2026

Is the offered wage the same as the prevailing wage?

No. The file carries both, in separate columns, and they mean different things.

Prevailing wage Offered wage
Who sets it DOL, from a wage survey the employer, on the ETA-9089
What it means the minimum for that occupation and area what the employer committed to pay
Where it starts a separate ETA-9141 request, decided first the PERM application itself
Its relation to the other the floor at or above the floor, never below

The prevailing wage comes first. Before an employer can file, it asks DOL what the job pays in that area, and DOL answers with a determination. How DOL sets a prevailing wage covers that machinery in detail. The PERM application then states an offered wage, and it has to meet or beat the determination.

The wage figures on the data pages are the offered wage, because that's the commitment the employer made. The determinations themselves are held separately, about 634,600 of them, so a P- number looked up at the case lookup shows the figure DOL actually set for that job.

A decided wage request looked up by its P- number. The wage DOL set reaches its quarterly file a few months later, and it never appears on the PERM row. Screenshot of permtracker.app, October 15, 2026

Why is the PERM wage a floor?

A salary survey asks a sample of employers what they pay and reports the spread. A PERM wage is produced by a rule instead. It can't go below a government determination, and an employer has a reason not to go far above one, because the offered wage is an enforceable promise for as long as the sponsorship runs. So the distribution is shaped by its floor and sits closer to it than a market would.

Two selection effects sit on top of that. Only sponsored jobs are in the file, which isn't a random sample of anything. And the wage pages default to certified cases only, because a denied case's offered wage is a number nobody ever agreed to.

What the wage figure leaves out

The file has one wage column, with one figure and one unit of pay. There's no column for a bonus, equity, overtime or a shift differential. A software role listed at $139,000 might carry a large stock grant on top, and the file has no idea. Treat every figure here as base pay.

A few processing rules also apply before anything is compared:

  • Hourly, weekly and monthly rates are annualised through their stated unit of pay.
  • Values outside $15,000 to $1,000,000 are dropped as data-entry artefacts, most often an hourly rate typed into an annual field.
  • Thin selections are withheld rather than shown. Under 30 cases you get nothing, because a single filing moves a median by thousands. Between 30 and 100 the middle is shown and the tails aren't.
A job with 87 filings gets its median and its place in the field, and the page says plainly when a rate is too thin to set it apart. Screenshot of permtracker.app, October 15, 2026

How current is it

The two systems run on different clocks, so it's worth keeping them apart.

Quarterly disclosure files DOL case status
Refreshed quarterly, when DOL publishes daily
Covers decided cases only decided and pending
Carries the wage yes no

So a case decided last week shows up in the lookup within a day, and its wage doesn't reach the aggregate pages until the next quarterly file lands. We can't shorten that lag, because it's how DOL releases the data.

What this can't tell you

  • Total compensation. Bonus, equity, overtime and anything variable are absent. A wage here is base pay and a floor.
  • What anyone was actually paid. The file records what the employer committed to at filing. It doesn't record payroll.
  • Whether a wage was generous for the role. It's anchored to a government determination, and that determination isn't on the PERM row. Only the P- lookup shows it.
  • Anything about a pending case. Every row in these files has a decision date.
  • Why DOL assigned the occupation code it did. The code drives the wage, and DOL doesn't publish its reasoning.
  • Whether the job still exists. A certified PERM is a step in a process. It doesn't prove anyone was hired.

How we write and check our guides. Spotted an error? Tell us; every fix is dated in the corrections log.

Share

Waiting on a PERM case?

  • When it'll likely be decided
  • An email when DOL moves it

It's on your ETA-9089 receipt.

Don't have the number? Find a case by employer name.

File PERM cases for clients or your company? See the free deadline tracker.