H-1B Visa Salary Disclosures Scraper (LCA Wages) avatar

H-1B Visa Salary Disclosures Scraper (LCA Wages)

Pricing

from $12.48 / 1,000 results

Go to Apify Store
H-1B Visa Salary Disclosures Scraper (LCA Wages)

H-1B Visa Salary Disclosures Scraper (LCA Wages)

Scrape US H-1B / LCA visa salary disclosures from public DOL filings. Get employer, job title, base salary (USD), city, state and dates. Filter by employer, job title, city, year and min salary. Export to JSON, CSV or Excel.

Pricing

from $12.48 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

H-1B Visa Salary Disclosures Scraper

H-1B Visa Salary Disclosures Scraper

Here is one real result, with every field the actor returns:

{
"employer": "GOOGLE LLC",
"jobTitle": "ACCESSIBILITY ANALYST",
"baseSalary": "105,000",
"baseSalaryUsd": 105000,
"location": "MOUNTAIN VIEW, CA",
"city": "MOUNTAIN VIEW",
"state": "CA",
"submitDate": "2024-01-08",
"startDate": "2024-01-25",
"year": 2024,
"caseNumber": "I-200-24008-624300",
"salaryTrend": [
{ "year": 2023, "count": 5000, "medianSalaryUsd": 151000, "minSalaryUsd": 72000, "maxSalaryUsd": 419000 },
{ "year": 2022, "count": 5000, "medianSalaryUsd": 144000, "minSalaryUsd": 54517, "maxSalaryUsd": 395000 },
{ "year": 2021, "count": 5000, "medianSalaryUsd": 140000, "minSalaryUsd": 66518, "maxSalaryUsd": 398000 }
],
"standardizedRole": "Accessibility Analyst",
"seniorityLevel": "Mid",
"jobFamily": "User Experience",
"salaryBand": "Market",
"observedAt": "2026-08-19T22:24:43.911Z",
"error": null
}

The most complete H-1B / LCA salary disclosure scraper available. It returns every field the public filing exposes (employer, job title, base salary, work location, submit and start dates), plus derived fields (numeric annualized baseSalaryUsd, split city and state, ISO dates, year, DOL caseNumber), and gives you five filters (employer, job title, city, year, minimum salary) to target exactly the disclosures you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Platform Coverage Output Billing

Table of contents

What it does

US employers that sponsor H-1B workers must file a Labor Condition Application (LCA) with the Department of Labor that discloses the offered wage. This actor extracts those public salary disclosures: for any employer, job title, city or year you get the employer name, job title, base salary, work location and the submit and start dates.

On top of the raw fields it adds analytics-ready derived data: a numeric annualized salary (baseSalaryUsd), the location split into city and state, ISO-formatted dates, the filing year and the DOL caseNumber. Two optional paid add-ons attach a per-employer multi-year salary trend and AI role normalization.

Quickstart

Search a company for a given year:

{
"employer": "Google",
"year": "2024",
"maxResults": 100
}

Filter to senior compensation only, across all years, for a role in one city:

{
"jobTitle": "Software Engineer",
"city": "New York",
"year": "All Years",
"minSalary": 200000,
"maxResults": 250
}

Input reference

NameTypeRequiredDescriptionExample
employerstringone of employer / jobTitle / cityEmployer / company name to search."Google"
jobTitlestringone of employer / jobTitle / cityJob title to search."Data Scientist"
citystringone of employer / jobTitle / cityWork-location city to filter by."Mountain View"
yearstringnoFiling year, or "All Years". Data from 2013 onward. Default "2024"."2024"
minSalaryintegernoOnly return disclosures with annualized base salary at or above this (USD).200000
maxResultsintegernoMax records to return. Default 100. Free accounts capped at 10.100
multiYearHistorybooleannoPaid add-on. Attach a per-employer multi-year salary trend. Default false.true
aiRoleNormalizationbooleannoPaid add-on. AI-normalize each job title. Default false.true
proxyConfigurationobjectnoOptional proxy. Datacenter works; use Apify RESIDENTIAL (US) if rate limited.{ "useApifyProxy": true }

If you leave employer, job title and city all blank, a year is required and the run is hard-capped to keep it bounded.

Output reference

