# H-1B LCA Sponsor Employers: Filings, Wages, Job Titles (`transparent_meteorite/h1b-lca-sponsor-employers`) Actor

Rank US employers by H-1B sponsorship from the free Department of Labor LCA disclosure data: filings, certifications, top job titles, median offered wage vs prevailing wage, worksites and a sponsor score. Company level only, no login.

- **URL**: https://apify.com/transparent_meteorite/h1b-lca-sponsor-employers.md
- **Developed by:** [Detroit Web Agent - Open Data](https://apify.com/transparent_meteorite) (community)
- **Categories:** Jobs, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 employer rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## H-1B LCA Sponsor Employers: Filings, Wages, Job Titles

**H-1B sponsor employers** ranked from the free Department of Labor LCA disclosure data: filings, certifications, top job titles, median offered wage versus prevailing wage, worksites and a sponsor score, one row per employer.

Find out which US employers file the most H-1B Labor Condition Applications (LCAs), how often they are certified, what job titles they hire for, what wage they offer compared with the prevailing wage, and where the workers will be based. Data comes from the free public LCA disclosure workbook published by the US Department of Labor, Office of Foreign Labor Certification (OFLC). Every row is one employer. No worker names, no contact people, no attorney details, no login, no proxy.

### What is H-1B LCA Sponsor Employers: Filings, Wages, Job Titles?

Rank US employers by H-1B sponsorship from the free Department of Labor LCA disclosure data: filings, certifications, top job titles, median offered wage vs prevailing wage, worksites and a sponsor score. Company level only, no login. Run it from the Apify Console, the API or a schedule, and export the results as JSON, CSV, Excel or HTML.

### Why use it

- **Official source.** Data is the Department of Labor LCA disclosure file, not a guess from job ads.
- **Company level.** Hundreds of thousands of filings rolled into one readable row per employer.
- **Repeatable.** Same filters and score each quarter, so runs can be compared over time.

### Output

One row per employer:

| Field | Meaning |
|---|---|
| `employerName`, `employerCity`, `employerState`, `naicsCode` | The employer, its address state and its industry code. |
| `fiscalYear`, `quarter` | The federal fiscal year and quarter of the source file. |
| `filingsCount`, `certifiedCount`, `deniedCount`, `withdrawnCount` | Filings by outcome. Certified includes certified then withdrawn. |
| `certificationRatePct` | Certified divided by certified plus denied. |
| `totalWorkerPositions` | Worker positions requested across the filings. |
| `topJobTitles` | The five most common job titles with counts. |
| `medianOfferedWageUsd`, `offeredWageLowUsd`, `offeredWageHighUsd` | Median, 10th and 90th percentile of the offered wage, converted to a yearly amount. |
| `medianPrevailingWageUsd`, `wageVsPrevailingPct` | Median prevailing wage and how far the median offer sits above it. |
| `topWorksiteStates`, `topWorksiteCities` | Where the work will be done, with counts. |
| `h1bDependent`, `willfulViolator` | Flags the employer reported on its filings. |
| `lastDecisionDate` | Latest decision date in the quarter. |
| `sponsorScore`, `sponsorTier` | 0 to 100 score and high, medium or low. |
| `sourceFile`, `sourceUrl`, `scrapedAt` | Which Department of Labor file was read and when. |

### Sample output

```json
{
  "employerName": "Amazon.com Services LLC",
  "employerState": "WA",
  "fiscalYear": 2025,
  "quarter": 4,
  "filingsCount": 2793,
  "certifiedCount": 2784,
  "certificationRatePct": 100,
  "topJobTitles": ["Software Dev Engineer Ii (279)", "Software Development Engineer Ii (250)"],
  "medianOfferedWageUsd": 170100,
  "medianPrevailingWageUsd": 139506,
  "wageVsPrevailingPct": 21.9,
  "topWorksiteStates": ["WA (1472)", "CA (504)", "TX (270)"],
  "sponsorScore": 96,
  "sponsorTier": "high"
}
```

### Input

| Field | What it does |
|---|---|
| `employerNameContains` | Optional text that must appear in the employer name. |
| `employerStates` | Optional two-letter states of the employer address, for example `MI`, `TX`. |
| `worksiteStates` | Optional two-letter states. Keep filings whose worksite is in these states. |
| `jobTitleKeyword` | Optional word in the job title or occupation. Counts and wages then cover only matching filings. |
| `minFilings` | Keep employers with at least this many filings. Default 5. |
| `minSponsorScore` | Optional 0 to 100 threshold. |
| `fiscalYear`, `quarter` | Optional. Leave empty for the newest available quarter. |
| `sourceUrl` | Optional advanced setting: a direct https link to a DOL LCA disclosure `.xlsx` file. |
| `maxItems` | Stop after this many employers, highest score first. Default 100. |

Sample input:

```json
{
  "employerStates": ["MI"],
  "jobTitleKeyword": "software",
  "minFilings": 10,
  "maxItems": 200
}
```

### Pricing

Pay per event. You pay a small fixed amount per employer row delivered, listed on the Pricing tab, plus a tiny start fee per run. You can set a maximum cost per run in the run options.

### What does this Actor do?

It finds the newest quarterly LCA disclosure file on the Department of Labor site, downloads it, streams through roughly half a million filings without loading the whole file into memory, keeps the H-1B filings that match your filters and rolls them up per employer. Each employer gets filing counts, certification counts, top job titles, wage statistics, top worksite states and cities and a simple sponsor score. Results are sorted with the highest score first.

An LCA is the first step an employer takes before an H-1B petition. A filing shows intent to hire, not an approved visa, and one filing can cover several worker positions. The Actor reports what the Department of Labor publishes and nothing more.

**Run in 30 seconds**

1. Open the Actor and press **Try for free** (a free Apify account is enough).
2. Keep the prefilled input (employers with at least 5 filings, first 100 rows) and press **Start**. A run takes a minute or two because the source file is large.
3. Open the **Output** tab. Use the table view or download CSV, Excel or JSON.

### Use cases

- Job seekers who need sponsorship: build a target list of employers that file often, get certified and offer wages above the prevailing wage for your job title.
- Recruiters and staffing teams: find companies that actively hire foreign talent in your state or occupation.
- Immigration law and HR advisers: benchmark an employer's filing volume, certification rate and offered wages against peers.
- Researchers and journalists: study sponsorship by industry, state or job title with a clean, repeatable table.
- Feed rows into an n8n, Make or Zapier workflow that alerts you when a new quarter is published.

### Sponsor score

A fixed rule of thumb, not an official rating: up to 40 points for filing volume on a log scale (2,000 filings earns the full 40), up to 30 for the share of filings certified, up to 15 for how far the median offered wage is above the prevailing wage (30 percent or more earns the full 15, and 7 if the wage is unknown), and 15 for no willful violation flag. Capped at 100. The same input always gives the same score. Tiers: 70 and up high, 45 to 69 medium, below 45 low.

### Limits

- One quarterly file per run, not a multi-year history.
- The Department of Labor server sometimes refuses cloud servers. In that case the Actor reads the Internet Archive copy of the very same DOL file, and `sourceUrl` in every row shows which link was used.
- Employers are grouped by their federal tax ID when listed, otherwise by cleaned name, so a company with several legal entities appears as several rows.
- Wages are converted to yearly amounts (hourly times 2,080) and values outside a plausible range are ignored.
- The source file is large, so a run takes a minute or two and needs 2 GB of memory.
- Worker, contact, attorney and preparer details in the source file are not read or output.

### Related Actors

- [Developer Signals](https://apify.com/transparent_meteorite/developer-signals) tracks public developer activity signals for companies.
- [Website Tech Stack](https://apify.com/transparent_meteorite/website-tech-stack) detects which technologies a website runs on.
- [Sitemap Link Inventory](https://apify.com/transparent_meteorite/sitemap-link-inventory) lists every URL a site publishes in its sitemaps.

Found a bug or need a field? Open an issue on the Issues tab with the run URL.

### FAQ

**How fresh is the data?**
The Department of Labor publishes one file per fiscal quarter, usually a few weeks after the quarter closes. The Actor uses the newest file it can download and writes its name into every row.

**Does a filing mean the person was hired or got the visa?**
No. An LCA is a pre-filing step. Many certified LCAs never become petitions, and a cap lottery decides most new H-1B petitions.

**Why do I get fewer rows than maxItems?**
Only employers that match your filters and the minimum filings exist in the quarter. Lower the minimum or remove a filter.

**Is this an official Department of Labor product?**
No. It is an independent tool that reads public data. Check the Department of Labor site for the authoritative files.

**This Actor vs jungle_synthesizer/dol-h1b-lca-crawler:** that one covers more programs, including PERM, H-2A and H-2B. Choose this one for H-1B employers ranked at company level, with certification counts, top job titles, wage versus prevailing wage and a sponsor score.

### Changelog

- 2026-10-25: Documentation updated: README refreshed.
- 2026-10-25: Initial release.
- 2026-10-25: Listing refresh: new Store icon, README reorganised (overview, data fields, pricing, FAQ) and changelog tab added. No code change.

# Changelog

This Actor's version history is a separate document: https://apify.com/transparent_meteorite/h1b-lca-sponsor-employers/changelog.md

# Actor input Schema

## `employerNameContains` (type: `string`):

Optional text that must appear in the employer name, for example "google" or "consulting".

## `employerStates` (type: `array`):

Optional two-letter state codes of the employer's headquarters address, for example MI, TX. Leave empty for all states.

## `worksiteStates` (type: `array`):

Optional two-letter state codes. Keep only filings whose worksite is in these states.

## `jobTitleKeyword` (type: `string`):

Optional word in the job title or occupation, for example "data scientist". Counts and wages then cover only matching filings.

## `minFilings` (type: `integer`):

Keep employers with at least this many filings in the quarter.

## `minSponsorScore` (type: `integer`):

Optional 0 to 100. Keep only employers at or above this score.

## `fiscalYear` (type: `integer`):

Optional federal fiscal year, for example 2025. Leave empty with the quarter for the newest available file.

## `quarter` (type: `integer`):

Optional fiscal quarter 1 to 4. Leave empty for the newest file of the chosen year.

## `sourceUrl` (type: `string`):

Optional advanced setting: a direct https link to a DOL LCA disclosure .xlsx file.

## `maxItems` (type: `integer`):

Stop after this many employers, highest sponsor score first.

## Actor input object example

```json
{
  "minFilings": 5,
  "minSponsorScore": 0,
  "maxItems": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "minFilings": 5,
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("transparent_meteorite/h1b-lca-sponsor-employers").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "minFilings": 5,
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("transparent_meteorite/h1b-lca-sponsor-employers").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "minFilings": 5,
  "maxItems": 100
}' |
apify call transparent_meteorite/h1b-lca-sponsor-employers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,transparent_meteorite/h1b-lca-sponsor-employers"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pWZAW5nHaiG5seS41/builds/20HXaQcmkX1fXsukN/openapi.json