NameTypeDescription
employerstringEmployer / sponsoring company.
jobTitlestringJob title on the filing.
baseSalarystringBase salary as shown on the page.
baseSalaryUsdnumberAnnualized base salary, numeric (USD).
locationstringWork location as shown (city, state).
citystringWork-location city (derived).
statestringWork-location state, 2-letter (derived).
submitDatestringLCA submit date, ISO YYYY-MM-DD.
startDatestringEmployment start date, ISO YYYY-MM-DD.
yearnumberFiling year (derived).
caseNumberstringDOL case number from the disclosure link.
salaryTrendarrayPer-year {year, count, medianSalaryUsd, minSalaryUsd, maxSalaryUsd} (multi_year_history add-on; null otherwise).
standardizedRolestringAI standardized role (ai_role_normalization add-on; null otherwise).
seniorityLevelstringAI seniority level (ai_role_normalization add-on).
jobFamilystringAI job family (ai_role_normalization add-on).
salaryBandstringAI salary band (ai_role_normalization add-on).
observedAtstringScrape timestamp, ISO.
errorstringError message, if any (null on success).

Example output record

{
"employer": "GOOGLE LLC",
"jobTitle": "ACCESSIBILITY ANALYST",
"baseSalary": "123,000",
"baseSalaryUsd": 123000,
"location": "AUSTIN, TX",
"city": "AUSTIN",
"state": "TX",
"submitDate": "2024-09-30",
"startDate": "2025-03-28",
"year": 2024,
"caseNumber": "I-200-24275-375561",
"salaryTrend": null,
"standardizedRole": null,
"seniorityLevel": null,
"jobFamily": null,
"salaryBand": null,
"observedAt": "2026-08-19T22:24:07.020Z",
"error": null
}

Run via API and CLI

Start a run with the Apify API:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~h1b-salary-disclosures-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "employer": "Google", "year": "2024", "maxResults": 100 }'

Or with the Apify CLI:

apify call scrapers_lat/h1b-salary-disclosures-scraper \
--input '{ "employer": "Google", "year": "2024", "maxResults": 100 }'

Fetch results

Pull the dataset items once the run finishes:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=json"

Swap format=json for csv or xlsx to export to CSV or Excel.

Billing and limits

This actor is pay per result. You are billed only for records actually returned, and never on failure.

EventPrice (USD)When it charges
result$0.012Per salary disclosure record returned.
multi_year_history$0.008Once per employer query, only when a non-empty multi-year salary trend is produced (extra fetches for the prior 3 years). Opt-in via multiYearHistory.
ai_role_normalization$0.012Per record, only when the AI returns usable role normalization. Opt-in via aiRoleNormalization.
  • Free Apify accounts are capped at 10 billable results per run, and the two paid add-ons are disabled for free accounts.
  • Both add-ons are opt-in and off by default. They charge only on genuine success (a real trend, or usable AI output).
  • A spend guard stops emitting and charging once your configured maxTotalChargeUsd limit is reached, so you never receive data beyond what you pay for.
  • Errors are written as a non-billable row and are never charged.

Use cases

  • Salary benchmarking: compare offered wages for a role across employers, cities and years.
  • Compensation intelligence: build pay bands from real disclosed base salaries with the numeric baseSalaryUsd field and the multi-year trend add-on.
  • Immigration and visa research: track H-1B / LCA sponsorship activity by company, role and location.
  • Recruiting leads: find employers actively sponsoring specific roles and the salaries they disclose.
  • Pay-transparency and market research: analyze wage distributions, medians and ranges across the US labor market.

FAQ and troubleshooting

Which years are available? 2013 through the current year, plus "All Years".

Do I have to pass an employer? No. You can search by job title or city instead. If all three are blank, set a year and the run is hard-capped.

Why is salaryTrend null? The multi-year trend is a paid opt-in add-on (multiYearHistory), requires an employer query, and is disabled for free accounts.

Why are the AI fields null? AI role normalization is a paid opt-in add-on (aiRoleNormalization), disabled for free accounts, and only populates when the model returns usable output.

I hit rate limiting. Set proxyConfiguration to Apify RESIDENTIAL in the US and retry.

More scrapers at scrapers.lat

Explore the full catalog of company registry, compliance, finance and lead-generation scrapers at scrapers.lat.